checkpoint belt work

This commit is contained in:
Stewart Allen 2021-01-09 11:51:46 -05:00
commit 3f0327393d
3 changed files with 35 additions and 26 deletions

View file

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

View file

@ -22,7 +22,7 @@
gcodeLayer = device.gcodeLayer, gcodeLayer = device.gcodeLayer,
gcodeTrack = device.gcodeTrack, gcodeTrack = device.gcodeTrack,
tool = 0, tool = 0,
isBelt = device.bedBelt, isBelt = false && device.bedBelt,
bedType = isBelt ? "belt" : "fixed", bedType = isBelt ? "belt" : "fixed",
extruder = extruders[tool], extruder = extruders[tool],
offset_x = extruder.extOffsetX, offset_x = extruder.extOffsetX,
@ -199,11 +199,14 @@
} }
let epos = isBelt ? { x: pos.x, y: pos.y, z: pos.z } : pos; let epos = isBelt ? { x: pos.x, y: pos.y, z: pos.z } : pos;
if (isBelt) { if (isBelt) {
let rpos = new THREE.Vector3(pos.x, pos.y, pos.z); // let rpos = new THREE.Vector3(pos.x, pos.y, pos.z);
rpos.applyAxisAngle( taxis, angle ); // rpos.applyAxisAngle( taxis, angle );
epos.x = rpos.x; // epos.x = rpos.x;
epos.y = rpos.z * icos; // epos.y = rpos.z * icos;
epos.z = rpos.y + (bcos * rpos.z); // epos.z = rpos.y + (bcos * rpos.z);
epos.x = pos.x;
epos.z = pos.z * icos;
epos.y = pos.y + epos.z * bcos;
} }
if (emit.x) o.append(" X").append(epos.x.toFixed(decimals)); if (emit.x) o.append(" X").append(epos.x.toFixed(decimals));
if (emit.y) o.append(" Y").append(epos.y.toFixed(decimals)); if (emit.y) o.append(" Y").append(epos.y.toFixed(decimals));

View file

@ -45,7 +45,8 @@
print = self.worker.print = KIRI.newPrint(settings, widgets), print = self.worker.print = KIRI.newPrint(settings, widgets),
isThin = settings.controller.lineType === "line", isThin = settings.controller.lineType === "line",
isFlat = settings.controller.lineType === "flat", isFlat = settings.controller.lineType === "flat",
isBelt = device.bedBelt; isBelt = device.bedBelt,
beltYoff = device.bedDepth / 2;
// compute bounds if missing // compute bounds if missing
if (!bounds) { if (!bounds) {
@ -297,11 +298,13 @@
let widget = mesh.widget; let widget = mesh.widget;
let mslices = widget.slices; let mslices = widget.slices;
if (mslices && mslices[layer]) { if (mslices && mslices[layer]) {
let offset = widget.track.pos || mesh.position || center; let offset = mesh.position || center;
if (isBelt) { if (isBelt) {
offset = Object.clone(offset); offset = Object.clone(center); // widget.track.pos
// offset = Object.clone(offset);
let ycomp = widget.track.pos.y - beltYoff;
offset.y = widget.rotinfo.dz; offset.y = widget.rotinfo.dz;
offset.z = widget.rotinfo.dy; // offset.z = widget.rotinfo.dy;
} }
slices.push({ slices.push({
slice: mslices[layer], slice: mslices[layer],
@ -407,6 +410,27 @@
print.output = output; print.output = output;
// if belt, adjust z and y to baselines
if (isBelt) {
let bcos = Math.cos(Math.PI/4);
let icos = 1/bcos;
let miny = Infinity, minz = Infinity;
for (let layer of output) {
for (let rec of layer) {
rec.point.z = rec.point.z * icos;
rec.point.y = rec.point.y + rec.point.z * bcos;
miny = Math.min(miny, rec.point.y);
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;
}
}
}
// render if not explicitly disabled // render if not explicitly disabled
if (render) { if (render) {
print.render = FDM.prepareRender(output, (progress, layer) => { print.render = FDM.prepareRender(output, (progress, layer) => {
@ -414,24 +438,6 @@
}, { tools: device.extruders, thin: isThin, flat: isFlat, fdm: true }); }, { tools: device.extruders, thin: isThin, flat: isFlat, fdm: true });
} }
// if belt, adjust z and y to baselines
if (isBelt) {
let miny = Infinity, minz = Infinity;
for (let layer of output) {
for (let rec of layer) {
miny = Math.min(miny, rec.point.y);
minz = Math.min(minz, rec.point.y);
}
}
console.log({miny, minz});
// for (let layer of output) {
// for (let rec of layer) {
// rec.point.y -= minz;
// rec.point.z -= miny;
// }
// }
}
return print.render; return print.render;
}; };