From 5b2733bb3cd23541be462c4b06f8f5c03ca34936 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 18 Sep 2024 17:53:51 +0500 Subject: [PATCH] add classification reference from bsdd - support ObjectType it seems in bsdd some ObjectType is also provided using "undefined_set" pset example - https://identifier.buildingsmart.org/uri/ifcairport/ifcairport/1.0/class/ifcairport0000000004 --- .../bonsai/bim/module/classification/operator.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/classification/operator.py b/src/bonsai/bonsai/bim/module/classification/operator.py index 5585119411..6c41ed91e5 100644 --- a/src/bonsai/bonsai/bim/module/classification/operator.py +++ b/src/bonsai/bonsai/bim/module/classification/operator.py @@ -455,6 +455,18 @@ class AddClassificationReferenceFromBSDD(bpy.types.Operator, tool.Ifc.Operator): reference.Location = bsdd_classification.uri for classification_pset in bprops.classification_psets: + properties = {} + for prop in classification_pset.properties: + properties[prop.name] = prop.get_value() + + if classification_pset.name == "undefined_set": + if "ObjectType" in properties: + if hasattr(element, "ObjectType"): + element.ObjectType = properties["ObjectType"] + del properties["ObjectType"] + if not properties: + continue + is_pset = not classification_pset.name.startswith("Qto_") if is_pset: @@ -473,10 +485,6 @@ class AddClassificationReferenceFromBSDD(bpy.types.Operator, tool.Ifc.Operator): "pset.add_qto", tool.Ifc.get(), product=element, name=classification_pset.name ) - properties = {} - for prop in classification_pset.properties: - properties[prop.name] = prop.get_value() - if is_pset: ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties=properties) else: