move inverleave logic until the end to eliminate solid layer errors
This commit is contained in:
parent
b374084414
commit
3e51322255
1 changed files with 46 additions and 46 deletions
|
|
@ -387,52 +387,6 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
}
|
}
|
||||||
}).reverse();
|
}).reverse();
|
||||||
|
|
||||||
if (isBrick) {
|
|
||||||
let indices = slices.map(s => s.index);
|
|
||||||
let first = indices[1];
|
|
||||||
let last = indices[indices.length - 2];
|
|
||||||
let nu = [];
|
|
||||||
for (let slice of slices) {
|
|
||||||
if (slice.index < first || slice.index > last) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
let nuSlice = slice.clone();
|
|
||||||
nuSlice.z -= slice.height / 2;
|
|
||||||
if (slice.index === first) {
|
|
||||||
nuSlice.z = slice.z - slice.height / 4;
|
|
||||||
nuSlice.height = slice.height / 2;
|
|
||||||
} else {
|
|
||||||
nuSlice.height = slice.height;
|
|
||||||
}
|
|
||||||
nu.push(nuSlice);
|
|
||||||
let ti = 0;
|
|
||||||
for (let top of slice.tops) {
|
|
||||||
let nuTop = nuSlice.tops[ti++];
|
|
||||||
nuTop.shells = [];
|
|
||||||
top.shells = top.shells.filter((s,i) => {
|
|
||||||
if (i % 2 === 0) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
nuTop.shells.push(s);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (slice.index === last) {
|
|
||||||
let cap = nuSlice.clone();
|
|
||||||
cap.z += (slice.height * 0.75);
|
|
||||||
cap.height = (slice.height / 2);
|
|
||||||
nu.push(cap);
|
|
||||||
cap.tops.forEach((top, i) => {
|
|
||||||
top.shells = nuSlice.tops[i].shells.clone();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
slices.appendAll(nu);
|
|
||||||
slices.sort((a,b) => a.z - b.z);
|
|
||||||
slices.forEach((s,i) => s.index = i);
|
|
||||||
}
|
|
||||||
|
|
||||||
// connect slices into linked list for island/bridge projections
|
// connect slices into linked list for island/bridge projections
|
||||||
for (let i=1; i<slices.length; i++) {
|
for (let i=1; i<slices.length; i++) {
|
||||||
slices[i-1].up = slices[i];
|
slices[i-1].up = slices[i];
|
||||||
|
|
@ -904,6 +858,52 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
profileEnd();
|
profileEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isBrick) {
|
||||||
|
let indices = slices.map(s => s.index);
|
||||||
|
let first = indices[1];
|
||||||
|
let last = indices[indices.length - 2];
|
||||||
|
let nu = [];
|
||||||
|
for (let slice of slices) {
|
||||||
|
if (slice.index < first || slice.index > last) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let nuSlice = slice.clone();
|
||||||
|
nuSlice.z -= slice.height / 2;
|
||||||
|
if (slice.index === first) {
|
||||||
|
nuSlice.z = slice.z - slice.height / 4;
|
||||||
|
nuSlice.height = slice.height / 2;
|
||||||
|
} else {
|
||||||
|
nuSlice.height = slice.height;
|
||||||
|
}
|
||||||
|
nu.push(nuSlice);
|
||||||
|
let ti = 0;
|
||||||
|
for (let top of slice.tops) {
|
||||||
|
let nuTop = nuSlice.tops[ti++];
|
||||||
|
nuTop.shells = [];
|
||||||
|
top.shells = top.shells.filter((s,i) => {
|
||||||
|
if (i % 2 === 0) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
nuTop.shells.push(s);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (slice.index === last) {
|
||||||
|
let cap = nuSlice.clone();
|
||||||
|
cap.z += (slice.height * 0.75);
|
||||||
|
cap.height = (slice.height / 2);
|
||||||
|
nu.push(cap);
|
||||||
|
cap.tops.forEach((top, i) => {
|
||||||
|
top.shells = nuSlice.tops[i].shells.clone();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
slices.appendAll(nu);
|
||||||
|
slices.sort((a,b) => a.z - b.z);
|
||||||
|
slices.forEach((s,i) => s.index = i);
|
||||||
|
}
|
||||||
|
|
||||||
// render if not explicitly disabled
|
// render if not explicitly disabled
|
||||||
if (render) {
|
if (render) {
|
||||||
forSlices(0.9, 1.0, slice => {
|
forSlices(0.9, 1.0, slice => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue