From 6e0e19d69003d85bb5b45969306891ca5db688d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Tue, 11 Mar 2025 16:58:08 -0300 Subject: [PATCH] See #6130. Fix issue where aggregate mode where not being disabled. The issue was caused by deleting an object outside the aggregate while in aggregate mode. The selection for these objects are now disabled to prevent this issue --- src/bonsai/bonsai/bim/module/aggregate/prop.py | 1 + src/bonsai/bonsai/tool/aggregate.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/aggregate/prop.py b/src/bonsai/bonsai/bim/module/aggregate/prop.py index f49c0d3dc5..1d524b3645 100644 --- a/src/bonsai/bonsai/bim/module/aggregate/prop.py +++ b/src/bonsai/bonsai/bim/module/aggregate/prop.py @@ -102,6 +102,7 @@ class BIMObjectAggregateProperties(PropertyGroup): class Objects(bpy.types.PropertyGroup): obj: PointerProperty(type=bpy.types.Object) previous_display_type: bpy.props.StringProperty(default="TEXTURED") + previous_hide_select: bpy.props.BoolProperty(default=False) class BIMAggregateProperties(PropertyGroup): diff --git a/src/bonsai/bonsai/tool/aggregate.py b/src/bonsai/bonsai/tool/aggregate.py index 4ad7a95425..d3c0589cea 100644 --- a/src/bonsai/bonsai/tool/aggregate.py +++ b/src/bonsai/bonsai/tool/aggregate.py @@ -118,7 +118,9 @@ class Aggregate(bonsai.core.tool.Aggregate): not_editing_obj = props.not_editing_objects.add() not_editing_obj.obj = obj.original not_editing_obj.previous_display_type = obj.original.display_type + not_editing_obj.previous_hide_select = obj.original.hide_select obj.original.display_type = "WIRE" + obj.hide_select = True else: editing_obj = props.editing_objects.add() editing_obj.obj = obj.original @@ -132,13 +134,15 @@ class Aggregate(bonsai.core.tool.Aggregate): props = context.scene.BIMAggregateProperties for obj_prop in props.not_editing_objects: obj = obj_prop.obj + if not obj: + continue obj.original.display_type = obj_prop.previous_display_type + obj.hide_select = obj_prop.previous_hide_select element = tool.Ifc.get_entity(obj) if not element: continue parts = ifcopenshell.util.element.get_parts(tool.Ifc.get_entity(props.editing_aggregate)) - objs = [tool.Ifc.get_object(part) for part in parts] if context.space_data.local_view: bpy.ops.view3d.localview()