fix depth first with multiple pocket selections in cnc pocket op

This commit is contained in:
Stewart Allen 2024-07-10 14:33:56 -04:00
commit 1cc3f42f60
2 changed files with 16 additions and 9 deletions

View file

@ -25,7 +25,7 @@
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^6.1.1", "@fortawesome/fontawesome-free": "^6.1.1",
"@gridspace/app-server": "^0.0.13", "@gridspace/app-server": "^0.0.14",
"@gridspace/net-level-client": "^0.2.3", "@gridspace/net-level-client": "^0.2.3",
"@tracespace/parser": "^5.0.0-next.0", "@tracespace/parser": "^5.0.0-next.0",
"@tweenjs/tween.js": "^16.6.0", "@tweenjs/tween.js": "^16.6.0",

View file

@ -1177,7 +1177,8 @@ class OpPocket extends CamOp {
let { updateToolDiams, cutTabs, cutPolys, healPolys, shadowAt } = state; let { updateToolDiams, cutTabs, cutPolys, healPolys, shadowAt } = state;
let { process, stock } = settings; let { process, stock } = settings;
// generate tracing offsets from chosen features // generate tracing offsets from chosen features
let sliceOut = this.sliceOut = []; let sliceOut;
let pockets = this.pockets = [];
let camTool = new CAM.Tool(settings, tool); let camTool = new CAM.Tool(settings, tool);
let toolDiam = camTool.fluteDiameter(); let toolDiam = camTool.fluteDiameter();
let toolOver = toolDiam * op.step; let toolOver = toolDiam * op.step;
@ -1208,6 +1209,9 @@ class OpPocket extends CamOp {
tab.off = POLY.expand([tab.poly], toolDiam / 2).flat(); tab.off = POLY.expand([tab.poly], toolDiam / 2).flat();
}); });
} }
function newPocket() {
pockets.push(sliceOut = []);
}
function newSliceOut(z) { function newSliceOut(z) {
let slice = newSlice(z); let slice = newSlice(z);
sliceOut.push(slice); sliceOut.push(slice);
@ -1229,6 +1233,7 @@ class OpPocket extends CamOp {
} }
let zpro = 0, zinc = 1 / (polys.length * zs.length); let zpro = 0, zinc = 1 / (polys.length * zs.length);
for (let poly of polys) { for (let poly of polys) {
newPocket();
for (let z of zs) { for (let z of zs) {
let clip = [], shadow; let clip = [], shadow;
if (contour) { if (contour) {
@ -1375,7 +1380,7 @@ class OpPocket extends CamOp {
} }
prepare(ops, progress) { prepare(ops, progress) {
let { op, state, sliceOut } = this; let { op, state, pockets } = this;
let { setTool, setSpindle, setTolerance, sliceOutput } = ops; let { setTool, setSpindle, setTolerance, sliceOutput } = ops;
let { process } = state.settings; let { process } = state.settings;
@ -1386,12 +1391,14 @@ class OpPocket extends CamOp {
setTolerance(this.topo.tolerance); setTolerance(this.topo.tolerance);
} }
sliceOutput(sliceOut, { for (let sliceOut of pockets) {
cutdir: process.camConventional, sliceOutput(sliceOut, {
depthFirst: process.camDepthFirst && !state.isIndexed, cutdir: process.camConventional,
easeDown: op.down && process.easeDown ? op.down : 0, depthFirst: process.camDepthFirst && !state.isIndexed,
progress: (n,m) => progress(n/m, "pocket") easeDown: op.down && process.easeDown ? op.down : 0,
}); progress: (n,m) => progress(n/m, "pocket")
});
}
} }
} }