From bced62bd5c6615ec1ff8c3a6af3334e469e5f9fa Mon Sep 17 00:00:00 2001 From: Gorgious56 Date: Tue, 21 Jan 2025 13:29:25 +0100 Subject: [PATCH] When switching between ElementType and Element, keep the same class and predefined type if possible --- src/bonsai/bonsai/bim/module/root/prop.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/bonsai/bonsai/bim/module/root/prop.py b/src/bonsai/bonsai/bim/module/root/prop.py index 9d849d7235..73fafd9e4f 100644 --- a/src/bonsai/bonsai/bim/module/root/prop.py +++ b/src/bonsai/bonsai/bim/module/root/prop.py @@ -48,10 +48,27 @@ def get_representation_template(self, context): def refresh_classes(self, context): + old_class = context.scene.BIMRootProperties.ifc_class.split("Type")[0] + old_predefined_type = ( + context.scene.BIMRootProperties.ifc_predefined_type if get_ifc_predefined_types(self, context) else "" + ) + enum = get_ifc_classes(self, context) context.scene.BIMRootProperties.ifc_class = enum[0][0] IfcClassData.load() + # When switching between ElementType and Element, keep the same class and predefined type if possible + if context.scene.BIMRootProperties.ifc_product == "IfcElementType": + ifc_class = old_class + "Type" + elif context.scene.BIMRootProperties.ifc_product == "IfcElement": + ifc_class = old_class + else: + return + if ifc_class in [e[0] for e in get_ifc_classes(self, context)]: + context.scene.BIMRootProperties.ifc_class = ifc_class + if old_predefined_type: + context.scene.BIMRootProperties.ifc_predefined_type = old_predefined_type + def refresh_predefined_types(self, context): IfcClassData.load()