Offset of an irregular closed spline no longer fails its error certificate; offset fit nodes stay private (#1009)

Fixes #971. At the node limit the offset certificate splits the fitted curve where it meets the exact offset midpoint, so curves with different parameter speeds certify within the same 0.002 mm tolerance. Associated offset fit nodes are hidden from display, picking, box selection and snapping until Break Association.

Thanks @Karl-VonRichter.
This commit is contained in:
Karl Von Richter authored and GitHub committed 2026-10-14 05:27:39 -04:00
1 parent 2f91338d3d
commit 9ca7d307a4
9 files changed
+319 -41

No files matched your search

+3 -1
View File
@@ -90,7 +90,9 @@ pub fn find(sk: &Sketch, moving: &[(usize, Vec2)], exclude: &[usize], mm_px: f64
return keep(None);
}
let id = |i: usize| sk.points.get(i).map(|p| p.id.clone()).unwrap_or_default();
let targets: Vec<(usize, Vec2)> = sk.points.iter().enumerate().filter(|(i, _)| !exclude.contains(i)).map(|(i, p)| (i, p.pos)).collect();
let visible = solidcraft_engine::view::SketchPointVisibility::new(sk);
let targets: Vec<(usize, Vec2)> =
sk.points.iter().enumerate().filter(|(i, p)| !exclude.contains(i) && visible.takes(p)).map(|(i, p)| (i, p.pos)).collect();
let free_curves: Vec<usize> =
(0..sk.curves.len()).filter(|&c| sk.curves.get(c).is_some_and(|cu| !exclude.iter().any(|&p| cu.kind.uses(p)))).collect();
let mut best: Option<(f64, Snap)> = None;