From 59b5bd93394ca10006f49d1001af8ec751602dbb Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Sat, 4 May 2024 13:53:58 -0500 Subject: [PATCH] Can bim.select_similar from the pset or attribute panels --- src/blenderbim/blenderbim/bim/module/attribute/ui.py | 5 ++++- src/blenderbim/blenderbim/bim/module/pset/ui.py | 4 +++- src/blenderbim/blenderbim/bim/module/search/operator.py | 6 ++++-- src/blenderbim/blenderbim/bim/module/search/ui.py | 3 ++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/attribute/ui.py b/src/blenderbim/blenderbim/bim/module/attribute/ui.py index 7ffd360c19..9ebee59d66 100644 --- a/src/blenderbim/blenderbim/bim/module/attribute/ui.py +++ b/src/blenderbim/blenderbim/bim/module/attribute/ui.py @@ -46,7 +46,10 @@ def draw_ui(context, layout, obj_type, attributes): for attribute in attributes: row = layout.row(align=True) row.label(text=attribute["name"]) - row.label(text=attribute["value"]) + # row.label(text=attribute["value"]) + op = row.operator("bim.select_similar", text=attribute["value"], icon="NONE", emboss=False) + op.key = attribute['name'] + # TODO: reimplement, see #1222 # if "IfcSite/" in context.active_object.name or "IfcBuilding/" in context.active_object.name: diff --git a/src/blenderbim/blenderbim/bim/module/pset/ui.py b/src/blenderbim/blenderbim/bim/module/pset/ui.py index 8a715e4718..cb895399ac 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/ui.py +++ b/src/blenderbim/blenderbim/bim/module/pset/ui.py @@ -143,7 +143,9 @@ def draw_psetqto_ui(context, pset_id, pset, props, layout, obj_type, allow_remov row = box.row(align=True) row.scale_y = 0.8 row.label(text=prop["Name"]) - row.label(text=str(prop["NominalValue"])) + op = row.operator("bim.select_similar", text=str(prop["NominalValue"]), icon="NONE", emboss=False) + op.key = pset['Name'] + if not has_props_displayed: row = box.row() row.scale_y = 0.8 diff --git a/src/blenderbim/blenderbim/bim/module/search/operator.py b/src/blenderbim/blenderbim/bim/module/search/operator.py index 6ffe447470..084a7c9554 100644 --- a/src/blenderbim/blenderbim/bim/module/search/operator.py +++ b/src/blenderbim/blenderbim/bim/module/search/operator.py @@ -633,12 +633,14 @@ class SelectSimilar(Operator, tool.Ifc.Operator): bl_label = "Select Similar" bl_options = {"REGISTER", "UNDO"} + key: bpy.props.StringProperty() + def _execute(self, context): props = context.scene.BIMSearchProperties obj = context.active_object element = tool.Ifc.get_entity(obj) - key = props.element_key - if props.element_key == "PredefinedType": + key = self.key + if key == "PredefinedType": key = "predefined_type" value = ifcopenshell.util.selector.get_element_value(element, key) for obj in context.visible_objects: diff --git a/src/blenderbim/blenderbim/bim/module/search/ui.py b/src/blenderbim/blenderbim/bim/module/search/ui.py index 8117bc9f52..d4ab0d6c99 100644 --- a/src/blenderbim/blenderbim/bim/module/search/ui.py +++ b/src/blenderbim/blenderbim/bim/module/search/ui.py @@ -113,7 +113,8 @@ class BIM_PT_select_similar(Panel): if SelectSimilarData.data["element_key"]: row = self.layout.row(align=True) row.prop(props, "element_key", text="") - row.operator("bim.select_similar", text="", icon="RESTRICT_SELECT_OFF") + op = row.operator("bim.select_similar", text="", icon="RESTRICT_SELECT_OFF") + op.key = props.element_key else: row = self.layout.row() row.label(text=f"No Active Element")