From f2e56f8128616e6760f96e47bc21d28eed61cd82 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 23 Nov 2023 11:18:04 +1100 Subject: [PATCH] Minor fix to "select multiple IFC class" implementation --- src/blenderbim/blenderbim/bim/module/root/ui.py | 3 +-- .../blenderbim/bim/module/search/operator.py | 14 ++++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/root/ui.py b/src/blenderbim/blenderbim/bim/module/root/ui.py index f5bfb6a26b..b80c733ee5 100644 --- a/src/blenderbim/blenderbim/bim/module/root/ui.py +++ b/src/blenderbim/blenderbim/bim/module/root/ui.py @@ -62,8 +62,7 @@ class BIM_PT_class(Panel): else: row = self.layout.row(align=True) row.label(text=IfcClassData.data["name"]) - op = row.operator("bim.select_ifc_class", text="", icon="RESTRICT_SELECT_OFF") - op.ifc_class = IfcClassData.data["ifc_class"] + row.operator("bim.select_ifc_class", text="", icon="RESTRICT_SELECT_OFF") row.operator("bim.unlink_object", icon="UNLINKED", text="") if IfcClassData.data["can_reassign_class"]: row.operator("bim.enable_reassign_class", icon="GREASEPENCIL", text="") diff --git a/src/blenderbim/blenderbim/bim/module/search/operator.py b/src/blenderbim/blenderbim/bim/module/search/operator.py index 34f63fe2a6..044643664a 100644 --- a/src/blenderbim/blenderbim/bim/module/search/operator.py +++ b/src/blenderbim/blenderbim/bim/module/search/operator.py @@ -431,15 +431,17 @@ class SelectIfcClass(Operator): bl_idname = "bim.select_ifc_class" bl_label = "Select IFC Class" bl_options = {"REGISTER", "UNDO"} - ifc_class: StringProperty() def execute(self, context): objects = bpy.context.selected_objects - for object in objects: - element = tool.Ifc.get_entity(object) - element_class = element.is_a() - for elem in tool.Ifc.get().by_type(element_class): - obj = tool.Ifc.get_object(elem) + classes = set() + for obj in objects: + element = tool.Ifc.get_entity(obj) + if element: + classes.add(element.is_a()) + for cls in classes: + for element in tool.Ifc.get().by_type(cls): + obj = tool.Ifc.get_object(element) if obj: obj.select_set(True) return {"FINISHED"}