From 14917d2c3198d1e8cb2d1b1cf070ebab254df024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Mon, 21 Oct 2024 10:34:02 -0300 Subject: [PATCH] Windows and Doors preview now get the wall rotation. --- src/bonsai/bonsai/bim/module/model/decorator.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/model/decorator.py b/src/bonsai/bonsai/bim/module/model/decorator.py index 6ae1ee0776..9c5a77b265 100644 --- a/src/bonsai/bonsai/bim/module/model/decorator.py +++ b/src/bonsai/bonsai/bim/module/model/decorator.py @@ -17,6 +17,7 @@ # along with Bonsai. If not, see . import blf +import bpy import gpu import gpu_extras import bmesh @@ -563,10 +564,16 @@ class PolylineDecorator: rl = 0 snap_prop = context.scene.BIMPolylineProperties.snap_mouse_point[0] mouse_point = Vector((snap_prop.x, snap_prop.y, snap_prop.z)) + snap_obj = bpy.data.objects[snap_prop.snap_object] + snap_element = tool.Ifc.get_entity(snap_obj) + rot_mat = Vector((0.0, 0.0, 0.0)) + if snap_element and snap_element.is_a("IfcWall"): + rot_mat = snap_obj.matrix_world.to_quaternion() + obj_type = tool.Ifc.get_object(relating_type) if obj_type.data: data = ItemDecorator.get_obj_data(obj_type) - data["verts"] = [tuple(Vector((v[0], v[1], (v[2] + rl))) + mouse_point) for v in data["verts"]] + data["verts"] = [tuple(rot_mat @ (Vector((v[0], v[1], (v[2] + rl)))) + mouse_point) for v in data["verts"]] return data def draw_product_preview(self, context):