From d01f4a13002ce47b7003cb331f14bfcf73832d4e Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 20 Dec 2025 13:53:40 -0500 Subject: [PATCH] fix order of operations bug with tabs and inner only --- src/kiri/mode/cam/op-area.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/kiri/mode/cam/op-area.js b/src/kiri/mode/cam/op-area.js index 2c3fe001..35c518e4 100644 --- a/src/kiri/mode/cam/op-area.js +++ b/src/kiri/mode/cam/op-area.js @@ -181,6 +181,12 @@ class OpArea extends CamOp { // terminate z descent when no further output possible break outer; } + // support legacy outline features + if (op.omitouter) { + outs = omitOuter(outs); + } else if (op.omitinner) { + outs = omitInner(outs); + } // cut tabs when present if (tabs.length) outs = cutTabs(tabs, outs); // for roughing backward compatability @@ -189,12 +195,6 @@ class OpArea extends CamOp { for (let p of out.points) p.z += op.leave_z; } - // support legacy outline features - if (op.omitouter) { - outs = omitOuter(outs); - } else if (op.omitinner) { - outs = omitInner(outs); - } // add tabs to travel boundaries if (tabs.length) { let tab_shadows = tabs.filter(t => t.top >= z).map(t => t.poly); @@ -259,14 +259,14 @@ class OpArea extends CamOp { } // add dogbones when specified if (op.dogbones) outs.forEach(out => out.addDogbones(toolDiam / 5, op.revbones)); - // cut tabs when present - if (tabs.length) outs = cutTabs(tabs, outs); // support legacy outline features if (op.omitouter) { outs = omitOuter(outs); } else if (op.omitinner) { outs = omitInner(outs); } + // cut tabs when present + if (tabs.length) outs = cutTabs(tabs, outs); slice.camLines = outs; POLY.setWinding(outs, direction === 'climb'); // store travel boundary that triggers up and over moves