From 9dc75ece4493b85bb2bbc482e1479edc564bcc9e Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Wed, 18 Jun 2025 21:36:04 -0500 Subject: [PATCH] Fix #6593 - preference to turn on/off cut decorator --- .../bonsai/bim/module/drawing/decoration.py | 11 ++++++----- .../bonsai/bim/module/drawing/operator.py | 9 ++++++--- src/bonsai/bonsai/bim/module/model/prop.py | 19 +++++++++++++++++++ src/bonsai/bonsai/bim/ui.py | 4 +++- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/drawing/decoration.py b/src/bonsai/bonsai/bim/module/drawing/decoration.py index 627615b581..f2b52d4c5c 100644 --- a/src/bonsai/bonsai/bim/module/drawing/decoration.py +++ b/src/bonsai/bonsai/bim/module/drawing/decoration.py @@ -1700,11 +1700,12 @@ class CutDecorator: self.shader.bind() black = (0, 0, 0, 1) - - for colour, element_fills in fills.items(): - for verts_tris in element_fills: - for verts, tris in verts_tris: - self.draw_batch("TRIS", verts, colour, tris) + model_props = tool.Model.get_model_props() + if model_props.show_cut_decorator_fill: + for colour, element_fills in fills.items(): + for verts_tris in element_fills: + for verts, tris in verts_tris: + self.draw_batch("TRIS", verts, colour, tris) gpu.state.point_size_set(2) self.line_shader.uniform_float("lineWidth", 3.0) diff --git a/src/bonsai/bonsai/bim/module/drawing/operator.py b/src/bonsai/bonsai/bim/module/drawing/operator.py index f7a0dc2f71..1f4360eb6a 100644 --- a/src/bonsai/bonsai/bim/module/drawing/operator.py +++ b/src/bonsai/bonsai/bim/module/drawing/operator.py @@ -2114,8 +2114,9 @@ class ActivateModel(bpy.types.Operator): def execute(self, context): dprops = tool.Drawing.get_document_props() dprops.active_drawing_id = 0 - - CutDecorator.uninstall() + model_props = tool.Model.get_model_props() + if model_props.show_cut_decorator: + CutDecorator.uninstall() # Preserve current visibility statuses for: # - non-ifc objects @@ -2208,7 +2209,9 @@ class ActivateDrawingBase(tool.Ifc.Operator): if tool.Drawing.is_camera_orthographic(): core.sync_references(tool.Ifc, tool.Collector, tool.Drawing, drawing=tool.Ifc.get().by_id(self.drawing)) - CutDecorator.install(context) + model_props = tool.Model.get_model_props() + if model_props.show_cut_decorator: + CutDecorator.install(context) tool.Drawing.show_decorations() # Save drawing bounds to the .ifc file diff --git a/src/bonsai/bonsai/bim/module/model/prop.py b/src/bonsai/bonsai/bim/module/model/prop.py index 04f39dd33a..18d83980bb 100644 --- a/src/bonsai/bonsai/bim/module/model/prop.py +++ b/src/bonsai/bonsai/bim/module/model/prop.py @@ -28,6 +28,7 @@ from math import pi, radians from bonsai.bim.module.model.decorator import WallAxisDecorator, SlabDirectionDecorator from bonsai.bim.module.model.door import update_door_modifier_bmesh from bonsai.bim.module.model.window import update_window_modifier_bmesh +from bonsai.bim.module.drawing.decoration import CutDecorator from typing import TYPE_CHECKING, Literal, get_args, Union, get_args, Any, Optional @@ -112,6 +113,13 @@ def update_slab_direction_decorator(self: "BIMModelProperties", context: bpy.typ else: SlabDirectionDecorator.uninstall() +def update_cut_decorator(self: "BIMModelProperties", context: bpy.types.Context) -> None: + if self.show_cut_decorator: + CutDecorator.install(bpy.context) + else: + CutDecorator.uninstall() + + def update_search_name(self: "BIMModelProperties", context: bpy.types.Context) -> None: AuthoringData.load() @@ -240,6 +248,17 @@ class BIMModelProperties(PropertyGroup): default=False, update=update_slab_direction_decorator, ) + show_cut_decorator: bpy.props.BoolProperty( + name="Show Cut Decorator", + default=True, + update=update_cut_decorator, + description="Shows the cut decorator", + ) + show_cut_decorator_fill: bpy.props.BoolProperty( + name="Show Cut Decorator Fill", + default=True, + description="Show Cut Decorator Fill", + ) if TYPE_CHECKING: ifc_class: str diff --git a/src/bonsai/bonsai/bim/ui.py b/src/bonsai/bonsai/bim/ui.py index 639216b6ee..7eb2775263 100644 --- a/src/bonsai/bonsai/bim/ui.py +++ b/src/bonsai/bonsai/bim/ui.py @@ -1315,7 +1315,9 @@ class BIM_PT_decorators_overlay(Panel): row.prop(model_props, "show_wall_axis", text="Wall Axis") row = col.row(align=True) row.prop(model_props, "show_slab_direction", text="Slab Direction") - + row = col.row(align=True) + row.prop(model_props, "show_cut_decorator", text="Cut Decorator") + row.prop(model_props, "show_cut_decorator_fill", text="Fill Cut Decorator") class BIM_PT_snappping(Panel): bl_space_type = "VIEW_3D"