fix(snap): don't draw extension guides from circles on intersection

Catching a plain line-line Intersection re-runs extension_bases_screen to
draw the dashed guide(s) for an *extended* intersection (#247/#259). It
scanned every wire including tessellated circles, and a full circle's
chords point in every direction, so one almost always has an outward
extension that grazes the crossing — drawing spurious guide lines
radiating from nearby circles.

Skip closed curves (full circle / ellipse) in that scan, identified by
their Quadrant snap hints (arcs never carry them, so arc extension guides
are unaffected).

Closes #276

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-07-05 12:03:52 +03:00
1 parent 42e11b9250
commit d81979b807
1 file changed
+13
+13
View File
@@ -1446,6 +1446,19 @@ fn extension_bases_screen(
if n < 2 {
continue;
}
// A closed curve (full circle / ellipse) has no meaningful extension:
// its tessellation chords point every which way, so one almost always
// has an outward extension that grazes the snapped point, drawing a
// spurious dashed guide radiating from the circle when the user only
// caught a plain line-line intersection (#276). Skip it — same closed
// signal (Quadrant hints, which arcs never carry) as the Endpoint snap.
if wire
.snap_pts
.iter()
.any(|(_, h)| matches!(h, SnapHint::Quadrant))
{
continue;
}
// Match the extension snap: every segment can be extended past either
// endpoint, so scan them all to find the base(s) the snapped point sits on.
for i in 0..n - 1 {