From 615ca2482527e59f8d944fc2bbef3d93b6c851cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Fri, 14 Mar 2025 21:43:26 -0300 Subject: [PATCH] Fix #6363. Improve how Curves are handled by the snapping system. --- src/bonsai/bonsai/tool/raycast.py | 2 ++ src/bonsai/bonsai/tool/snap.py | 9 +-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/bonsai/bonsai/tool/raycast.py b/src/bonsai/bonsai/tool/raycast.py index dae97fcf95..628660077a 100644 --- a/src/bonsai/bonsai/tool/raycast.py +++ b/src/bonsai/bonsai/tool/raycast.py @@ -204,6 +204,8 @@ class Raycast(bonsai.core.tool.Raycast): } points.append(snap_point) return points + if obj and obj.type == "CURVE": + obj = bpy.data.objects.new("new_object", obj.to_mesh().copy()) if not custom_bmesh: bm = bmesh.new() diff --git a/src/bonsai/bonsai/tool/snap.py b/src/bonsai/bonsai/tool/snap.py index cf238be46b..4915f93bf3 100644 --- a/src/bonsai/bonsai/tool/snap.py +++ b/src/bonsai/bonsai/tool/snap.py @@ -358,20 +358,13 @@ class Snap(bonsai.core.tool.Snap): face_index = result[2] if hit is not None: # Wireframes - if snap_obj.type == "EMPTY" or (snap_obj.type == "MESH" and len(snap_obj.data.polygons) == 0): + 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) - elif snap_obj.type == "CURVE": - new_object = bpy.data.objects.new("new_object", obj.to_mesh().copy()) - snap_points = tool.Raycast.ray_cast_by_proximity(context, event, new_object) - if snap_points: - for point in snap_points: - point["group"] = "Wireframe" - detected_snaps.append(point) # Meshes else: # Add face snap