diff --git a/src/bonsai/bonsai/bim/module/geometry/data.py b/src/bonsai/bonsai/bim/module/geometry/data.py index 5f84838e14..0c8ba8eec1 100644 --- a/src/bonsai/bonsai/bim/module/geometry/data.py +++ b/src/bonsai/bonsai/bim/module/geometry/data.py @@ -52,7 +52,11 @@ class ViewportData: ("OBJECT", "IFC Object Mode", "", "OBJECT_DATAMODE", 0), ("EDIT", "IFC Edit Mode", "", "EDITMODE_HLT", 1), ] - if not obj or not tool.Blender.is_editable(obj): + if ( + not obj + or not tool.Blender.is_editable(obj) + or ((element := tool.Ifc.get_entity(obj)) and tool.Geometry.is_locked(element)) + ): return obj_mode return mesh_modes diff --git a/src/bonsai/bonsai/bim/module/spatial/prop.py b/src/bonsai/bonsai/bim/module/spatial/prop.py index 6959f24992..161130b877 100644 --- a/src/bonsai/bonsai/bim/module/spatial/prop.py +++ b/src/bonsai/bonsai/bim/module/spatial/prop.py @@ -31,6 +31,7 @@ from bpy.props import ( CollectionProperty, ) import bonsai.tool as tool +import bonsai.bim.handler import bonsai.core.geometry import ifcopenshell import ifcopenshell.util.element @@ -125,6 +126,8 @@ def update_spatial_is_locked(self, context): tool.Geometry.lock_object(obj) else: tool.Geometry.unlock_object(obj) + # Need to update ViewportData.mode. + bonsai.bim.handler.refresh_ui_data() def update_spatial_is_visible(self: "BIMSpatialDecompositionProperties", context: bpy.types.Context) -> None: