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('** element sets for materials\n')
|
||||
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')
|
||||
if len(self.MaterialObjects) == 1:
|
||||
inpfile.write('Eall\n')
|
||||
|
@ -501,26 +501,26 @@ class _JobControlTaskPanel:
|
|||
inpfile.write('** youngs modulus unit is MPa = N/mm2\n')
|
||||
for MaterialObject in self.MaterialObjects:
|
||||
# get material properties
|
||||
YM = FreeCAD.Units.Quantity(MaterialObject['Object'].Material['Mechanical_youngsmodulus'])
|
||||
YM = FreeCAD.Units.Quantity(MaterialObject['Object'].Material['YoungsModulus'])
|
||||
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'))
|
||||
else:
|
||||
print 'YM unit: ', YM.Unit.Type
|
||||
print 'YM = ', YM
|
||||
PR = float(MaterialObject['Object'].Material['FEM_poissonratio'])
|
||||
PR = float(MaterialObject['Object'].Material['PoissonRatio'])
|
||||
print 'PR = ', PR
|
||||
# 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('{0:.3f}, '.format(YM.Value * 1E-3))
|
||||
inpfile.write('{0:.3f}\n'.format(PR))
|
||||
# write element properties
|
||||
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:
|
||||
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
|
||||
inpfile.write('\n\n\n\n***********************************************************\n')
|
||||
|
|
|
@ -172,18 +172,18 @@ class _MechanicalMaterialTaskPanel:
|
|||
|
||||
def ym_changed(self, value):
|
||||
import Units
|
||||
old_ym = Units.Quantity(self.obj.Material['Mechanical_youngsmodulus'])
|
||||
old_ym = Units.Quantity(self.obj.Material['YoungsModulus'])
|
||||
if old_ym != value:
|
||||
material = self.obj.Material
|
||||
material['Mechanical_youngsmodulus'] = unicode(value)
|
||||
material['YoungsModulus'] = unicode(value)
|
||||
self.obj.Material = material
|
||||
|
||||
def pr_changed(self, value):
|
||||
import Units
|
||||
old_pr = Units.Quantity(self.obj.Material['FEM_poissonratio'])
|
||||
old_pr = Units.Quantity(self.obj.Material['PoissonRatio'])
|
||||
if old_pr != value:
|
||||
material = self.obj.Material
|
||||
material['FEM_poissonratio'] = unicode(value)
|
||||
material['PoissonRatio'] = unicode(value)
|
||||
self.obj.Material = material
|
||||
|
||||
def choose_material(self, index):
|
||||
|
@ -215,16 +215,16 @@ class _MechanicalMaterialTaskPanel:
|
|||
def print_mat_data(self, matmap):
|
||||
print 'Material data:'
|
||||
print ' Name = {}'.format(self.get_material_name(matmap))
|
||||
if 'Mechanical_youngsmodulus' in matmap:
|
||||
print ' YM = ', matmap['Mechanical_youngsmodulus']
|
||||
if 'FEM_poissonratio' in matmap:
|
||||
print ' PR = ', matmap['FEM_poissonratio']
|
||||
if 'YoungsModulus' in matmap:
|
||||
print ' YM = ', matmap['YoungsModulus']
|
||||
if 'PoissonRatio' in matmap:
|
||||
print ' PR = ', matmap['PoissonRatio']
|
||||
|
||||
def set_mat_params_in_combo_box(self, matmap):
|
||||
if 'Mechanical_youngsmodulus' in matmap:
|
||||
self.form.input_fd_young_modulus.setText(matmap['Mechanical_youngsmodulus'])
|
||||
if 'FEM_poissonratio' in matmap:
|
||||
self.form.spinBox_poisson_ratio.setValue(float(matmap['FEM_poissonratio']))
|
||||
if 'YoungsModulus' in matmap:
|
||||
self.form.input_fd_young_modulus.setText(matmap['YoungsModulus'])
|
||||
if 'PoissonRatio' in matmap:
|
||||
self.form.spinBox_poisson_ratio.setValue(float(matmap['PoissonRatio']))
|
||||
|
||||
def add_transient_material(self, material):
|
||||
material_name = self.get_material_name(material)
|
||||
|
|
|
@ -57,12 +57,13 @@ def importFCMat(fileName):
|
|||
"Read a FCMat file into a dictionary"
|
||||
import ConfigParser
|
||||
Config = ConfigParser.ConfigParser()
|
||||
Config.optionxform = str
|
||||
Config.read(fileName)
|
||||
dict1 = {}
|
||||
for section in Config.sections():
|
||||
options = Config.options(section)
|
||||
for option in options:
|
||||
dict1[section+'_'+option] = Config.get(section, option)
|
||||
dict1[option] = Config.get(section, option)
|
||||
|
||||
return dict1
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user