From e1e4380fc738ac43ea74608f8da3a15e11cd9493 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 3 Feb 2023 21:27:25 +1100 Subject: [PATCH] Fix 3 bugs related to representations: * Bug when switching representations when active object not selected. * Bug when switching to a non MODEL_VIEW body representation would load the MODEL_VIEW one instead all the time. * Add support for plan body representations. --- src/blenderbim/blenderbim/bim/module/geometry/operator.py | 2 +- src/blenderbim/blenderbim/tool/geometry.py | 3 ++- .../ifcopenshell/api/geometry/add_representation.py | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index 2c6f2aec23..a06540d42e 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -116,7 +116,7 @@ class SwitchRepresentation(bpy.types.Operator, Operator): def _execute(self, context): target = tool.Ifc.get().by_id(self.ifc_definition_id).ContextOfItems is_subcontext = target.is_a("IfcGeometricRepresentationSubContext") - for obj in context.selected_objects: + for obj in set(context.selected_objects + [context.active_object]): element = tool.Ifc.get_entity(obj) if not element: continue diff --git a/src/blenderbim/blenderbim/tool/geometry.py b/src/blenderbim/blenderbim/tool/geometry.py index 22ea707921..231295fb47 100644 --- a/src/blenderbim/blenderbim/tool/geometry.py +++ b/src/blenderbim/blenderbim/tool/geometry.py @@ -174,7 +174,8 @@ class Geometry(blenderbim.core.tool.Geometry): settings = ifcopenshell.geom.settings() settings.set(settings.WELD_VERTICES, True) - if representation.ContextOfItems.ContextIdentifier == "Body": + context = representation.ContextOfItems + if context.ContextIdentifier == "Body" and context.TargetView == "MODEL_VIEW": if element.is_a("IfcTypeProduct"): shape = ifcopenshell.geom.create_shape(settings, representation) else: diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py index d7a357cc69..a136a43ae8 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py @@ -153,7 +153,7 @@ class Usecase: elif self.settings["context"].ContextIdentifier == "Axis": return self.create_curve2d_representation() elif self.settings["context"].ContextIdentifier == "Body": - pass + return self.create_annotation2d_representation() elif self.settings["context"].ContextIdentifier == "Box": pass elif self.settings["context"].ContextIdentifier == "Clearance":