mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-31 15:41:35 -04:00
Trim refused the piece between two crossing cut-offs because a cut-off had one start and one end, so a line could not be stopped short around a pocket of parts without deleting it and drawing two. A cut-off now carries Gaps, stretches between its limits left uncut: segment generation excludes them like parts, so the line splits into segments that each take their own place in the cut sequence. Trimming a middle piece adds a gap from one crossing centre to the other (merged with any it touches), Extend near a gap's edge closes it, and Swap Through-Cut refuses a junction a gap touches rather than guess which side of the gap should run through. Every reader of the limits treats a gap as uncut, so nothing waits for, warns about or credits a cut that never happens: segment spans stop at a gap, the cutting dependencies skip a part inside one, the clamp check ignores a clamp inside one, the cutting-state and overlap stamps go stale when gaps change, and a gapped line is never full span for the expected remnant or automatic cut-offs. Gaps persist as an optional gaps array; older versions ignore it and would cut straight through. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>