checkpoint belt multi-extruder work

This commit is contained in:
Stewart Allen 2021-11-15 22:07:02 -05:00
commit 270437f0f2

View file

@ -229,6 +229,7 @@
let lastPoly; let lastPoly;
let lastLayer; let lastLayer;
let lastOffset;
let extruders = print.extruders = []; let extruders = print.extruders = [];
let extcount = 0; let extcount = 0;
@ -248,7 +249,7 @@
let stepw = blokw + nozzle / 2; let stepw = blokw + nozzle / 2;
let blokpos, walkpos, blok; let blokpos, walkpos, blok;
if (bounds.min.x < bounds.min.y) { if (bounds.min.x < bounds.min.y && !isBelt) {
let mx = (bounds.max.x + bounds.min.x) / 2; let mx = (bounds.max.x + bounds.min.x) / 2;
let px = mx - (extcount * blokw) / 2 + (blokw / 2); let px = mx - (extcount * blokw) / 2 + (blokw / 2);
let dx = ((bounds.max.x - bounds.min.x) - (extcount * blokw)) / 2; let dx = ((bounds.max.x - bounds.min.x) - (extcount * blokw)) / 2;
@ -257,8 +258,9 @@
blok = { x:blokw, y:blokh }; blok = { x:blokw, y:blokh };
} else { } else {
let my = (bounds.max.y + bounds.min.y) / 2; let my = (bounds.max.y + bounds.min.y) / 2;
let py = my - (extcount * blokw) / 2 + (blokw / 2); let mp = (extcount * blokw) / 2 + (blokw / 2);
blokpos = { x:bounds.max.x + 2 + blokh / 2, y:py}; let py = my - mp;
blokpos = { x:bounds.max.x + 2 + blokh / 2, y:isBelt ? -mp : py};
walkpos = { x:0, y:stepw }; walkpos = { x:0, y:stepw };
blok = { x:blokh, y:blokw }; blok = { x:blokh, y:blokw };
} }
@ -306,8 +308,8 @@
let lastPurgeTool; let lastPurgeTool;
// generate purge block for given nozzle // generate purge block for given nozzle
function purge(nozzle, track, layer, start, z, using) { function purge(nozzle, track, layer, start, z, using, offset) {
if (!purgeTower || extcount < 2 || isBelt) { if (!purgeTower || extcount < 2) {
return start; return start;
} }
let rec = track[nozzle]; let rec = track[nozzle];
@ -321,14 +323,24 @@
if (layer.last()) { if (layer.last()) {
layer.last().retract = true; layer.last().retract = true;
} }
start = print.polyPrintPath(rec.rect.clone().setZ(z), start, layer, { let purgeOn = first || !thin;
let box = rec.rect.clone().setZ(z);
let fill = (purgeOn ? rec.full : rec.sparse).clone().setZ(z);
if (isBelt) {
box.move({x:0, y:z, z:0});
fill.move({x:0, y:z, z:0});
if (offset) {
box.move(offset);
fill.move(offset);
}
}
start = print.polyPrintPath(box, start, layer, {
tool, tool,
rate, rate,
simple: true, simple: true,
open: false, open: false,
}); });
let purgeOn = first || !thin; start = print.polyPrintPath(fill, start, layer, {
start = print.polyPrintPath((purgeOn ? rec.full : rec.sparse).clone().setZ(z), start, layer, {
tool, tool,
rate, rate,
simple: true, simple: true,
@ -401,7 +413,7 @@
if (slice.prep) { if (slice.prep) {
continue; continue;
} }
let offset = slice.widget.offset; let offset = lastOffset = slice.widget.offset;
let find = slice.findClosestPointTo(printPoint.sub(offset)); let find = slice.findClosestPointTo(printPoint.sub(offset));
if (find) { if (find) {
let ext = slice.extruder; let ext = slice.extruder;
@ -435,7 +447,7 @@
layerout.anchor = slice.belt && slice.belt.anchor; layerout.anchor = slice.belt && slice.belt.anchor;
// detect extruder change and print purge block // detect extruder change and print purge block
if (!lastOut || lastOut.extruder !== slice.extruder) { if (!lastOut || lastOut.extruder !== slice.extruder) {
printPoint = purge(slice.extruder, track, layerout, printPoint, slice.z); printPoint = purge(slice.extruder, track, layerout, printPoint, slice.z, undefined, offset);
} }
let wtb = slice.widget.track.box; let wtb = slice.widget.track.box;
// output seek to start point between mesh slices if previous data // output seek to start point between mesh slices if previous data
@ -490,7 +502,7 @@
// extruder to fill the relevant purge blocks for later support // extruder to fill the relevant purge blocks for later support
track.forEach(ext => { track.forEach(ext => {
if (ext && lastOut) { if (ext && lastOut) {
printPoint = purge(ext.extruder, track, layerout, printPoint, lastOut.z, lastExt); printPoint = purge(ext.extruder, track, layerout, printPoint, lastOut.z, lastExt, lastOffset);
} }
}); });