MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / _execute

Method _execute

src/bonsai/bonsai/bim/module/model/array.py:217–255  ·  view source on GitHub ↗
(self, context)

Source from the content-addressed store, hash-verified

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
258class SelectArrayParent(bpy.types.Operator):

Callers

nothing calls this directly

Calls 12

get_array_propsMethod · 0.80
remove_constraintsMethod · 0.80
get_entityMethod · 0.45
reportMethod · 0.45
by_guidMethod · 0.45
getMethod · 0.45
get_objectMethod · 0.45
regenerate_arrayMethod · 0.45
get_element_psetMethod · 0.45

Tested by

no test coverage detected