From d4736710a50fc213a01e9fdfb7c3a543eadef9e2 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 25 Mar 2021 20:29:37 +1100 Subject: [PATCH] Thanks @ihabelaghoury! You can now select objects in the viewport by GlobalId from the IFC inspector --- src/ifcblenderexport/blenderbim/bim/module/debug/ui.py | 3 +++ src/ifcblenderexport/blenderbim/bim/module/search/operator.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py b/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py index 707a12e34e..8372ae76a0 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py @@ -53,6 +53,9 @@ class BIM_PT_debug(Panel): row = layout.row(align=True) row.prop(attribute, "name", text="") row.prop(attribute, "string_value", text="") + if attribute.name == "GlobalId": + op = row.operator("bim.select_global_id", icon="RESTRICT_SELECT_OFF", text="") + op.global_id = attribute.string_value if attribute.int_value: row.operator( "bim.inspect_from_step_id", icon="DISCLOSURE_TRI_RIGHT", text="" diff --git a/src/ifcblenderexport/blenderbim/bim/module/search/operator.py b/src/ifcblenderexport/blenderbim/bim/module/search/operator.py index 80788ae87d..500fd42cc3 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/search/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/module/search/operator.py @@ -41,15 +41,17 @@ def does_keyword_exist(pattern, string): class SelectGlobalId(bpy.types.Operator): bl_idname = "bim.select_global_id" bl_label = "Select GlobalId" + global_id: bpy.props.StringProperty() def execute(self, context): self.file = IfcStore.get_file() props = context.scene.BIMSearchProperties + global_id = self.global_id or props.global_id for obj in context.visible_objects: if not obj.BIMObjectProperties.ifc_definition_id: continue element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) - if element.GlobalId == props.global_id: + if element.GlobalId == global_id: obj.select_set(True) break return {"FINISHED"}