Material: move materal property list into material module and use this for material editor ui and writing of mat files
This commit is contained in:
@@ -95,6 +95,34 @@ def exportFCMat(fileName, matDict):
|
||||
Config.write(configfile)
|
||||
|
||||
|
||||
def getMaterialAttributeStructure(withSpaces=None):
|
||||
# material properties
|
||||
# are there any more resources in FreeCAD source code where known material properties are defined exept the material cards itself?
|
||||
# we should not have two of these list ...
|
||||
# withSpaces is used by the material editor ui, without spaces is used to save a material file
|
||||
if withSpaces:
|
||||
material_property_groups = (
|
||||
('Meta', ('Card Name', 'Author And License', 'Source')),
|
||||
('General', ('Name', 'Father', 'Description', 'Denisty', 'Vendor', 'ProductURL', 'SpecificPrice')),
|
||||
('Mechanical', ('Youngs Modulus', 'Poisson Ratio', 'Ultimate Tensile Strength', 'Compressive Strength', 'Elasticity', 'Fracture Toughness')),
|
||||
('Architectural', ('Execution Instructions', 'Fire Resistance Class', 'Standard Code', 'Thermal Conductivity', 'Sound Transmission Class', 'Color', 'Finish', 'Units Per Quantity', 'Environmental Efficiency Class')),
|
||||
('Rendering', ('Diffuse Color', 'Ambient Color', 'Specular Color', 'Shininess', 'Emissive Color', 'Transparency', 'Vertex Shader', 'Fragment Shader', 'Texture Path', 'Texture Scaling')),
|
||||
('Vector rendering', ('View Color', 'Father', 'View Linewidth', 'Section Color', 'Section Fill Pattern', 'Section Linewidth')),
|
||||
('User defined', ())
|
||||
)
|
||||
else:
|
||||
material_property_groups = (
|
||||
("Meta", ("CardName", "AuthorAndLicense", "Source")),
|
||||
("General", ("Name", "Father", "Description", "Density", "Vendor", "ProductURL", "SpecificPrice")),
|
||||
("Mechanical", ("YoungsModulus", "PoissonRatio", "UltimateTensileStrength", "CompressiveStrength", "Elasticity", "FractureToughness")),
|
||||
("Architectural", ("Model", "ExecutionInstructions", "FireResistanceClass", "StandardCode", "ThermalConductivity", "SoundTransmissionClass", "Color", "Finish", "UnitsPerQuantity", "EnvironmentalEfficiencyClass")),
|
||||
("Rendering", ("DiffuseColor", "AmbientColor", "SpecularColor", "Shininess", "EmissiveColor", "Transparency", "VertexShader", "FragmentShader", "TexturePath", "TextureScaling")),
|
||||
("Vector rendering", ("ViewColor", "ViewFillPattern", "SectionFillPattern", "ViewLinewidth", "SectionLinewidth")),
|
||||
("User defined", ())
|
||||
)
|
||||
return material_property_groups
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
import getopt
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
from __future__ import print_function
|
||||
import FreeCAD
|
||||
import FreeCADGui
|
||||
from Material import getMaterialAttributeStructure
|
||||
import os
|
||||
from PySide import QtCore, QtGui
|
||||
# from PySide import QtUiTools, QtSvg
|
||||
@@ -70,7 +71,7 @@ class MaterialEditor:
|
||||
QtCore.QObject.connect(self.widget.ButtonSave, QtCore.SIGNAL("clicked()"), self.savefile)
|
||||
|
||||
# add material properies (the keys) to the editor
|
||||
for group in material_properties:
|
||||
for group in getMaterialAttributeStructure(True): # get the mat file structure from material module, use Spaces for better ui
|
||||
# print(group)
|
||||
self.addPropertiesToGroup(group)
|
||||
|
||||
@@ -359,16 +360,3 @@ def editMaterial(material):
|
||||
return editor.getDict()
|
||||
else:
|
||||
return material
|
||||
|
||||
|
||||
# material properties
|
||||
# are there any more resources in FreeCAD source code where known material properties are defined exept the material cards itself?
|
||||
material_properties = (
|
||||
('Meta information', ['Card Name', 'Author And License', 'Source']),
|
||||
('General', ['Name', 'Father', 'Description', 'Denisty', 'Vendor', 'ProductURL', 'SpecificPrice']),
|
||||
('Mechanical', ['Youngs Modulus', 'Poisson Ratio', 'Ultimate Tensile Strength', 'Compressive Strength', 'Elasticity', 'Fracture Toughness']),
|
||||
('Architectural', ['Execution Instructions', 'Fire Resistance Class', 'Standard Code', 'Thermal Conductivity', 'Sound Transmission Class', 'Color', 'Finish', 'Units Per Quantity', 'Environmental Efficiency Class']),
|
||||
('Rendering', ['Diffuse Color', 'Ambient Color', 'Specular Color', 'Shininess', 'Emissive Color', 'Transparency', 'Vertex Shader', 'Fragment Shader', 'Texture Path', 'Texture Scaling']),
|
||||
('Vector rendering', ['View Color', 'Father', 'View Linewidth', 'Section Color', 'Section Fill Pattern', 'Section Linewidth']),
|
||||
('User defined', [])
|
||||
)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
import FreeCAD
|
||||
# import Material
|
||||
from Material import getMaterialAttributeStructure
|
||||
import os
|
||||
|
||||
|
||||
@@ -31,19 +32,6 @@ __author__ = "Juergen Riegel"
|
||||
__url__ = "http://www.freecadweb.org"
|
||||
|
||||
|
||||
# file structure - this affects how files are saved
|
||||
FileStructure = [
|
||||
["Meta", ["CardName", "AuthorAndLicense", "Source"]],
|
||||
["General", ["Name", "Father", "Description", "Density", "Vendor", "ProductURL", "SpecificPrice"]],
|
||||
["Mechanical", ["YoungsModulus", "UltimateTensileStrength", "CompressiveStrength", "Elasticity", "FractureToughness"]],
|
||||
["FEM", ["PoissonRatio"]],
|
||||
["Architectural", ["Model", "ExecutionInstructions", "FireResistanceClass", "StandardCode", "ThermalConductivity", "SoundTransmissionClass", "Color", "Finish", "UnitsPerQuantity", "EnvironmentalEfficiencyClass"]],
|
||||
["Rendering", ["DiffuseColor", "AmbientColor", "SpecularColor", "Shininess", "EmissiveColor", "Transparency", "VertexShader", "FragmentShader", "TexturePath", "TextureScaling"]],
|
||||
["Vector rendering", ["ViewColor", "ViewFillPattern", "SectionFillPattern", "ViewLinewidth", "SectionLinewidth"]],
|
||||
["User defined", []]
|
||||
]
|
||||
|
||||
|
||||
# to distinguish python built-in open function from the one declared below
|
||||
if open.__module__ == '__builtin__':
|
||||
pythonopen = open
|
||||
@@ -114,7 +102,7 @@ def write(filename, dictionary):
|
||||
"writes the given dictionary to the given file"
|
||||
# sort the data into sections
|
||||
contents = []
|
||||
for key in FileStructure:
|
||||
for key in getMaterialAttributeStructure(): # get the mat file structure from material module
|
||||
contents.append({"keyname": key[0]})
|
||||
if key[0] == "Meta":
|
||||
header = contents[-1]
|
||||
|
||||
Reference in New Issue
Block a user