fix output order for slices with shells touching the belt

This commit is contained in:
Stewart Allen 2021-02-16 22:01:10 -05:00
commit 8be93cb3c9
4 changed files with 21 additions and 17 deletions

View file

@ -71,11 +71,11 @@
"sliceMinHeight": 0, "sliceMinHeight": 0,
"sliceSupportDensity": 0.25, "sliceSupportDensity": 0.25,
"sliceSupportOffset": 0.4, "sliceSupportOffset": 0.4,
"sliceSupportGap": 1, "sliceSupportGap": 0,
"sliceSupportSize": 6, "sliceSupportSize": 6,
"sliceSupportArea": 0.5, "sliceSupportArea": 0.25,
"sliceSupportExtra": 0, "sliceSupportExtra": 0,
"sliceSupportAngle": 2, "sliceSupportAngle": 1,
"sliceSupportNozzle": 0, "sliceSupportNozzle": 0,
"sliceSolidMinArea": 10, "sliceSolidMinArea": 10,
"sliceSolidLayers": 3, "sliceSolidLayers": 3,
@ -85,10 +85,12 @@
"firstLayerPrintMult": 1.15, "firstLayerPrintMult": 1.15,
"firstLayerYOffset": 0, "firstLayerYOffset": 0,
"firstLayerBrim": 0, "firstLayerBrim": 0,
"firstLayerBeltLead": 3, "firstLayerBeltLead": 0,
"firstLayerFanSpeed": 0,
"outputTemp": 210, "outputTemp": 210,
"outputFanMax": 255, "outputFanMax": 255,
"outputBedTemp": 60, "outputBedTemp": 60,
"outputFanSpeed": 255,
"outputFeedrate": 50, "outputFeedrate": 50,
"outputFinishrate": 50, "outputFinishrate": 50,
"outputSeekrate": 80, "outputSeekrate": 80,
@ -96,14 +98,15 @@
"outputFillMult": 1.25, "outputFillMult": 1.25,
"outputSparseMult": 1.25, "outputSparseMult": 1.25,
"outputFanLayer": 0, "outputFanLayer": 0,
"outputRetractDist": 4, "outputRetractDist": 4.5,
"outputRetractSpeed": 30, "outputRetractSpeed": 50,
"outputRetractDwell": 30, "outputRetractWipe": 1,
"outputShortPoly": 100.0, "outputRetractDwell": 25,
"outputShortPoly": 60.0,
"outputMinSpeed": 10.0, "outputMinSpeed": 10.0,
"outputCoastDist": 0.1, "outputCoastDist": 0.1,
"outputWipeDistance": 0, "outputWipeDistance": 1,
"outputLayerRetract": true, "outputLayerRetract": false,
"detectThinWalls": true, "detectThinWalls": true,
"zHopDistance": 0, "zHopDistance": 0,
"antiBacklash": 0 "antiBacklash": 0

View file

@ -845,7 +845,7 @@
// and enforce optimal shell order (outer first) // and enforce optimal shell order (outer first)
if (isBelt && opt.onBelt) { if (isBelt && opt.onBelt) {
startPoint = startClone; startPoint = startClone;
shellOrder = 1; shellOrder = -1;
} }
// top object // top object

View file

@ -314,10 +314,11 @@
} }
} }
} }
// todo remove b/c this is now calculated at slice time
// flag slices as being on or off the bed / belt // flag slices as being on or off the bed / belt
for (let slice of widget.slices) { // for (let slice of widget.slices) {
slice.onbelt = Math.abs(minby - slice.minby) < 0.01; // slice.onbelt = Math.abs(minby - slice.minby) < 0.01;
} // }
} else { } else {
// when rafts used this is non-zero // when rafts used this is non-zero
offset.z = zoff; offset.z = zoff;
@ -410,7 +411,7 @@
params, // range parameters params, // range parameters
first: slice.index === 0, first: slice.index === 0,
support: slice.widget.support, support: slice.widget.support,
onBelt: slice.onbelt, onBelt: slice.belt.touch,
pretract: (wipeDist) => { pretract: (wipeDist) => {
if (lastLayer && lastLayer.length) { if (lastLayer && lastLayer.length) {
let lastOut = lastLayer.last(); let lastOut = lastLayer.last();

View file

@ -299,7 +299,7 @@
}, "offsets"); }, "offsets");
// add lead in when specified in belt mode // add lead in when specified in belt mode
if (!isSynth && isBelt && spro.firstLayerBeltLead) { if (!isSynth && isBelt) {
let wb = widget.bounds; let wb = widget.bounds;
// find adjusted zero point from slices // find adjusted zero point from slices
let smin = Infinity; let smin = Infinity;
@ -336,7 +336,7 @@
while (start.up && start.topShells().length === 0) { while (start.up && start.topShells().length === 0) {
start = start.up; start = start.up;
} }
while (start && offset >= sliceHeight) { while (offset && start && offset >= sliceHeight) {
let addto = start.down; let addto = start.down;
if (!addto) { if (!addto) {
addto = newSlice(start.z - sliceHeight); addto = newSlice(start.z - sliceHeight);