From 94f98b1e0e91019e67f18e4ee14f390fe3ff6eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Tue, 24 Jun 2025 18:16:52 -0300 Subject: [PATCH] Fix issue where edge intersection snap were not being calculated. --- src/bonsai/bonsai/tool/snap.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/bonsai/bonsai/tool/snap.py b/src/bonsai/bonsai/tool/snap.py index 2ba09f70bb..b40e3cc5a9 100644 --- a/src/bonsai/bonsai/tool/snap.py +++ b/src/bonsai/bonsai/tool/snap.py @@ -355,6 +355,18 @@ class Snap(bonsai.core.tool.Snap): # Objects objs_to_raycast = tool.Raycast.filter_objects_to_raycast(context, event, objs_2d_bbox) + # Wireframes + # For wireframe we have to get all the objects so we can further calculate edge intersection + for snap_obj in objs_to_raycast: + if snap_obj.type in {"EMPTY", "CURVE"} or ( + snap_obj.type == "MESH" and len(snap_obj.data.polygons) == 0 + ): + snap_points = tool.Raycast.ray_cast_by_proximity(context, event, snap_obj) + if snap_points: + for point in snap_points: + point["group"] = "Wireframe" + detected_snaps.append(point) + if (space.shading.type == "SOLID" and space.shading.show_xray) or ( space.shading.type == "WIREFRAME" and space.shading.show_xray_wireframe ): @@ -374,12 +386,7 @@ class Snap(bonsai.core.tool.Snap): if snap_obj.type in {"EMPTY", "CURVE"} or ( snap_obj.type == "MESH" and len(snap_obj.data.polygons) == 0 ): - snap_points = tool.Raycast.ray_cast_by_proximity(context, event, snap_obj) - if snap_points: - for point in snap_points: - point["group"] = "Wireframe" - detected_snaps.append(point) - + continue # Meshes else: # Add face snap