checkpoint belt work

This commit is contained in:
Stewart Allen 2021-01-09 12:40:12 -05:00
commit 9ce62bcac8
3 changed files with 30 additions and 20 deletions

View file

@ -977,9 +977,10 @@
// rotate stack for belt beds
if (settings.device.bedBelt && WIDGETS[0].rotinfo) {
let ri = WIDGETS[0].rotinfo;
// console.log(ri)
ri.dy = ri.dz = 0;
// ri.dy = settings.device.bedDepth / 2 - ri.ypos;
// stack.obj.rotate(WIDGETS[0].rotinfo);
ri.dy = settings.device.bedDepth / 2 - ri.ypos;
stack.obj.rotate(WIDGETS[0].rotinfo);
}
segtimes[`${segNumber}_draw`] = Date.now() - startTime;
}

View file

@ -298,13 +298,14 @@
let widget = mesh.widget;
let mslices = widget.slices;
if (mslices && mslices[layer]) {
let offset = mesh.position || center;
let offset = Object.clone(mesh.position || center);
if (isBelt) {
offset = Object.clone(center); // widget.track.pos
// offset = Object.clone(offset);
let ycomp = widget.track.pos.y - beltYoff;
offset = center;
offset.y = widget.rotinfo.dz;
// offset.z = widget.rotinfo.dy;
offset.z = widget.rotinfo.ypos;
} else {
// when rafts used this is non-zero
offset.z = zoff;
}
slices.push({
slice: mslices[layer],
@ -362,7 +363,7 @@
}
layerout.height = layerout.height || closest.slice.height;
slices[minidx] = null;
closest.offset.z = zoff;
// if (!isBelt) closest.offset.z = zoff;
// detect extruder change and print purge block
if (!lastOut || lastOut.extruder !== closest.slice.extruder) {
printPoint = purge(closest.slice.extruder, track, layerout, printPoint, closest.slice.z);
@ -411,7 +412,7 @@
print.output = output;
// if belt, adjust z and y to baselines
if (isBelt) {
function beltSkew() {
let bcos = Math.cos(Math.PI/4);
let icos = 1/bcos;
let miny = Infinity, minz = Infinity;
@ -423,10 +424,13 @@
minz = Math.min(minz, rec.point.y);
}
}
for (let layer of output) {
for (let rec of layer) {
rec.point.y -= minz;
rec.point.z -= miny;
if (miny || minz) {
console.log({miny, minz})
for (let layer of output) {
for (let rec of layer) {
rec.point.y -= minz;
rec.point.z -= miny;
}
}
}
}
@ -438,6 +442,10 @@
}, { tools: device.extruders, thin: isThin, flat: isFlat, fdm: true });
}
if (isBelt) {
beltSkew();
}
return print.render;
};

View file

@ -59,6 +59,7 @@
let render = settings.render !== false,
spro = settings.process,
sdev = settings.device,
isBelt = sdev.bedBelt,
update_start = Date.now(),
minSolid = spro.sliceSolidMinArea,
solidLayers = spro.sliceSolidLayers,
@ -67,6 +68,7 @@
metadata = settings.widget[widget.id] || {},
extruder = metadata.extruder || 0,
sliceHeight = spro.sliceHeight,
firstSliceHeight = isBelt ? sliceHeight : spro.firstSliceHeight,
nozzleSize = sdev.extruders[extruder].extNozzle,
firstOffset = nozzleSize / 2,
shellOffset = nozzleSize,
@ -74,8 +76,7 @@
fillSpacing = nozzleSize,
fillOffset = nozzleSize * fillOffsetMult,
sliceFillAngle = spro.sliceFillAngle,
view = widget.mesh && widget.mesh.newGroup ? widget.mesh.newGroup() : null,
isBelt = sdev.bedBelt;
view = widget.mesh && widget.mesh.newGroup ? widget.mesh.newGroup() : null;
isFlat = settings.controller.lineType === "flat";
isThin = !isFlat && settings.controller.lineType === "line";
@ -104,17 +105,17 @@
return ondone("invalid nozzle size");
}
if (spro.firstSliceHeight === 0) {
spro.firstSliceHeight = sliceHeight;
if (firstSliceHeight === 0) {
firstSliceHeight = sliceHeight;
}
const sliceMinHeight = spro.sliceAdaptive && spro.sliceMinHeight > 0 ?
Math.min(spro.sliceMinHeight, sliceHeight) : 0;
if (spro.firstSliceHeight < sliceHeight) {
if (firstSliceHeight < sliceHeight) {
DBUG.log("invalid first layer height < slice height");
DBUG.log("reverting to min valid slice height");
spro.firstSliceHeight = sliceMinHeight || sliceHeight;
firstSliceHeight = sliceMinHeight || sliceHeight;
}
// const slicer = new KIRI.slicer2(widget.getPoints(), { });
@ -142,7 +143,7 @@
SLICER.sliceWidget(widget, {
height: sliceHeight,
minHeight: sliceMinHeight,
firstHeight: isBelt ? 0 : spro.firstSliceHeight,
firstHeight: firstSliceHeight,
// debug: true,
// xray: 3,
// view: view