diff --git a/src/kiri/mode/cam/op-outline.js b/src/kiri/mode/cam/op-outline.js index 9afac459..f1d3add7 100644 --- a/src/kiri/mode/cam/op-outline.js +++ b/src/kiri/mode/cam/op-outline.js @@ -17,10 +17,11 @@ class OpOutline extends CamOp { async slice(progress) { let { op, state } = this; - let { settings, slicer, addSlices, tshadow, thruHoles, unsafe, color } = state; + let { settings, slicer, addSlices, tshadow, thruHoles, unsafe, color, widget } = state; let { updateToolDiams, tabs, cutTabs, cutPolys, workarea, zMax, shadowAt } = state; let { process, stock } = settings; let { controller } = settings; + let center_off = widget.track.pos ?? { x: 0, y: 0, z: 0}; if (op.down <= 0) { throw `invalid step down "${op.down}"`; @@ -191,7 +192,10 @@ class OpOutline extends CamOp { } if (process.camStockClipTo && stock.x && stock.y && stock.center) { - stockClip = newPolygon().centerRectangle(stock.center, stock.x + 0.001, stock.y + 0.001); + let { center } = stock; + let x = center.x - center_off.x; + let y = center.y - center_off.y; + stockClip = newPolygon().centerRectangle({ x, y }, stock.x + 0.001, stock.y + 0.001); offset = cutPolys([stockClip], offset, slice.z, true); } diff --git a/src/kiri/mode/cam/op-rough.js b/src/kiri/mode/cam/op-rough.js index 7ecda0e0..3b2d74f4 100644 --- a/src/kiri/mode/cam/op-rough.js +++ b/src/kiri/mode/cam/op-rough.js @@ -15,11 +15,12 @@ class OpRough extends CamOp { async slice(progress) { let { op, state } = this; - let { settings, slicer, addSlices, unsafe, color } = state; + let { settings, slicer, addSlices, unsafe, color, widget } = state; let { updateToolDiams, thruHoles, tabs, cutTabs, cutPolys } = state; let { ztOff, zMax, shadowAt, isIndexed} = state; let { workarea } = state; let { controller, process, stock } = settings; + let center_off = widget.track.pos ?? { x: 0, y: 0, z: 0}; if (op.down <= 0) { throw `invalid step down "${op.down}"`; @@ -223,7 +224,10 @@ class OpRough extends CamOp { }); if (process.camStockClipTo && stock.x && stock.y && stock.center) { - let rect = newPolygon().centerRectangle(stock.center, stock.x + 0.001, stock.y + 0.001); + let { center } = stock; + let x = center.x - center_off.x; + let y = center.y - center_off.y; + let rect = newPolygon().centerRectangle({ x, y }, stock.x + 0.001, stock.y + 0.001); offset = cutPolys([rect], offset, slice.z, true); } @@ -245,7 +249,7 @@ class OpRough extends CamOp { } } if (controller.devel) { - slice.output() + if (tabs) slice.output() .setLayer("tabs clip", {line: 0xaa00aa}, true) .addPolys(tabs.map(tab => tab.off).flat()); slice.output()