Select all objects in array modifier #3331

This commit is contained in:
Bruno Perdigão
2023-07-13 00:13:05 -03:00
committed by Dion Moult
parent b9d8e86748
commit 4e72ef8b20
3 changed files with 30 additions and 0 deletions
@@ -47,6 +47,7 @@ classes = (
array.EnableEditingArray, array.EnableEditingArray,
array.RemoveArray, array.RemoveArray,
array.SelectArrayParent, array.SelectArrayParent,
array.SelectAllArrayObjects,
array.Input3DCursorXArray, array.Input3DCursorXArray,
array.Input3DCursorYArray, array.Input3DCursorYArray,
array.Input3DCursorZArray, array.Input3DCursorZArray,
@@ -202,6 +202,32 @@ class SelectArrayParent(bpy.types.Operator):
return {"FINISHED"} 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): class Input3DCursorXArray(bpy.types.Operator):
bl_idname = "bim.input_cursor_x_array" bl_idname = "bim.input_cursor_x_array"
bl_label = "Get 3d Cursor X Input for Array" bl_label = "Get 3d Cursor X Input for Array"
@@ -189,6 +189,9 @@ class BIM_PT_array(bpy.types.Panel):
row.label(text=ArrayData.data["parameters"]["parent_name"], icon="CON_CHILDOF") row.label(text=ArrayData.data["parameters"]["parent_name"], icon="CON_CHILDOF")
op = row.operator("bim.select_array_parent", icon="OBJECT_DATA", text="") op = row.operator("bim.select_array_parent", icon="OBJECT_DATA", text="")
op.parent = ArrayData.data["parameters"]["Parent"] 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"]: if ArrayData.data["parameters"]["data_dict"]:
row.operator("bim.add_array", icon="ADD", text="") row.operator("bim.add_array", icon="ADD", text="")