From 8a255d3b0d5443b2896d4d07ce1c47a71b9f2552 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 3 Jan 2020 21:21:36 +1100 Subject: [PATCH] Fix duplicate material assignment bug on import --- src/ifcblenderexport/blenderbim/import_ifc.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ifcblenderexport/blenderbim/import_ifc.py b/src/ifcblenderexport/blenderbim/import_ifc.py index 780772cd99..491b6588ec 100644 --- a/src/ifcblenderexport/blenderbim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/import_ifc.py @@ -29,6 +29,9 @@ class MaterialCreator(): self.mesh = mesh if not element.Representation: return + if self.ifc_import_settings.should_treat_styled_item_as_material \ + and self.mesh.name in self.parsed_meshes: + return for item in element.Representation.Representations[0].Items: if item.is_a('IfcMappedItem'): item = item.MappingSource.MappedRepresentation.Items[0] @@ -56,7 +59,6 @@ class MaterialCreator(): # them as reusable materials makes things much more # efficient in Blender. if self.mesh.name not in self.parsed_meshes: - self.parsed_meshes.append(self.mesh.name) self.assign_material_to_mesh(self.materials[material_name]) else: # Proper behaviour @@ -118,6 +120,7 @@ class MaterialCreator(): material.BIMMaterialProperties.name = external_style.Name def assign_material_to_mesh(self, material, is_styled_item=False): + self.parsed_meshes.append(self.mesh.name) self.mesh.materials.append(material) if is_styled_item: self.object.material_slots[0].link = 'OBJECT'