From a941eb3f903a5db3c733ac968dd429b8854c7b84 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 12 Mar 2025 18:47:50 +1100 Subject: [PATCH] Parametric roof geometry is now whitelisted for IfcSlab.ROOF and IfcCovering.ROOFING too. --- src/bonsai/bonsai/bim/module/model/roof.py | 10 ++++++++-- src/bonsai/bonsai/bim/module/root/data.py | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/roof.py b/src/bonsai/bonsai/bim/module/model/roof.py index 77058bca39..5f19800362 100644 --- a/src/bonsai/bonsai/bim/module/model/roof.py +++ b/src/bonsai/bonsai/bim/module/model/roof.py @@ -425,8 +425,14 @@ def update_roof_modifier_ifc_data(context: bpy.types.Context) -> None: return False # type attributes - if props.roof_type == "HIP/GABLE ROOF": - element.PredefinedType = "GABLE_ROOF" if roof_is_gabled() else "HIP_ROOF" + ifc_class = element.is_a() + if ifc_class in ("IfcRoof", "IfcRoofType"): + if props.roof_type == "HIP/GABLE ROOF": + element.PredefinedType = "GABLE_ROOF" if roof_is_gabled() else "HIP_ROOF" + elif ifc_class in ("IfcSlab", "IfcSlabType"): + element.PredefinedType = "ROOF" + elif ifc_class in ("IfcCoveringType", "IfcCoveringType"): + element.PredefinedType = "ROOFING" tool.Model.add_body_representation(obj) diff --git a/src/bonsai/bonsai/bim/module/root/data.py b/src/bonsai/bonsai/bim/module/root/data.py index 99b17220b5..4f6b234a19 100644 --- a/src/bonsai/bonsai/bim/module/root/data.py +++ b/src/bonsai/bonsai/bim/module/root/data.py @@ -170,7 +170,7 @@ class IfcClassData: templates.extend([None, ("STAIR", "Stair", "Parametric stair")]) elif ifc_class in ("IfcRailingType", "IfcRailing"): templates.extend([None, ("RAILING", "Railing", "Parametric railing")]) - elif ifc_class in ("IfcRoofType", "IfcRoof"): + elif ifc_class in ("IfcRoofType", "IfcRoof", "IfcSlabType", "IfcSlab", "IfcCovering", "IfcCoveringType"): templates.extend([None, ("ROOF", "Roof", "Parametric roof with a constant pitch")]) elif ifc_class and "Segment" in ifc_class: templates.extend(