From 45803664f1067a64a480df2f16c5bed48bc0b3ce Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 1 Jan 2026 23:43:46 -0500 Subject: [PATCH] add function to force op change when chaining ops internally like roughing does --- src/kiri/mode/cam/op-rough.js | 4 +++- src/kiri/mode/cam/prepare.js | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/kiri/mode/cam/op-rough.js b/src/kiri/mode/cam/op-rough.js index 11349a1f..a83e4d28 100644 --- a/src/kiri/mode/cam/op-rough.js +++ b/src/kiri/mode/cam/op-rough.js @@ -106,10 +106,12 @@ class OpRough extends CamOp { await op.slice(progress); } } - +s async prepare(ops, progress) { + let { setChangeOp } = ops; for (let op of this.ops_list) { await op.prepare(ops, progress); + setChangeOp(); } } } diff --git a/src/kiri/mode/cam/prepare.js b/src/kiri/mode/cam/prepare.js index 179108f8..4973c239 100644 --- a/src/kiri/mode/cam/prepare.js +++ b/src/kiri/mode/cam/prepare.js @@ -131,6 +131,7 @@ export async function prepare_one(widget, settings, print, firstPoint, update) { lastTravelBounds, newOutput = print.output || [], nextIsMove = true, + nextIsNewOp = false, plungeRate = camFastFeedZ, printPoint, tool, @@ -354,6 +355,10 @@ export async function prepare_one(widget, settings, print, firstPoint, update) { nextIsMove = true; } + function setChangeOp() { + nextIsNewOp = true; + } + /** * Move a point by the widget's movement offset. * @param {Point} p - point to move @@ -475,11 +480,12 @@ export async function prepare_one(widget, settings, print, firstPoint, update) { // 1. move to safe z of current point preserving angle // 2. move to safe z of new point preserving old angle // 3. move to safe z of new point with new angle - if (lop !== currentOp) { + if (nextIsNewOp || lop !== currentOp) { layerPush(printPoint.clone().setZ(zSafe).setA(printPoint.a), 0, feedRate, tool); layerPush(point.clone().setZ(zSafe).setA(printPoint.a), 0, feedRate, tool); layerPush(point.clone().setZ(zSafe), 0, feedRate, tool); newLayer(); + nextIsNewOp = false; } // consume forced next move flag and convert to move @@ -965,6 +971,7 @@ export async function prepare_one(widget, settings, print, firstPoint, update) { poly2polyEmit, polyEmit, printPoint, + setChangeOp, setContouring, setDrill, setLasering,