From 979cac6b9fb8bca4a159759e23e9afb61c644be6 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 12 Jan 2021 08:07:33 -0500 Subject: [PATCH] add stock clipping to trace follow op --- src/mode/cam/ops.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mode/cam/ops.js b/src/mode/cam/ops.js index 84447897..c4b62f44 100644 --- a/src/mode/cam/ops.js +++ b/src/mode/cam/ops.js @@ -685,8 +685,8 @@ let { op, state } = this; let { tool, rate, down, plunge, offset } = op; let { settings, widget, sliceAll, zMax, tabs } = state; - let { updateToolDiams, cutTabs } = state; - let { process } = settings; + let { updateToolDiams, cutTabs, cutPolys } = state; + let { process, stock } = settings; // generate tracing offsets from chosen features let sliceOut = this.sliceOut = []; let areas = op.areas[widget.id] || []; @@ -694,6 +694,7 @@ let toolOver = toolDiam * op.step; let cutdir = process.camConventional; let polys = []; + let stockRect = newPolygon().centerRectangle(stock.center, stock.x, stock.y); updateToolDiams(toolDiam); if (tabs) { tabs.forEach(tab => { @@ -712,13 +713,17 @@ return slice; } function followZ(poly) { - let slice = newSliceOut(poly.getZ()); + let z = poly.getZ(); + let slice = newSliceOut(z); slice.camTrace = { tool, rate, plunge }; if (tabs) { - slice.camLines = cutTabs(tabs, [poly], poly.getZ()); + slice.camLines = cutTabs(tabs, [poly], z); } else { slice.camLines = [ poly ]; } + if (process.camStockClipTo) { + slice.camLines = cutPolys([stockRect], slice.camLines, z, true); + } slice.output() .setLayer("follow", {line: 0xaa00aa}, false) .addPolys(slice.camLines)