From ea1e7c567f7da9a541cd06cbe7fe44106b5e5ecf Mon Sep 17 00:00:00 2001 From: Gorgious Date: Sun, 23 Jul 2023 14:01:17 +0200 Subject: [PATCH] Array children are now transform-unlocked & unconstrained when the array is applied --- src/blenderbim/blenderbim/bim/module/model/array.py | 4 ++++ src/blenderbim/blenderbim/tool/blender.py | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/blenderbim/blenderbim/bim/module/model/array.py b/src/blenderbim/blenderbim/bim/module/model/array.py index 263752e29a..2a0557eef1 100644 --- a/src/blenderbim/blenderbim/bim/module/model/array.py +++ b/src/blenderbim/blenderbim/bim/module/model/array.py @@ -171,6 +171,10 @@ class RemoveArray(bpy.types.Operator, tool.Ifc.Operator): tool.Model.regenerate_array(parent, data, self.keep_objs) + if self.keep_objs: + tool.Blender.Modifier.Array.unconstrain_children_from_parent(element) + tool.Blender.Modifier.Array.lock_children_transform(element, False) + pset = tool.Ifc.get().by_id(pset["id"]) if len(data) == 1: ifcopenshell.api.run("pset.remove_pset", tool.Ifc.get(), pset=pset) diff --git a/src/blenderbim/blenderbim/tool/blender.py b/src/blenderbim/blenderbim/tool/blender.py index e75fac4dfd..217b654368 100644 --- a/src/blenderbim/blenderbim/tool/blender.py +++ b/src/blenderbim/blenderbim/tool/blender.py @@ -532,6 +532,14 @@ class Blender: ) or child.constraints.new("CHILD_OF") constraint.target = parent_obj + @classmethod + def unconstrain_children_from_parent(cls, parent_element): + children = cls.get_all_children_objects(parent_element) + for child in children: + constraint = next((c for c in child.constraints if c.type == "CHILD_OF"), None) + if constraint: + child.constraints.remove(constraint) + @classmethod def lock_children_transform(cls, parent_element, lock_state=True): for child_obj in cls.get_all_children_objects(parent_element):