diff --git a/js/kiri-driver-fdm.js b/js/kiri-driver-fdm.js index 3c5d4719..e7578a83 100644 --- a/js/kiri-driver-fdm.js +++ b/js/kiri-driver-fdm.js @@ -168,11 +168,13 @@ var gs_kiri_fdm = exports; layer = 0, mesh, meshIndex, + lastIndex, layerout, closest, mindist, minidx, find, + found, mslices, slices, sliceEntry; @@ -241,6 +243,7 @@ var gs_kiri_fdm = exports; // iterate over layer slices, find closest widget, print, eliminate for (;;) { + found = 0; closest = null; mindist = Infinity; for (meshIndex = 0; meshIndex < slices.length; meshIndex++) { @@ -252,11 +255,20 @@ var gs_kiri_fdm = exports; mindist = find.distance; minidx = meshIndex; } + found++; } if (!closest) break; slices[minidx] = null; // output seek to start point between mesh slices if previous data - printPoint = print.slicePrintPath(closest.slice, printPoint.sub(closest.offset), closest.offset, layerout, layer); + printPoint = print.slicePrintPath( + closest.slice, + printPoint.sub(closest.offset), + closest.offset, + layerout, + // wipe after last layer or between widgets + (lastIndex === minidx && slices.length > 1) || (found === 1 && layer == maxLayers-1) + ); + lastIndex = minidx; } if (layerout.length) output.append(layerout); diff --git a/js/kiri-print.js b/js/kiri-print.js index 9f6849f0..c9829aaa 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -375,7 +375,7 @@ var gs_kiri_print = exports; return; } // if (lastPoint && UTIL.round(point.x,4) == UTIL.round(lastPoint.x,4) && UTIL.round(point.y,4) == UTIL.round(lastPoint.y,4)) { - // console.log(({dup:point, last:lastPoint})); + // console.log(({dup:point, last:lastPoint, emit: emit, le: lastEmit})); // } lastPoint = point; lastEmit = emit; @@ -462,10 +462,10 @@ var gs_kiri_print = exports; * @param {Point} startPoint start as close as possible to startPoint * @param {THREE.Vector3} offset * @param {Point[]} output points - * @param {Number} layer from 0 to # of layers (slices) in model + * @param {Boolean} wipeAfter so we can wipe at the end * @return {Point} last output point */ - PRO.slicePrintPath = function(slice, startPoint, offset, output, layer) { + PRO.slicePrintPath = function(slice, startPoint, offset, output, wipeAfter) { var i, preout = [], scope = this, @@ -732,14 +732,14 @@ var gs_kiri_print = exports; return obj instanceof Polygon ? obj : obj.poly; }); - // final wipe before lowering bed - if (wipe) outputWipe(wipe); - // offset print points for (i=0; i