(self, context)
| 215 | keep_objs: bpy.props.BoolProperty(name="Keep Objects", default=False) |
| 216 | |
| 217 | def _execute(self, context): |
| 218 | obj = context.active_object |
| 219 | element = tool.Ifc.get_entity(obj) |
| 220 | props = tool.Model.get_array_props(obj) |
| 221 | |
| 222 | pset = ifcopenshell.util.element.get_pset(element, "BBIM_Array") |
| 223 | data = json.loads(pset["Data"]) |
| 224 | |
| 225 | if (self.keep_objs) & (self.item < (len(data) - 1)): |
| 226 | self.report( |
| 227 | {"INFO"}, "Keeping the objects is only allowed when you are removing the last Array of the object" |
| 228 | ) |
| 229 | return {"FINISHED"} |
| 230 | |
| 231 | props.is_editing = -1 |
| 232 | |
| 233 | try: |
| 234 | parent_element = tool.Ifc.get().by_guid(pset["Parent"]) |
| 235 | parent = tool.Ifc.get_object(parent_element) |
| 236 | except: |
| 237 | return {"FINISHED"} |
| 238 | |
| 239 | if self.keep_objs: |
| 240 | tool.Blender.Modifier.Array.bake_children_transform(element, self.item) |
| 241 | tool.Blender.Modifier.Array.set_children_lock_state(element, self.item, False) |
| 242 | |
| 243 | if not self.keep_objs: |
| 244 | data[self.item]["count"] = 1 |
| 245 | tool.Blender.Modifier.Array.remove_constraints(parent_element) |
| 246 | tool.Model.regenerate_array(parent, data, array_layers_to_apply=[self.item] if self.keep_objs else []) |
| 247 | |
| 248 | pset = tool.Pset.get_element_pset(element, "BBIM_Array") |
| 249 | if len(data) == 1: |
| 250 | ifcopenshell.api.pset.remove_pset(tool.Ifc.get(), product=element, pset=pset) |
| 251 | else: |
| 252 | del data[self.item] |
| 253 | data = tool.Ifc.get().createIfcText(json.dumps(data)) |
| 254 | ifcopenshell.api.pset.edit_pset(tool.Ifc.get(), pset=pset, properties={"Data": data}) |
| 255 | tool.Blender.Modifier.Array.constrain_children_to_parent(element) |
| 256 | |
| 257 | |
| 258 | class SelectArrayParent(bpy.types.Operator): |
nothing calls this directly
no test coverage detected