mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-26 18:21:59 +00:00
Fix bug where a material wouldn't get assigned for multiple mapped representations
This commit is contained in:
@@ -51,12 +51,13 @@ class MaterialCreator:
|
|||||||
hasattr(element, "RepresentationMaps") and not element.RepresentationMaps
|
hasattr(element, "RepresentationMaps") and not element.RepresentationMaps
|
||||||
):
|
):
|
||||||
return
|
return
|
||||||
if self.mesh and self.mesh.name in self.parsed_meshes:
|
|
||||||
return
|
|
||||||
self.parse_material(element)
|
self.parse_material(element)
|
||||||
if self.mesh:
|
if not self.mesh:
|
||||||
self.parsed_meshes.append(self.mesh.name)
|
return
|
||||||
if self.mesh and self.parse_representations(element):
|
if self.mesh.name in self.parsed_meshes:
|
||||||
|
return
|
||||||
|
self.parsed_meshes.append(self.mesh.name)
|
||||||
|
if self.parse_representations(element):
|
||||||
self.assign_material_slots_to_faces(obj, self.mesh)
|
self.assign_material_slots_to_faces(obj, self.mesh)
|
||||||
|
|
||||||
def parse_representations(self, element):
|
def parse_representations(self, element):
|
||||||
@@ -927,7 +928,6 @@ class IfcImporter:
|
|||||||
|
|
||||||
self.ifc_import_settings.logger.info("Creating object %s", element)
|
self.ifc_import_settings.logger.info("Creating object %s", element)
|
||||||
|
|
||||||
is_fresh_mesh = False
|
|
||||||
if shape:
|
if shape:
|
||||||
# TODO: make names more meaningful
|
# TODO: make names more meaningful
|
||||||
mesh_name = f"mesh-{shape.geometry.id}"
|
mesh_name = f"mesh-{shape.geometry.id}"
|
||||||
@@ -938,7 +938,6 @@ class IfcImporter:
|
|||||||
if mesh is None:
|
if mesh is None:
|
||||||
mesh = self.create_mesh(element, shape)
|
mesh = self.create_mesh(element, shape)
|
||||||
self.meshes[mesh_name] = mesh
|
self.meshes[mesh_name] = mesh
|
||||||
is_fresh_mesh = True
|
|
||||||
else:
|
else:
|
||||||
mesh = None
|
mesh = None
|
||||||
|
|
||||||
@@ -951,8 +950,7 @@ class IfcImporter:
|
|||||||
)
|
)
|
||||||
mat.transpose()
|
mat.transpose()
|
||||||
obj.matrix_world = mat
|
obj.matrix_world = mat
|
||||||
if is_fresh_mesh:
|
self.material_creator.create(element, obj, mesh)
|
||||||
self.material_creator.create(element, obj, mesh)
|
|
||||||
elif hasattr(element, "ObjectPlacement"):
|
elif hasattr(element, "ObjectPlacement"):
|
||||||
obj.matrix_world = self.get_element_matrix(element)
|
obj.matrix_world = self.get_element_matrix(element)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user