From 4404b6cee0717873de3e14e56a756ee7fc0201e3 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 1 Feb 2024 14:52:14 -0500 Subject: [PATCH] add zThru support for the roughing operation --- src/kiri-mode/cam/ops.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/kiri-mode/cam/ops.js b/src/kiri-mode/cam/ops.js index 09d8f7ad..f3dbb5d4 100644 --- a/src/kiri-mode/cam/ops.js +++ b/src/kiri-mode/cam/ops.js @@ -172,7 +172,7 @@ class OpRough extends CamOp { let { op, state } = this; let { settings, widget, slicer, addSlices, unsafe, color } = state; let { updateToolDiams, thruHoles, tabs, cutTabs, cutPolys } = state; - let { tshadow, shadowTop, ztOff, zBottom, zMax, shadowAt, isIndexed } = state; + let { tshadow, shadowTop, ztOff, zBottom, zThru, zMax, shadowAt, isIndexed } = state; let { process, stock } = settings; if (op.down <= 0) { @@ -400,13 +400,28 @@ class OpRough extends CamOp { // .addPolys(shadow) .setLayer("rough shell", {line: 0xaa0000}) .addPolys(shell); - slice.output() - .setLayer("roughing", {face: color, line: color}) - .addPolys(offset); progress(0.5 + 0.5 * (index / slices.length)); }); + let last = slices[slices.length-1]; + for (let zneg of base.util.lerp(0, zThru, op.down)) { + if (!last) continue; + let add = last.clone(true); + add.z -= zneg; + add.camLines = last.camLines.clone(true); + add.camLines.forEach(p => p.setZ(add.z)); + // add.tops.forEach(top => top.poly.setZ(add.z)); + // add.shadow = last.shadow.clone(true); + slices.push(add); + } + + slices.forEach(slice => { + slice.output() + .setLayer("roughing", {face: color, line: color}) + .addPolys(slice.camLines); + }); this.sliceOut = slices.filter(slice => slice.camLines); + addSlices(this.sliceOut); }