From f96f31998619ec2925185b123743a6e8cd5e3567 Mon Sep 17 00:00:00 2001 From: Przemo Firszt Date: Tue, 21 Apr 2015 19:49:49 +0100 Subject: [PATCH] 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 --- src/Mod/Fem/MechanicalAnalysis.py | 14 +++++++------- src/Mod/Fem/MechanicalMaterial.py | 24 ++++++++++++------------ src/Mod/Material/Material.py | 3 ++- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/Mod/Fem/MechanicalAnalysis.py b/src/Mod/Fem/MechanicalAnalysis.py index f79ec416e..0b57ddee9 100644 --- a/src/Mod/Fem/MechanicalAnalysis.py +++ b/src/Mod/Fem/MechanicalAnalysis.py @@ -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') diff --git a/src/Mod/Fem/MechanicalMaterial.py b/src/Mod/Fem/MechanicalMaterial.py index cbfc6a0d2..a2503a03f 100644 --- a/src/Mod/Fem/MechanicalMaterial.py +++ b/src/Mod/Fem/MechanicalMaterial.py @@ -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) diff --git a/src/Mod/Material/Material.py b/src/Mod/Material/Material.py index 383469fb2..19100d0f3 100644 --- a/src/Mod/Material/Material.py +++ b/src/Mod/Material/Material.py @@ -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