diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index a005303a75..4cefd1969b 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -1794,7 +1794,13 @@ class OverrideModeSetObject(bpy.types.Operator, tool.Ifc.Operator): return builder = ifcopenshell.util.shape_builder.ShapeBuilder(tool.Ifc.get()) unit_scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) - verts = [v.co / unit_scale for v in obj.data.vertices] + + rep_obj = bpy.context.scene.BIMGeometryProperties.representation_obj + if coordinate_offset := tool.Geometry.get_cartesian_point_offset(rep_obj): + verts = [(v.co + coordinate_offset) / unit_scale for v in obj.data.vertices] + else: + verts = [v.co / unit_scale for v in obj.data.vertices] + faces = [p.vertices[:] for p in obj.data.polygons] if item.is_a("IfcAdvancedBrep"): new_item = builder.faceted_brep(verts, faces) diff --git a/src/bonsai/bonsai/tool/geometry.py b/src/bonsai/bonsai/tool/geometry.py index 3ae543184b..3462753683 100644 --- a/src/bonsai/bonsai/tool/geometry.py +++ b/src/bonsai/bonsai/tool/geometry.py @@ -1464,6 +1464,10 @@ class Geometry(bonsai.core.tool.Geometry): obj.data.clear_geometry() tool.Loader.convert_geometry_to_mesh(geometry, obj.data) + if coordinate_offset := cls.get_cartesian_point_offset(props.representation_obj): + for vert in obj.data.vertices: + vert.co -= coordinate_offset + if item.is_a("IfcSweptAreaSolid"): cls.record_object_position(obj) if item.Position: diff --git a/src/bonsai/bonsai/tool/loader.py b/src/bonsai/bonsai/tool/loader.py index 5f0261a328..00f4c852fc 100644 --- a/src/bonsai/bonsai/tool/loader.py +++ b/src/bonsai/bonsai/tool/loader.py @@ -921,7 +921,9 @@ class Loader(bonsai.core.tool.Loader): if "openings" not in rep_str: rep_id = rep_str.split("-", 1)[0] rep = tool.Ifc.get().by_id(int(rep_id)) - tool.Loader.load_indexed_colour_map(rep, mesh) + # For now, not necessary to load maps in Item mode + if rep.is_a("IfcShapeRepresentation"): + tool.Loader.load_indexed_colour_map(rep, mesh) else: e = geometry.edges v = verts