From 8f6cd1828820645485c853c9051a520ac529ac39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Thu, 13 Mar 2025 21:32:13 -0300 Subject: [PATCH] Add instruction to `MeasureFaceArea` tool --- src/bonsai/bonsai/bim/module/model/polyline.py | 15 +++++++++------ src/bonsai/bonsai/bim/module/project/operator.py | 8 ++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/polyline.py b/src/bonsai/bonsai/bim/module/model/polyline.py index ed887440d7..9c2aa1468a 100644 --- a/src/bonsai/bonsai/bim/module/model/polyline.py +++ b/src/bonsai/bonsai/bim/module/model/polyline.py @@ -662,7 +662,7 @@ class PolylineOperator: tool.Blender.update_viewport() def handle_instructions( - self, context: bpy.types.Context, custom_instructions: dict = {}, custom_info: str = "" + self, context: bpy.types.Context, custom_instructions: dict = {}, custom_info: str = "", overwrite: bool = False ) -> None: self.info = [ f"Axis: {self.tool_state.axis_method}", @@ -670,9 +670,12 @@ class PolylineOperator: f"Snap: {self.snapping_points[0]['type']}", ] instructions = self.instructions | custom_instructions if custom_instructions else self.instructions - infos = self.info + custom_info if custom_info else self.info + if overwrite: + instructions = custom_instructions + infos = custom_info + def draw_instructions(self: bpy.types.Header, context: bpy.types.Context) -> None: for action, settings in instructions.items(): if settings["icons"]: @@ -683,10 +686,10 @@ class PolylineOperator: key = settings["keys"][0] self.layout.label(text=key + action) - self.layout.label(text="|") - - for info in infos: - self.layout.label(text=info) + if infos: + self.layout.label(text="|") + for info in infos: + self.layout.label(text=info) context.workspace.status_text_set(draw_instructions) diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py index 5322a69fe5..1364be707e 100644 --- a/src/bonsai/bonsai/bim/module/project/operator.py +++ b/src/bonsai/bonsai/bim/module/project/operator.py @@ -2716,6 +2716,13 @@ class MeasureFaceAreaTool(bpy.types.Operator, PolylineOperator): PolylineDecorator.update(event, self.tool_state, self.input_ui, self.snapping_points[0]) tool.Blender.update_viewport() + custom_instructions = { + "Select Face": {"icons": True, "keys": ["MOUSE_LMB"]}, + "Deselect Face": {"icons": True, "keys": ["EVENT_SHIFT", "MOUSE_LMB"]} + } + custom_info = [] + self.handle_instructions(context, custom_instructions, custom_info, overwrite=True) + if event.type in {"MIDDLEMOUSE", "WHEELUPMOUSE", "WHEELDOWNMOUSE"}: self.handle_mouse_move(context, event) return {"PASS_THROUGH"} @@ -2757,6 +2764,7 @@ class MeasureFaceAreaTool(bpy.types.Operator, PolylineOperator): if event.value == "RELEASE" and event.type in {"ESC", "RIGHTMOUSE"}: bpy.context.scene.BIMPolylineProperties.insertion_polyline.clear() + context.workspace.status_text_set(text=None) PolylineDecorator.uninstall() FaceAreaDecorator.uninstall() tool.Blender.update_viewport()