From 5fe87bf5aa6c0be7f2f14a29669d3fe4cd3677f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Thu, 13 Feb 2025 14:47:30 -0300 Subject: [PATCH] Modify `mix_snap_and_axis()` to select the snapping point closest to the last point. --- src/bonsai/bonsai/tool/snap.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/tool/snap.py b/src/bonsai/bonsai/tool/snap.py index 39de027aae..125c234caf 100644 --- a/src/bonsai/bonsai/tool/snap.py +++ b/src/bonsai/bonsai/tool/snap.py @@ -232,7 +232,16 @@ class Snap(bonsai.core.tool.Snap): intersections.append(tool.Cad.intersect_edge_plane(axis_start, axis_end, snap_point, Vector((1, 0, 0)))) intersections.append(tool.Cad.intersect_edge_plane(axis_start, axis_end, snap_point, Vector((0, 1, 0)))) intersections.append(tool.Cad.intersect_edge_plane(axis_start, axis_end, snap_point, Vector((0, 0, 1)))) - sorted_intersections = sorted((i for i in intersections if i is not None), reverse=False) + + polyline_data = bpy.context.scene.BIMPolylineProperties.insertion_polyline + polyline_points = polyline_data[0].polyline_points if polyline_data else [] + if polyline_points: + last_point_data = polyline_points[-1] + last_point = Vector((last_point_data.x, last_point_data.y, last_point_data.z)) + else: + last_point = Vector(0, 0, 0) + + sorted_intersections = sorted((i for i in intersections if i is not None), key=lambda x: (x - last_point).length, reverse=True) return sorted_intersections @classmethod