From 4e72ef8b20de0a59ce7f9fe40eba5d173832cc8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Thu, 13 Jul 2023 00:13:05 -0300 Subject: [PATCH] Select all objects in array modifier #3331 --- .../blenderbim/bim/module/model/__init__.py | 1 + .../blenderbim/bim/module/model/array.py | 26 +++++++++++++++++++ .../blenderbim/bim/module/model/ui.py | 3 +++ 3 files changed, 30 insertions(+) diff --git a/src/blenderbim/blenderbim/bim/module/model/__init__.py b/src/blenderbim/blenderbim/bim/module/model/__init__.py index e7d7de1724..adeceb2276 100644 --- a/src/blenderbim/blenderbim/bim/module/model/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/model/__init__.py @@ -47,6 +47,7 @@ classes = ( array.EnableEditingArray, array.RemoveArray, array.SelectArrayParent, + array.SelectAllArrayObjects, array.Input3DCursorXArray, array.Input3DCursorYArray, array.Input3DCursorZArray, diff --git a/src/blenderbim/blenderbim/bim/module/model/array.py b/src/blenderbim/blenderbim/bim/module/model/array.py index 6f3efb94f5..7f5756fa28 100644 --- a/src/blenderbim/blenderbim/bim/module/model/array.py +++ b/src/blenderbim/blenderbim/bim/module/model/array.py @@ -201,6 +201,32 @@ class SelectArrayParent(bpy.types.Operator): obj.select_set(True) return {"FINISHED"} + +class SelectAllArrayObjects(bpy.types.Operator): + bl_idname = "bim.select_all_array_objects" + bl_label = "Select All Array Objects" + bl_options = {"REGISTER", "UNDO"} + parent: bpy.props.StringProperty() + + def execute(self, context): + try: + element = tool.Ifc.get().by_guid(self.parent) + except: + return {"FINISHED"} + + obj = tool.Ifc.get_object(element) + obj.select_set(True) + + pset = ifcopenshell.util.element.get_pset(element, "BBIM_Array") + data = json.loads(pset["Data"]) + for i in range(len(data)): + for child in data[i]["children"]: + element = tool.Ifc.get().by_guid(child) + obj = tool.Ifc.get_object(element) + if obj: + context.view_layer.objects.active = obj + obj.select_set(True) + return {"FINISHED"} class Input3DCursorXArray(bpy.types.Operator): bl_idname = "bim.input_cursor_x_array" diff --git a/src/blenderbim/blenderbim/bim/module/model/ui.py b/src/blenderbim/blenderbim/bim/module/model/ui.py index fdc7d54d56..1e88fb782f 100644 --- a/src/blenderbim/blenderbim/bim/module/model/ui.py +++ b/src/blenderbim/blenderbim/bim/module/model/ui.py @@ -189,6 +189,9 @@ class BIM_PT_array(bpy.types.Panel): row.label(text=ArrayData.data["parameters"]["parent_name"], icon="CON_CHILDOF") op = row.operator("bim.select_array_parent", icon="OBJECT_DATA", text="") op.parent = ArrayData.data["parameters"]["Parent"] + op = row.operator("bim.select_all_array_objects", icon="RESTRICT_SELECT_OFF", text="") + op.parent = ArrayData.data["parameters"]["Parent"] + if ArrayData.data["parameters"]["data_dict"]: row.operator("bim.add_array", icon="ADD", text="")