diff --git a/src/blenderbim/blenderbim/bim/module/boundary/__init__.py b/src/blenderbim/blenderbim/bim/module/boundary/__init__.py index 5af93cd2f4..3f2ace071f 100644 --- a/src/blenderbim/blenderbim/bim/module/boundary/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/boundary/__init__.py @@ -23,6 +23,7 @@ classes = ( operator.LoadProjectSpaceBoundaries, operator.LoadSpaceBoundaries, operator.LoadBoundary, + operator.SelectSpaceBoundaries, operator.SelectProjectBoundaries, operator.ColourByRelatedBuildingElement, operator.EnableEditingBoundary, diff --git a/src/blenderbim/blenderbim/bim/module/boundary/operator.py b/src/blenderbim/blenderbim/bim/module/boundary/operator.py index 34754503a2..c74da2e45f 100644 --- a/src/blenderbim/blenderbim/bim/module/boundary/operator.py +++ b/src/blenderbim/blenderbim/bim/module/boundary/operator.py @@ -158,6 +158,22 @@ class LoadSpaceBoundaries(bpy.types.Operator): return {"FINISHED"} +class SelectSpaceBoundaries(bpy.types.Operator): + bl_idname = "bim.select_space_boundaries" + bl_label = "Select all space boundaries" + bl_options = {"REGISTER", "UNDO"} + + def execute(self, context): + for obj in context.visible_objects: + obj.select_set(False) + element = tool.Ifc.get_entity(context.active_object) + for rel in element.BoundedBy or []: + obj = tool.Ifc.get_object(rel) + if obj: + obj.select_set(True) + return {"FINISHED"} + + class SelectProjectBoundaries(bpy.types.Operator): bl_idname = "bim.select_project_space_boundaries" bl_label = "Select all project space boundaries" @@ -208,11 +224,10 @@ class ColourByRelatedBuildingElement(bpy.types.Operator): return result def _execute(self, context): - self.file = tool.Ifc.get() for obj in context.visible_objects: if not obj.BIMObjectProperties.ifc_definition_id: continue - element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) + element = tool.Ifc.get_entity(obj) if not element.is_a("IfcRelSpaceBoundary"): continue obj.color = get_colour(element) diff --git a/src/blenderbim/blenderbim/bim/module/boundary/ui.py b/src/blenderbim/blenderbim/bim/module/boundary/ui.py index c989960804..d994fb39ef 100644 --- a/src/blenderbim/blenderbim/bim/module/boundary/ui.py +++ b/src/blenderbim/blenderbim/bim/module/boundary/ui.py @@ -143,6 +143,7 @@ class BIM_PT_SpaceBoundaries(Panel): self.ifc_file = tool.Ifc.get() row = self.layout.row() row.operator("bim.load_space_boundaries") + row.operator("bim.select_space_boundaries", text="", icon="RESTRICT_SELECT_OFF") for boundary in SpaceBoundariesData.data["boundaries"]: row = self.layout.row() row.label(text=boundary["description"], icon="GHOST_ENABLED")