alternating shell order. aka pooch-o-matic

This commit is contained in:
Stewart Allen 2024-07-17 19:23:50 -06:00
commit 0589ec08c7
2 changed files with 9 additions and 3 deletions

View file

@ -809,7 +809,7 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
retractDist = opt.retractOver || (nozzleSize * 5), retractDist = opt.retractOver || (nozzleSize * 5),
fillMult = opt.mult || process.outputFillMult, fillMult = opt.mult || process.outputFillMult,
shellMult = opt.mult || process.outputShellMult || (process.ctSliceHeight >= 0 ? 1 : 0), shellMult = opt.mult || process.outputShellMult || (process.ctSliceHeight >= 0 ? 1 : 0),
shellOrder = {"out-in":-1,"in-out":1}[process.sliceShellOrder] || -1, shellOrder = {"out-in":-1,"in-out":1,"alternate":2}[process.sliceShellOrder] || -1,
sparseMult = process.outputSparseMult, sparseMult = process.outputSparseMult,
coastDist = process.outputCoastDist || 0, coastDist = process.outputCoastDist || 0,
finishSpeed = opt.speed || process.outputFinishrate, finishSpeed = opt.speed || process.outputFinishrate,
@ -841,6 +841,11 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
z = slice.z, z = slice.z,
lastPoly; lastPoly;
// support alternating shell order
if (Math.abs(shellOrder) > 1 && slice.index % 2 === 1) {
shellOrder = -shellOrder;
}
if (slice.finishSolids) { if (slice.finishSolids) {
fillSpeed = process.sliceSolidRate || finishSpeed; fillSpeed = process.sliceSolidRate || finishSpeed;
} }
@ -1458,12 +1463,12 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
// } // }
// output inner polygons // output inner polygons
if (shellOrder === 1) outputTraces(inner, { sort: shellOrder, shell: true }); if (shellOrder > 0) outputTraces(inner, { sort: shellOrder, shell: true });
outputTraces(shells, { sort: shellOrder, shell: true }); outputTraces(shells, { sort: shellOrder, shell: true });
// output outer polygons // output outer polygons
if (shellOrder === -1) outputTraces(inner, { sort: shellOrder, shell: true }); if (shellOrder < 0) outputTraces(inner, { sort: shellOrder, shell: true });
// output thin fill // output thin fill
print.setType('thin fill'); print.setType('thin fill');

View file

@ -24,6 +24,7 @@ const LISTS = {
shell: [ shell: [
{ name: "in-out" }, { name: "in-out" },
{ name: "out-in" }, { name: "out-in" },
{ name: "alternate" }
], ],
start: [ start: [
{ name: "last" }, { name: "last" },