From d37baa4e0cb3b10896f03c581944c02f028aac73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Wed, 19 Feb 2025 16:18:22 -0300 Subject: [PATCH] Fix calculation for polyline tool when working with X, Y and Z. --- src/bonsai/bonsai/bim/module/model/polyline.py | 2 +- src/bonsai/bonsai/tool/polyline.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/polyline.py b/src/bonsai/bonsai/bim/module/model/polyline.py index d3c014586a..7dd7382127 100644 --- a/src/bonsai/bonsai/bim/module/model/polyline.py +++ b/src/bonsai/bonsai/bim/module/model/polyline.py @@ -597,7 +597,7 @@ class PolylineOperator: self.report({"WARNING"}, "The number typed is not valid.") return is_valid else: - if self.input_type in {"X", "Y"}: + if self.input_type in {"X", "Y", "Z"}: tool.Polyline.calculate_distance_and_angle(context, self.input_ui, self.tool_state) elif self.input_type in {"D", "A"}: tool.Polyline.calculate_x_y_and_z(context, self.input_ui, self.tool_state) diff --git a/src/bonsai/bonsai/tool/polyline.py b/src/bonsai/bonsai/tool/polyline.py index 56eab4a288..4442bab9c0 100644 --- a/src/bonsai/bonsai/tool/polyline.py +++ b/src/bonsai/bonsai/tool/polyline.py @@ -267,10 +267,20 @@ class Polyline(bonsai.core.tool.Polyline): snap_prop = context.scene.BIMPolylineProperties.snap_mouse_point[0] snap_vector = Vector((snap_prop.x, snap_prop.y, snap_prop.z)) - if tool_state.use_default_container: - snap_vector = Vector((snap_prop.x, snap_prop.y, default_container_elevation)) + if tool_state.is_input_on: + if tool_state.use_default_container: + mouse_vector = Vector( + (input_ui.get_number_value("X"), input_ui.get_number_value("Y"), default_container_elevation) + ) + else: + mouse_vector = Vector( + (input_ui.get_number_value("X"), input_ui.get_number_value("Y"), input_ui.get_number_value("Z")) + ) else: - snap_vector = Vector((snap_prop.x, snap_prop.y, snap_prop.z)) + if tool_state.use_default_container: + snap_vector = Vector((snap_prop.x, snap_prop.y, default_container_elevation)) + else: + snap_vector = Vector((snap_prop.x, snap_prop.y, snap_prop.z)) if len(polyline_points) > 1: second_to_last_point_data = polyline_points[len(polyline_points) - 2]