From fed8c2162583f25ea54972cfdcabb66df2153312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Thu, 20 Feb 2025 22:52:42 -0300 Subject: [PATCH] Polyline tool - Improves the preview fix for #6083 by avoiding overlapping edges. --- src/bonsai/bonsai/tool/polyline.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bonsai/bonsai/tool/polyline.py b/src/bonsai/bonsai/tool/polyline.py index 4442bab9c0..9e48c9ae73 100644 --- a/src/bonsai/bonsai/tool/polyline.py +++ b/src/bonsai/bonsai/tool/polyline.py @@ -521,9 +521,14 @@ class Polyline(bonsai.core.tool.Polyline): for point in polyline_points[1:]: # The first can be repeated to form a wall loop if (x, y, z) == (point.x, point.y, point.z): return "Cannot create two points at the same location" - # Avoids duplicating an edge + # Avoids creating overlapping edges if len(polyline_points) > 1: - if Vector((x, y, z)) == Vector((polyline_points[-2].x, polyline_points[-2].y, polyline_points[-2].z)): + v1 = Vector((x, y, z)) + v2 = Vector((polyline_points[-1].x, polyline_points[-1].y, polyline_points[-1].z)) + v3 = Vector((polyline_points[-2].x, polyline_points[-2].y, polyline_points[-2].z)) + angle = tool.Cad.angle_3_vectors(v1, v2, v3, new_angle=None, degrees=True + ) + if tool.Cad.is_x(angle, 0): return # TODO move this limitation to be Wall tool specific. Right now it also affects Measure tool # Avoids creating segments smaller then 0.1. This is a limitation from create_wall_from_2_points