From 0c50236dc17bc479aad4a27e88cdeb0d8a514f30 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 3 Sep 2025 20:08:45 -0400 Subject: [PATCH] fix drill NaN emit, up/over re-plunge speeds --- src/kiri/mode/cam/export.js | 3 +++ src/kiri/mode/cam/prepare.js | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/kiri/mode/cam/export.js b/src/kiri/mode/cam/export.js index a8354161..a0dfc09b 100644 --- a/src/kiri/mode/cam/export.js +++ b/src/kiri/mode/cam/export.js @@ -274,6 +274,9 @@ export function cam_export(print, online) { dist = Math.sqrt(dx * dx + dy * dy + dz * dz), newFeed = feed && feed !== pos.f; + // catch NaN in debugging + // if (nl.length === 0 || nl[0] === undefined) + // console.log(out, nl.length, ...nl); // drop dup points (all deltas are 0) if (!arc && !(dx || dy || dz || da)) { diff --git a/src/kiri/mode/cam/prepare.js b/src/kiri/mode/cam/prepare.js index 7faa3e21..128e4b06 100644 --- a/src/kiri/mode/cam/prepare.js +++ b/src/kiri/mode/cam/prepare.js @@ -244,7 +244,7 @@ export function prepEach(widget, settings, print, firstPoint, update) { break; } } - camOut(point.clone().setZ(zmax_outer)); + camOut(point.clone().setZ(zmax_outer), 0); points.forEach(function (point, index) { camOut(point, 1); if (index > 0 && index < points.length - 1) { @@ -332,7 +332,7 @@ export function prepEach(widget, settings, print, firstPoint, update) { * @param {number} opts.moveLen typically = tool diameter used to trigger terrain detection * @param {number} opts.factor speed scale factor */ - function camOut(point, emit, opts) { + function camOut(point, emit = 1, opts) { // console.trace({point, emit, opts}) let { center = {}, @@ -399,9 +399,8 @@ export function prepEach(widget, settings, print, firstPoint, update) { // when rapid pluge could cut thru stock, rapid to just above stock // then continue plunge as a plunge cut if (deltaZ < 0 && lastPoint.z > stockz && point.z < stockz && emit === 0) { - // console.log('detected plunge cut as rapid move', lastPoint.z, point.z); - let above = point.clone().setZ(stockz + 0.1); - layerPush(above, 0, 0, tool); + // console.log('detected plunge cut as rapid move', lastPoint.z, stockz, point.z); + layerPush(point.clone().setZ(stockz + 1), 0, 0, tool); // change to cutting move for remainder of plunge emit = 1; } @@ -467,6 +466,11 @@ export function prepEach(widget, settings, print, firstPoint, update) { layerPush(point.clone().setZ(zClearance), 0, 0, tool); // new pos for plunge calc deltaXY = 0; + // if plunge goes below stock, convert to cut + if (emit === 0 && point.z < stockz) { + lastPoint = layerPush(point.clone().setZ(stockz + 1), 0, 0, tool); + emit = 1; + } } } else if (isRough && deltaZ < 0) { layerPush(point.clone().setZ(lastPoint.z), 0, 0, tool);