From b509374c27bea70338cc3d733a60d41fc8e220d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Sun, 19 Jan 2025 10:22:50 -0300 Subject: [PATCH] Add initial curve snapping functionality --- src/bonsai/bonsai/tool/snap.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/tool/snap.py b/src/bonsai/bonsai/tool/snap.py index 1a06d15fd4..ff78a60ce0 100644 --- a/src/bonsai/bonsai/tool/snap.py +++ b/src/bonsai/bonsai/tool/snap.py @@ -355,7 +355,7 @@ class Snap(bonsai.core.tool.Snap): objs_to_raycast = [] for obj, bbox_2d in objs_2d_bbox: - if obj.type in {"MESH", "EMPTY"} and bbox_2d: + if obj.type in {"MESH", "EMPTY", "CURVE"} and bbox_2d: if tool.Raycast.intersect_mouse_2d_bounding_box(mouse_pos, bbox_2d, offset): if obj.visible_in_viewport_get( context.space_data @@ -406,6 +406,17 @@ class Snap(bonsai.core.tool.Snap): "points": snap_points, } ) + if 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: + detected_snaps.append( + { + "group": "Edge-Vertex", + "object": obj, + "points": snap_points, + } + ) if obj.type == "EMPTY": snap_point = { "points": [{"type": "Vertex", "point": obj.location}],