From a82b0f30b0de1cf93cee440f0e9f713f3843e372 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 16 Feb 2024 16:01:09 +0500 Subject: [PATCH] fix errors getting layer assignments in ifc2x3 #4330 --- src/blenderbim/blenderbim/tool/geometry.py | 8 +++++++- .../ifcopenshell/api/geometry/remove_representation.py | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/blenderbim/blenderbim/tool/geometry.py b/src/blenderbim/blenderbim/tool/geometry.py index 7975c5fa75..0f9a1a7118 100644 --- a/src/blenderbim/blenderbim/tool/geometry.py +++ b/src/blenderbim/blenderbim/tool/geometry.py @@ -745,7 +745,13 @@ class Geometry(blenderbim.core.tool.Geometry): consider_inverses = [] styled_item, colour, texture, layer = None, None, None, None [consider_inverses.append(styled_item := t) for t in representation_item.StyledByItem] - [consider_inverses.append(layer := t) for t in representation_item.LayerAssignment] + # IFC2X3 is using LayerAssignments + for t in ( + representation_item.LayerAssignment + if hasattr(representation_item, "LayerAssignment") + else representation_item.LayerAssignments + ): + consider_inverses.append(layer := t) # IfcTessellatedFaceSet [consider_inverses.append(colour := t) for t in getattr(representation_item, "HasColours", [])] [consider_inverses.append(texture := t) for t in getattr(representation_item, "HasTextures", [])] diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/remove_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/remove_representation.py index b43853f65c..9aef069f0d 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/remove_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/remove_representation.py @@ -47,7 +47,13 @@ class Usecase: for subelement in self.file.traverse(self.settings["representation"]): if subelement.is_a("IfcRepresentationItem"): [styled_items.add(s) for s in subelement.StyledByItem or []] - [presentation_layer_assignments.add(s) for s in subelement.LayerAssignment] + # IFC2X3 is using LayerAssignments + for s in ( + subelement.LayerAssignment + if hasattr(subelement, "LayerAssignment") + else subelement.LayerAssignments + ): + presentation_layer_assignments.add(s) # IfcTessellatedFaceSet inverses [textures.add(t) for t in getattr(subelement, "HasTextures", []) or []] [colours.add(t) for t in getattr(subelement, "HasColours", []) or []]