From 167b58a7b69889116e5fb73853ee28f2525e2efb Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 13 Dec 2025 11:56:08 -0500 Subject: [PATCH] fix stock bounds when rotate in indexed mode with fixed vs offset stock --- src/kiri/mode/cam/slice.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/kiri/mode/cam/slice.js b/src/kiri/mode/cam/slice.js index 91039d57..ca1ec6b0 100644 --- a/src/kiri/mode/cam/slice.js +++ b/src/kiri/mode/cam/slice.js @@ -83,6 +83,24 @@ export async function cam_slice(settings, widget, onupdate, ondone) { z: camStockZ, center: newPoint(pos.x, pos.y, pos.z) }; + if (!camStockOffset && axisIndex && isIndexed) { + if (axisIndex === 0 || axisIndex === 180) { + // do nothing + } else if (axisIndex === 90 || axisIndex === 270) { + // swap YZ + let tmp = stock.y; + stock.y = stock.z; + stock.z = tmp; + stock.center = newPoint(pos.x, pos.z, pos.y); + } else { + // compute YZ hypotenuse + let p = new THREE.Vector2(stock.y, stock.z); + let center = new THREE.Vector2(0, 0); + p.rotateAround(center, axisRotation); + stock.y = p.y; + stock.z = p.z; + } + } track = widget.track; wztop = track.top; ztOff = isIndexed ? (stock.z - bounds.dim.z) / 2 : (stock.z - wztop); @@ -346,6 +364,7 @@ export async function cam_slice(settings, widget, onupdate, ondone) { let layername = named.length ? named : (note ? `${type} (${note})` : type); Object.assign(state, { layername, + stock, tool, zBottom, zThru,