From 09fcd32b7a5bc93b3bf131ecaa7e3daff6a3ff77 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 7 Nov 2024 17:12:38 +0500 Subject: [PATCH] Fix error duplicating array item after c415767 #5705 error traceback ``` Traceback (most recent call last): File "bonsai\bim\module\geometry\operator.py", line 909, in execute return OverrideDuplicateMove.execute_duplicate_operator(self, context, linked=False) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "bonsai\bim\module\geometry\operator.py", line 918, in execute_duplicate_operator IfcStore.execute_ifc_operator(self, context) File "bonsai\bim\ifc.py", line 443, in execute_ifc_operator result = getattr(operator, "_execute")(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "bonsai\bim\module\geometry\operator.py", line 912, in _execute return OverrideDuplicateMove.execute_ifc_duplicate_operator(self, context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "bonsai\bim\module\geometry\operator.py", line 1021, in execute_ifc_duplicate_operator tool.Model.handle_array_on_copied_element(new, array_data) File "bonsai\tool\model.py", line 673, in handle_array_on_copied_element array_pset_data = array_pset["Data"] ~~~~~~~~~~^^^^^^^^ KeyError: 'Data' ``` --- src/bonsai/bonsai/tool/model.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/tool/model.py b/src/bonsai/bonsai/tool/model.py index 2291d6862e..5ea239f246 100644 --- a/src/bonsai/bonsai/tool/model.py +++ b/src/bonsai/bonsai/tool/model.py @@ -25,6 +25,7 @@ import collections.abc import numpy as np import ifcopenshell import ifcopenshell.api +import ifcopenshell.api.pset import ifcopenshell.util.element import ifcopenshell.util.unit import ifcopenshell.util.placement @@ -669,7 +670,10 @@ class Model(bonsai.core.tool.Model): if not array_pset: return - array_pset_data = array_pset["Data"] + # TODO: Non-strictness is temporary. It was added due + # to a bug infecting ifc models since it occurred, + # can be reverted later. + array_pset_data = array_pset.get("Data", None) array_pset = tool.Ifc.get().by_id(array_pset["id"]) ifcopenshell.api.run("pset.remove_pset", tool.Ifc.get(), product=element, pset=array_pset) @@ -764,11 +768,11 @@ class Model(bonsai.core.tool.Model): # add child pset child_pset = tool.Pset.get_element_pset(child_element, "BBIM_Array") if child_pset: - ifcopenshell.api.run( - "pset.edit_pset", + ifcopenshell.api.pset.edit_pset( tool.Ifc.get(), pset=child_pset, properties={"Data": None}, + should_purge=False, ) # set child object position