FEM: Compare material using all properies and handle non-local materials

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt 2015-04-11 12:18:13 +01:00 committed by wmayer
parent c091b87459
commit 75fcae04b9

View File

@ -134,16 +134,29 @@ class _MechanicalMaterialTaskPanel:
QtCore.QObject.connect(self.form.cb_materials, QtCore.SIGNAL("activated(int)"), self.chooseMat)
self.previous_material = self.obj.Material
self.import_materials()
matmap = self.obj.Material
if 'General_name' in matmap:
material_name = matmap['General_name']
new_index = self.form.cb_materials.findText(material_name)
if new_index != -1:
self.chooseMat(new_index)
previous_mat_path = self.get_material_path(self.previous_material)
if not previous_mat_path:
print "Previously used material cannot be found in material directories. Using transient material."
self.add_transient_material(self.previous_material)
material_name = self.get_material_name(self.previous_material)
index = self.form.cb_materials.findData(material_name)
self.chooseMat(index)
else:
print "Cannot find previously used material \'{}\' - setting to \'None\'".format(material_name)
i = self.form.cb_materials.findText('None')
self.chooseMat(i)
index = self.form.cb_materials.findData(previous_mat_path)
self.chooseMat(index)
def get_material_name(self, material):
if 'General_name' in self.previous_material:
return self.previous_material['General_name']
else:
return 'None'
def get_material_path(self, material):
for a_mat in self.materials:
unmatched_items = set(self.materials[a_mat].items()) ^ set(material.items())
if len(unmatched_items) == 0:
return a_mat
return ""
def print_mat_data(self, matmap):
print 'material data:'
@ -193,6 +206,11 @@ class _MechanicalMaterialTaskPanel:
self.form.l_mat_description.setText(gen_mat_desc)
self.print_mat_data(self.obj.Material)
def add_transient_material(self, material):
material_name = self.get_material_name(material)
self.form.cb_materials.addItem(QtGui.QIcon(":/icons/help-browser.svg"), material_name, material_name)
self.materials[material_name] = material
def add_mat_dir(self, mat_dir, icon):
import glob
import os