From 32899ebffbb1cfc9ff3e2325dd66a05c50b73483 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 8 Oct 2024 15:45:03 +1100 Subject: [PATCH] Fix #5543. Updating a representation reloads the representation. --- src/bonsai/bonsai/bim/module/geometry/operator.py | 1 + src/bonsai/bonsai/bim/module/geometry/prop.py | 4 ++++ src/bonsai/bonsai/bim/module/model/opening.py | 2 ++ 3 files changed, 7 insertions(+) diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index 1069e445b2..410f9f718c 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -410,6 +410,7 @@ class UpdateRepresentation(bpy.types.Operator, tool.Ifc.Operator): continue self.update_obj_mesh_representation(context, obj) tool.Ifc.finish_edit(obj) + tool.Geometry.reload_representation(objs) return {"FINISHED"} def update_obj_mesh_representation(self, context: bpy.types.Context, obj: bpy.types.Object) -> None: diff --git a/src/bonsai/bonsai/bim/module/geometry/prop.py b/src/bonsai/bonsai/bim/module/geometry/prop.py index f32338aa78..382c5ec5a7 100644 --- a/src/bonsai/bonsai/bim/module/geometry/prop.py +++ b/src/bonsai/bonsai/bim/module/geometry/prop.py @@ -68,6 +68,10 @@ def update_representation_obj(self, context): if data and not data.users: bpy.data.meshes.remove(data) self.item_objs.clear() + if not self.representation_obj and self.mode != "OBJECT": + self.is_changing_mode = True + self.mode = "OBJECT" + self.is_changing_mode = False def get_mode(self, context): diff --git a/src/bonsai/bonsai/bim/module/model/opening.py b/src/bonsai/bonsai/bim/module/model/opening.py index 72dc70b693..abde735551 100644 --- a/src/bonsai/bonsai/bim/module/model/opening.py +++ b/src/bonsai/bonsai/bim/module/model/opening.py @@ -834,6 +834,8 @@ class EditOpenings(Operator, tool.Ifc.Operator): self.get_all_building_objects_of_similar_openings(opening) ) # NB this has nothing to do with clone similar_opening tool.Ifc.unlink(element=opening) + if bpy.context.scene.BIMGeometryProperties.representation_obj == opening_obj: + bpy.context.scene.BIMGeometryProperties.representation_obj = None bpy.data.objects.remove(opening_obj) tool.Model.reload_body_representation(building_objs)