diff --git a/src/bonsai/bonsai/bim/export_ifc.py b/src/bonsai/bonsai/bim/export_ifc.py index d920bda9a0..4f9692b49c 100644 --- a/src/bonsai/bonsai/bim/export_ifc.py +++ b/src/bonsai/bonsai/bim/export_ifc.py @@ -36,6 +36,7 @@ from bonsai.bim.ifc import IfcStore from mathutils import Vector from typing import Union from logging import Logger +from math import radians class IfcExporter: @@ -112,6 +113,7 @@ class IfcExporter: # Ensure reflected ceiling cameras have the correct scale if obj.scale != (-1, -1, -1): obj.scale = (-1, -1, -1) + obj.rotation_euler = (0.0, 0.0, radians(180)) # Skip all other scale handling for cameras elif tool.Geometry.is_scaled(obj): bpy.ops.bim.update_representation(obj=obj.name) diff --git a/src/bonsai/bonsai/bim/module/drawing/operator.py b/src/bonsai/bonsai/bim/module/drawing/operator.py index 52598ac6b1..4bc3067de8 100644 --- a/src/bonsai/bonsai/bim/module/drawing/operator.py +++ b/src/bonsai/bonsai/bim/module/drawing/operator.py @@ -2346,12 +2346,14 @@ class ActivateDrawingBase(tool.Ifc.Operator): is_reflected = ifcopenshell.util.element.get_pset(camera_element, "EPset_Drawing", "TargetView") == "REFLECTED_PLAN_VIEW" if is_reflected and camera.scale != (-1, -1, -1): camera.scale = (-1, -1, -1) + camera.rotation_euler = (0.0, 0.0, radians(180)) if camera_props.update_representation(camera.matrix_world): bpy.ops.bim.update_representation(obj=camera.name, ifc_representation_class="") # Restore the scale after update if needed if is_reflected: camera.scale = (-1, -1, -1) + camera.rotation_euler = (0.0, 0.0, radians(180)) return {"FINISHED"}