FEM: Change default behaviour of ConfigParser used for materials
ConfigParser changes option capital letters in keys to small letters. That commit changes it to generate verbatim keys as read from FCMat files. Also Section names are no longer used to generate material dictionary. Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
parent
9b2f2b15bc
commit
f96f319986
|
@ -431,7 +431,7 @@ class _JobControlTaskPanel:
|
||||||
inpfile.write('\n\n***********************************************************\n')
|
inpfile.write('\n\n***********************************************************\n')
|
||||||
inpfile.write('** element sets for materials\n')
|
inpfile.write('** element sets for materials\n')
|
||||||
for MaterialObject in self.MaterialObjects:
|
for MaterialObject in self.MaterialObjects:
|
||||||
print MaterialObject['Object'].Name, ': ', MaterialObject['Object'].Material['General_name']
|
print MaterialObject['Object'].Name, ': ', MaterialObject['Object'].Material['Name']
|
||||||
inpfile.write('*ELSET,ELSET=' + MaterialObject['Object'].Name + '\n')
|
inpfile.write('*ELSET,ELSET=' + MaterialObject['Object'].Name + '\n')
|
||||||
if len(self.MaterialObjects) == 1:
|
if len(self.MaterialObjects) == 1:
|
||||||
inpfile.write('Eall\n')
|
inpfile.write('Eall\n')
|
||||||
|
@ -501,26 +501,26 @@ class _JobControlTaskPanel:
|
||||||
inpfile.write('** youngs modulus unit is MPa = N/mm2\n')
|
inpfile.write('** youngs modulus unit is MPa = N/mm2\n')
|
||||||
for MaterialObject in self.MaterialObjects:
|
for MaterialObject in self.MaterialObjects:
|
||||||
# get material properties
|
# get material properties
|
||||||
YM = FreeCAD.Units.Quantity(MaterialObject['Object'].Material['Mechanical_youngsmodulus'])
|
YM = FreeCAD.Units.Quantity(MaterialObject['Object'].Material['YoungsModulus'])
|
||||||
if YM.Unit.Type == '':
|
if YM.Unit.Type == '':
|
||||||
print 'Material "Mechanical_youngsmodulus" has no Unit, asuming kPa!'
|
print 'Material "YoungsModulus" has no Unit, asuming kPa!'
|
||||||
YM = FreeCAD.Units.Quantity(YM.Value, FreeCAD.Units.Unit('Pa'))
|
YM = FreeCAD.Units.Quantity(YM.Value, FreeCAD.Units.Unit('Pa'))
|
||||||
else:
|
else:
|
||||||
print 'YM unit: ', YM.Unit.Type
|
print 'YM unit: ', YM.Unit.Type
|
||||||
print 'YM = ', YM
|
print 'YM = ', YM
|
||||||
PR = float(MaterialObject['Object'].Material['FEM_poissonratio'])
|
PR = float(MaterialObject['Object'].Material['PoissonRatio'])
|
||||||
print 'PR = ', PR
|
print 'PR = ', PR
|
||||||
# write material properties
|
# write material properties
|
||||||
inpfile.write('*MATERIAL, NAME=' + MaterialObject['Object'].Material['General_name'] + '\n')
|
inpfile.write('*MATERIAL, NAME=' + MaterialObject['Object'].Material['Name'] + '\n')
|
||||||
inpfile.write('*ELASTIC \n')
|
inpfile.write('*ELASTIC \n')
|
||||||
inpfile.write('{0:.3f}, '.format(YM.Value * 1E-3))
|
inpfile.write('{0:.3f}, '.format(YM.Value * 1E-3))
|
||||||
inpfile.write('{0:.3f}\n'.format(PR))
|
inpfile.write('{0:.3f}\n'.format(PR))
|
||||||
# write element properties
|
# write element properties
|
||||||
if len(self.MaterialObjects) == 1:
|
if len(self.MaterialObjects) == 1:
|
||||||
inpfile.write('*SOLID SECTION, ELSET=' + MaterialObject['Object'].Name + ', MATERIAL=' + MaterialObject['Object'].Material['General_name'] + '\n\n')
|
inpfile.write('*SOLID SECTION, ELSET=' + MaterialObject['Object'].Name + ', MATERIAL=' + MaterialObject['Object'].Material['Name'] + '\n\n')
|
||||||
else:
|
else:
|
||||||
if MaterialObject['Object'].Name == 'MechanicalMaterial':
|
if MaterialObject['Object'].Name == 'MechanicalMaterial':
|
||||||
inpfile.write('*SOLID SECTION, ELSET=' + MaterialObject['Object'].Name + ', MATERIAL=' + MaterialObject['Object'].Material['General_name'] + '\n\n')
|
inpfile.write('*SOLID SECTION, ELSET=' + MaterialObject['Object'].Name + ', MATERIAL=' + MaterialObject['Object'].Material['Name'] + '\n\n')
|
||||||
|
|
||||||
# write step beginn
|
# write step beginn
|
||||||
inpfile.write('\n\n\n\n***********************************************************\n')
|
inpfile.write('\n\n\n\n***********************************************************\n')
|
||||||
|
|
|
@ -172,18 +172,18 @@ class _MechanicalMaterialTaskPanel:
|
||||||
|
|
||||||
def ym_changed(self, value):
|
def ym_changed(self, value):
|
||||||
import Units
|
import Units
|
||||||
old_ym = Units.Quantity(self.obj.Material['Mechanical_youngsmodulus'])
|
old_ym = Units.Quantity(self.obj.Material['YoungsModulus'])
|
||||||
if old_ym != value:
|
if old_ym != value:
|
||||||
material = self.obj.Material
|
material = self.obj.Material
|
||||||
material['Mechanical_youngsmodulus'] = unicode(value)
|
material['YoungsModulus'] = unicode(value)
|
||||||
self.obj.Material = material
|
self.obj.Material = material
|
||||||
|
|
||||||
def pr_changed(self, value):
|
def pr_changed(self, value):
|
||||||
import Units
|
import Units
|
||||||
old_pr = Units.Quantity(self.obj.Material['FEM_poissonratio'])
|
old_pr = Units.Quantity(self.obj.Material['PoissonRatio'])
|
||||||
if old_pr != value:
|
if old_pr != value:
|
||||||
material = self.obj.Material
|
material = self.obj.Material
|
||||||
material['FEM_poissonratio'] = unicode(value)
|
material['PoissonRatio'] = unicode(value)
|
||||||
self.obj.Material = material
|
self.obj.Material = material
|
||||||
|
|
||||||
def choose_material(self, index):
|
def choose_material(self, index):
|
||||||
|
@ -215,16 +215,16 @@ class _MechanicalMaterialTaskPanel:
|
||||||
def print_mat_data(self, matmap):
|
def print_mat_data(self, matmap):
|
||||||
print 'Material data:'
|
print 'Material data:'
|
||||||
print ' Name = {}'.format(self.get_material_name(matmap))
|
print ' Name = {}'.format(self.get_material_name(matmap))
|
||||||
if 'Mechanical_youngsmodulus' in matmap:
|
if 'YoungsModulus' in matmap:
|
||||||
print ' YM = ', matmap['Mechanical_youngsmodulus']
|
print ' YM = ', matmap['YoungsModulus']
|
||||||
if 'FEM_poissonratio' in matmap:
|
if 'PoissonRatio' in matmap:
|
||||||
print ' PR = ', matmap['FEM_poissonratio']
|
print ' PR = ', matmap['PoissonRatio']
|
||||||
|
|
||||||
def set_mat_params_in_combo_box(self, matmap):
|
def set_mat_params_in_combo_box(self, matmap):
|
||||||
if 'Mechanical_youngsmodulus' in matmap:
|
if 'YoungsModulus' in matmap:
|
||||||
self.form.input_fd_young_modulus.setText(matmap['Mechanical_youngsmodulus'])
|
self.form.input_fd_young_modulus.setText(matmap['YoungsModulus'])
|
||||||
if 'FEM_poissonratio' in matmap:
|
if 'PoissonRatio' in matmap:
|
||||||
self.form.spinBox_poisson_ratio.setValue(float(matmap['FEM_poissonratio']))
|
self.form.spinBox_poisson_ratio.setValue(float(matmap['PoissonRatio']))
|
||||||
|
|
||||||
def add_transient_material(self, material):
|
def add_transient_material(self, material):
|
||||||
material_name = self.get_material_name(material)
|
material_name = self.get_material_name(material)
|
||||||
|
|
|
@ -57,12 +57,13 @@ def importFCMat(fileName):
|
||||||
"Read a FCMat file into a dictionary"
|
"Read a FCMat file into a dictionary"
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
Config = ConfigParser.ConfigParser()
|
Config = ConfigParser.ConfigParser()
|
||||||
|
Config.optionxform = str
|
||||||
Config.read(fileName)
|
Config.read(fileName)
|
||||||
dict1 = {}
|
dict1 = {}
|
||||||
for section in Config.sections():
|
for section in Config.sections():
|
||||||
options = Config.options(section)
|
options = Config.options(section)
|
||||||
for option in options:
|
for option in options:
|
||||||
dict1[section+'_'+option] = Config.get(section, option)
|
dict1[option] = Config.get(section, option)
|
||||||
|
|
||||||
return dict1
|
return dict1
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user