From 5fbb496818195abd171d4cc12a2fa338ae043efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Fri, 24 Jan 2025 16:12:45 -0300 Subject: [PATCH] Improve wall axis decorator. - Blue: base - White: side - Green: reference - Arrow: direction See: https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMaterialLayerSetUsage.htm --- .../bonsai/bim/module/model/decorator.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/decorator.py b/src/bonsai/bonsai/bim/module/model/decorator.py index 8ce524271e..07978a4374 100644 --- a/src/bonsai/bonsai/bim/module/model/decorator.py +++ b/src/bonsai/bonsai/bim/module/model/decorator.py @@ -889,10 +889,21 @@ class WallAxisDecorator: if element.is_a("IfcWall"): layers = tool.Model.get_material_layer_parameters(element) axis = tool.Model.get_wall_axis(obj, layers) - verts = [tuple(list(v) + [0.0]) for v in axis["reference"]] - self.draw_batch("LINES", verts, selected_elements_color, [(0, 1)]) - verts = [tuple(list(v) + [0.0]) for v in axis["side"]] - self.draw_batch("LINES", verts, unselected_elements_color, [(0, 1)]) + side = [tuple(list(v) + [0.0]) for v in axis["side"]] + self.draw_batch("LINES", side, unselected_elements_color, [(0, 1)]) + base = [tuple(list(v) + [0.0]) for v in axis["base"]] + self.draw_batch("LINES", base, special_elements_color, [(0, 1)]) + reference = [tuple(list(v) + [0.0]) for v in axis["reference"]] + self.draw_batch("LINES", reference, selected_elements_color, [(0, 1)]) + + direction = Vector(base[0]) - Vector(side[0]) + perpendicular = Vector((direction.y, -direction.x, 0)) + perpendicular = perpendicular.normalized() * 0.1 + arrow_base = Vector(side[0]) + direction.normalized() * 0.05 + v3 = arrow_base + perpendicular + v4 = arrow_base - perpendicular + arrow = [base[0], side[0], v3, v4] + self.draw_batch("LINES", arrow, unselected_elements_color, [(0, 1), (1, 2), (1, 3)]) class SlabDirectionDecorator: