From 25a3be2cdcaec79931bf16d4852fa3beb060a996 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 11 Mar 2020 08:27:32 -0400 Subject: [PATCH] fix clearance move between parts of differing heights. fix persist moves check --- js/kiri-conf.js | 3 ++- js/kiri-driver-cam.js | 23 +++++++++++++++-------- js/kiri-print.js | 11 +++-------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/js/kiri-conf.js b/js/kiri-conf.js index 55442516..7c50f02f 100644 --- a/js/kiri-conf.js +++ b/js/kiri-conf.js @@ -478,7 +478,8 @@ var gs_kiri_conf = exports; layerSparse: true, layerFill: true, layerSupport: true, - layerPrint: false + layerPrint: false, + layerMoves: false }, synth: { // set in updateSettingsFromFields() diff --git a/js/kiri-driver-cam.js b/js/kiri-driver-cam.js index 524fe33b..c4eeb357 100644 --- a/js/kiri-driver-cam.js +++ b/js/kiri-driver-cam.js @@ -15,10 +15,11 @@ let gs_kiri_cam = exports; UTIL = BASE.util, POLY = BASE.polygons, CAM = KIRI.driver.CAM = { - slice: slice, - printSetup: printSetup, - printExport: printExport, - getToolDiameter: getToolDiameter + slice, + printSetup, + printExport, + getToolById, + getToolDiameter }, CPRO = CAM.process = { ROUGH: 1, @@ -39,8 +40,7 @@ let gs_kiri_cam = exports; ], MIN = Math.min, MAX = Math.max, - PI = Math.PI, - HPI = PI/2, + HPI = Math.PI/2, SLICER = KIRI.slicer, newLine = BASE.newLine, newSlice = KIRI.newSlice, @@ -1013,6 +1013,8 @@ let gs_kiri_cam = exports; hasStock = process.camStockZ && process.camStockX && process.camStockY, startCenter = process.outputOriginCenter, zclear = (process.camZClearance || 1) * units, + zadd_outer = hasStock ? stock.z - outer.max.z : alignTop ? outer.max.z - outer.max.z : 0, + zmax_outer = hasStock ? stock.z + zclear : outer.max.z + zclear, zadd = hasStock ? stock.z - bounds.max.z : alignTop ? outer.max.z - bounds.max.z : 0, zmax = hasStock ? stock.z + zclear : bounds.max.z + zclear, originx = startCenter ? 0 : hasStock ? -stock.x / 2 : bounds.min.x, @@ -1220,7 +1222,7 @@ let gs_kiri_cam = exports; } } else { // before first point, move cutting head to point above it - layerPush(point.clone().setZ(zmax), 0, 0, tool.number); + layerPush(point.clone().setZ(zmax_outer + zadd_outer), 0, 0, tool.number); } // todo synthesize move speed from feed / plunge accordingly layerPush( @@ -1389,6 +1391,7 @@ let gs_kiri_cam = exports; } else { poly.forEachPoint(function(point, pidx, points, offset) { camOut(point.clone(), offset !== 0); + last = point; }, poly.isClosed(), index); } newLayer(); @@ -1442,13 +1445,17 @@ let gs_kiri_cam = exports; } // last layer/move is to zmax + // printPoint = lastPoint.clone(); + // lastPoint = null; camOut(printPoint.clone().setZ(bounds.max.z + zclear), false); newOutput.push(layerOut); // replace output single flattened layer with all points print.output = newOutput; - if (widgetIndex + 1 < widgetCount) printSetup(print, update, widgetIndex + 1, printPoint); + if (widgetIndex + 1 < widgetCount) { + printSetup(print, update, widgetIndex + 1, printPoint); + } }; /** diff --git a/js/kiri-print.js b/js/kiri-print.js index 9c93aa57..e35fce61 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -1008,20 +1008,15 @@ var gs_kiri_print = exports; poolPoly.mark = true; const polys = poolPoly.pool.slice().append(poolPoly); startPoint = poly2polyEmit(polys, startPoint, emitter); - // poolPoly.poolsDown.forEach(function(downPool) { - // emitPool(downPool); - // }); - poly2polyEmit(poolPoly.poolsDown, startPoint, emitPool, "del_pdown"); + startPoint = poly2polyEmit(poolPoly.poolsDown, startPoint, emitPool, "del_pdown"); + return startPoint; }; // from the top layer, iterate and descend through all connected pools // pools are sorted smallest to largest. pools are polygons with an // attached 'pool' array of polygons layers.forEach(function(pools) { - // pools.forEach(function(poolPoly) { - // emitPool(poolPoly); - // }); - poly2polyEmit(pools, startPoint, emitPool, "del_ptop"); + startPoint = poly2polyEmit(pools, startPoint, emitPool, "del_ptop"); }) return startPoint; }