From 2b8734d27c75dd0891efcb9bf9a66eab51aaacee Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 11 Mar 2020 08:37:49 -0400 Subject: [PATCH] fix tip2tip emit using wrong last point for open polys --- js/kiri-driver-cam.js | 4 ++++ js/kiri-print.js | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/js/kiri-driver-cam.js b/js/kiri-driver-cam.js index c4eeb357..a7bc1617 100644 --- a/js/kiri-driver-cam.js +++ b/js/kiri-driver-cam.js @@ -1342,6 +1342,7 @@ let gs_kiri_cam = exports; }, false); }); newLayer(); + return lastPoint; } }); break; @@ -1411,6 +1412,7 @@ let gs_kiri_cam = exports; camOut(point.clone(), pidx > 0); }, false); newLayer(); + return lastPoint; }); } else { setTool(process.finishingTool, process.finishingSpeed, process.finishingPlunge); @@ -1424,6 +1426,7 @@ let gs_kiri_cam = exports; camOut(point.clone(), pidx > 0); }, false); newLayer(); + return lastPoint; }); // deferred linear y finishing if (depthData.lineary.length > 0) @@ -1434,6 +1437,7 @@ let gs_kiri_cam = exports; camOut(point.clone(), pidx > 0); }, false); newLayer(); + return lastPoint; }); } } diff --git a/js/kiri-print.js b/js/kiri-print.js index e35fce61..52d0d73d 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -613,7 +613,9 @@ var gs_kiri_print = exports; var lp = startPoint; startPoint = tip2tipEmit(proxy, startPoint, function(el, point, count) { var poly = el.poly; - if (poly.last() === point) poly.reverse(); + if (poly.last() === point) { + poly.reverse(); + } poly.forEachPoint(function(p, i) { // retract if dist trigger and crosses a slice top polygon if (i === 0 && lp && lp.distTo2D(p) > retractDist && intersectsTop(lp,p)) { @@ -622,6 +624,7 @@ var gs_kiri_print = exports; addOutput(preout, p, i === 0 ? 0 : extrude, speed || printSpeed); lp = p; }); + return lp; }); } @@ -871,7 +874,7 @@ var gs_kiri_print = exports; if (found) { found.el.delete = true; startPoint = found.last; - emitter(found.el, found.first, ++count); + startPoint = emitter(found.el, found.first, ++count); } else { break; } @@ -892,13 +895,17 @@ var gs_kiri_print = exports; found = null; mindist = Infinity; array.forEach(function(poly) { - if (poly[marker]) return; + if (poly[marker]) { + return; + } if (poly.isOpen()) { const d2f = startPoint.distTo2D(poly.first()); - const d2l = startPoint.distTo2D(poly.first()); - if (d2f > mindist && d2l > mindist) return; + const d2l = startPoint.distTo2D(poly.last()); + if (d2f > mindist && d2l > mindist) { + return; + } if (d2l < mindist && d2l < d2f) { - // poly.reverse(); + poly.reverse(); found = {poly:poly, index:0, point:poly.first()}; } else if (d2f < mindist) { found = {poly:poly, index:0, point:poly.first()};