From 9076deddbcb24bdf0a8ecece9f9f49f8c3d599f7 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 7 Mar 2025 12:13:36 +0500 Subject: [PATCH] Consider ifc2x3 in a358cff1b7 #6255 In ifc2x3 position is not optional, so we should reset it's coordinates instead. --- src/bonsai/bonsai/bim/module/model/slab.py | 4 +--- src/bonsai/bonsai/tool/model.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/slab.py b/src/bonsai/bonsai/bim/module/model/slab.py index 04b22e8060..2c4357e308 100644 --- a/src/bonsai/bonsai/bim/module/model/slab.py +++ b/src/bonsai/bonsai/bim/module/model/slab.py @@ -331,9 +331,7 @@ class DumbSlabPlaner: ifc_position = extrusion.Position if perpendicular_offset == 0.0: # Clean up possible previous offset. - if ifc_position: - extrusion.Position = None - ifcopenshell.util.element.remove_deep2(ifc_file, ifc_position) + tool.Model.reset_extrusion_position(extrusion) else: position = offset_direction * perpendicular_offset if ifc_position: diff --git a/src/bonsai/bonsai/tool/model.py b/src/bonsai/bonsai/tool/model.py index c63a9ba466..d304645d4c 100644 --- a/src/bonsai/bonsai/tool/model.py +++ b/src/bonsai/bonsai/tool/model.py @@ -2064,6 +2064,21 @@ class Model(bonsai.core.tool.Model): extrusion.Position = new_position + @classmethod + def reset_extrusion_position(cls, extrusion: ifcopenshell.entity_instance) -> None: + ifc_file = extrusion.file + + if ifc_file.schema == "IFC2X3": + # Position is not optional. + extrusion.Position.Location.Coordinates = (0.0, 0.0, 0.0) + return + + position = extrusion.Position + if position is None: + return + extrusion.Position = None + ifcopenshell.util.element.remove_deep2(ifc_file, position) + @classmethod def get_existing_x_angle(cls, extrusion: ifcopenshell.entity_instance) -> float: x, y, z = extrusion.ExtrudedDirection.DirectionRatios