fix wipe between widgets and tops

This commit is contained in:
Stewart Allen 2017-12-15 16:58:39 -05:00
commit 8a04d6862f
2 changed files with 19 additions and 7 deletions

View file

@ -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);

View file

@ -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<preout.length; i++) {
preout[i].point = preout[i].point.add(offset);
}
// perform last wipe on top layer at end of run
if (wipeAfter && wipe) outputWipe(wipe);
// add offset points to total print
addPrintPoints(preout, output, origin);