From 87bfd182d77316f32a3a97dfff65953a3e3315cb Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 22 Oct 2025 11:07:18 +1100 Subject: [PATCH] Always show edit UI even if you don't have a BIM Tool activated. --- .../bonsai/bim/module/model/__init__.py | 1 + .../bonsai/bim/module/model/workspace.py | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/__init__.py b/src/bonsai/bonsai/bim/module/model/__init__.py index fa9ce7cafa..e2051ee3d5 100644 --- a/src/bonsai/bonsai/bim/module/model/__init__.py +++ b/src/bonsai/bonsai/bim/module/model/__init__.py @@ -265,6 +265,7 @@ def register(): type=prop.BIMExternalParametricGeometryProperties ) + bpy.types.VIEW3D_HT_tool_header.prepend(workspace.workspace_settings) bpy.types.VIEW3D_MT_add.prepend(ui.add_menu) bpy.app.handlers.load_post.append(handler.load_post) diff --git a/src/bonsai/bonsai/bim/module/model/workspace.py b/src/bonsai/bonsai/bim/module/model/workspace.py index 0aa7f7113e..91865d62f1 100644 --- a/src/bonsai/bonsai/bim/module/model/workspace.py +++ b/src/bonsai/bonsai/bim/module/model/workspace.py @@ -98,18 +98,24 @@ class BimTool(WorkSpaceTool): def draw_settings( cls, context: bpy.types.Context, layout: bpy.types.UILayout, ws_tool: bpy.types.WorkSpaceTool ) -> None: - props = tool.Geometry.get_geometry_props() ifc_element_type = None if cls.ifc_element_type == "all" else cls.ifc_element_type - if props.mode == "ITEM": - EditItemUI.draw(context, layout) - elif ( - active_ifc_object := (context.active_object and tool.Ifc.get_entity(context.active_object)) - ) and context.selected_objects: - EditObjectUI.draw(context, layout, ifc_element_type=ifc_element_type) + if tool.Geometry.get_geometry_props().mode == "ITEM": + pass + elif context.active_object and tool.Ifc.get_entity(context.active_object) and context.selected_objects: + pass else: CreateObjectUI.draw(context, layout, ifc_element_type=ifc_element_type) +def workspace_settings(self, context): + if not tool.Ifc.get(): + return + if tool.Geometry.get_geometry_props().mode == "ITEM": + EditItemUI.draw(context, self.layout) + elif context.active_object and tool.Ifc.get_entity(context.active_object) and context.selected_objects: + EditObjectUI.draw(context, self.layout) + + class WallTool(BimTool): bl_space_type = "VIEW_3D" bl_context_mode = "OBJECT"