checkpoint belt multi-extruder work
This commit is contained in:
parent
2668d7c06e
commit
270437f0f2
1 changed files with 23 additions and 11 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue