From cd13368de86f75e87bff727fbe6a961478585211 Mon Sep 17 00:00:00 2001 From: Jeff Cooper Date: Tue, 1 Sep 2026 21:36:25 -0400 Subject: [PATCH] Add a clause to gcode generation which forces a retract when moving between non-adjacent contours in a pocket, even not crossing a boundary --- src/kiri/mode/cam/work/prepare.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/kiri/mode/cam/work/prepare.js b/src/kiri/mode/cam/work/prepare.js index c6ed072c2..a59a11b90 100644 --- a/src/kiri/mode/cam/work/prepare.js +++ b/src/kiri/mode/cam/work/prepare.js @@ -626,6 +626,16 @@ export async function prepare_one(widget, settings, print, firstPoint, update) { } } lastTravelBounds = undefined; + + // Retract if moving longer distances across stock within pocket bounds + if (!upAndOver && deltaXY > shortCut && (camForceZMax || printPoint.z < stockZ || point.z < stockZ)) { + // For longer travel moves within bounds that pass below stock height (or if force Z max is set), + // trigger an up-and-over retract to zSafe to avoid plowing through uncleared stock at G0. + // + // A future improvement might add an option for a stepdown-height + // Z-hop for in-stock travel moves as an alternative to full zSafe clearance retracts. + upAndOver = "in-stock"; + } } else // for longer moves if (isMove) {