checkpoint belt work

This commit is contained in:
Stewart Allen 2021-01-08 23:44:26 -05:00
commit 8798d060ac
6 changed files with 43 additions and 32 deletions

View file

@ -857,7 +857,7 @@
segtimes[`${segNumber}_draw`] = widget.render(stack);
// rotate stack for belt beds
if (settings.device.bedBelt && widget.rotinfo) {
STACKS.rotate(widget.rotinfo);
stack.obj.rotate(widget.rotinfo);
}
updateSliderMax(true);
setVisibleLayer(-1, 0);
@ -977,9 +977,9 @@
// 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;
STACKS.rotate(WIDGETS[0].rotinfo);
ri.dy = settings.device.bedDepth / 2 - ri.ypos;
stack.obj.rotate(WIDGETS[0].rotinfo);
}
segtimes[`${segNumber}_draw`] = Date.now() - startTime;
}
@ -1685,7 +1685,8 @@
}
if (isBelt) {
let bounds = platformUpdateBounds(), movey = -(dev.bedDepth / 2 + bounds.min.y);
let bounds = platformUpdateBounds(),
movey = -(dev.bedDepth / 2 + bounds.min.y);
forAllWidgets(widget => widget.move(0, movey + 10, 0));
}

View file

@ -288,15 +288,15 @@
});
// recenter for visualization
if (morph && belt) {
for (let layer of output) {
for (let rec of layer) {
let point = rec.point;
point.y -= bounds.min.z;
point.z += bounds.min.y;
}
}
}
// if (false && morph && belt) {
// for (let layer of output) {
// for (let rec of layer) {
// let point = rec.point;
// point.y -= bounds.min.z;
// point.z += bounds.min.y;
// }
// }
// }
scope.imported = gcode;
scope.lines = lines.length;

View file

@ -66,18 +66,22 @@ KIRI.worker = {
let widget = cache[data.id],
last = time(),
ypos,
now;
try {
let rotation = (Math.PI/180) * (settings.device.bedBelt ? 45 : 0);
if (rotation) {
let track = widget.track;
ypos = track.pos.y + settings.device.bedDepth / 2 - track.box.h / 2;
widget.mesh = null;
widget.points = null;
widget.loadVertices(widget.vertices);
widget._rotate(rotation,0,0,true);
widget.center(false, true);
widget.getBoundingBox(true);
widget.belt = { ypos };
}
widget.slice(settings, function(error) {
@ -102,7 +106,7 @@ KIRI.worker = {
let wbb = widget.getBoundingBox(true);
let dy = (wbb.max.y + wbb.min.y)/2;
let dz = wbb.min.z;
widget.rotinfo = { angle: 45, dy, dz };
widget.rotinfo = { angle: 45, dy, dz, ypos };
send.data({ rotinfo: widget.rotinfo });
}
}

View file

@ -22,7 +22,7 @@
gcodeLayer = device.gcodeLayer,
gcodeTrack = device.gcodeTrack,
tool = 0,
isBelt = device.bedBelt || false,
isBelt = device.bedBelt,
bedType = isBelt ? "belt" : "fixed",
extruder = extruders[tool],
offset_x = extruder.extOffsetX,

View file

@ -297,10 +297,11 @@
let widget = mesh.widget;
let mslices = widget.slices;
if (mslices && mslices[layer]) {
let offset = mesh.position || center;
let offset = widget.track.pos || mesh.position || center;
if (isBelt) {
offset = Object.clone(offset);
offset.y -= widget.belt_offset || 0;
offset.y = widget.rotinfo.dz;
offset.z = widget.rotinfo.dy;
}
slices.push({
slice: mslices[layer],
@ -406,8 +407,15 @@
print.output = output;
// render if not explicitly disabled
if (render) {
print.render = FDM.prepareRender(output, (progress, layer) => {
update(0.5 + progress * 0.5, "render", layer);
}, { tools: device.extruders, thin: isThin, flat: isFlat, fdm: true });
}
// if belt, adjust z and y to baselines
if (false && isBelt) {
if (isBelt) {
let miny = Infinity, minz = Infinity;
for (let layer of output) {
for (let rec of layer) {
@ -416,21 +424,15 @@
}
}
console.log({miny, minz});
for (let layer of output) {
for (let rec of layer) {
// for (let layer of output) {
// for (let rec of layer) {
// rec.point.y -= minz;
// rec.point.z -= miny;
}
}
// }
// }
}
// render if not explicitly disabled
if (render) {
print.render = FDM.prepareRender(output, (progress, layer) => {
update(0.5 + progress * 0.5, "render", layer);
}, { tools: device.extruders, thin: isThin, flat: isFlat, fdm: true });
return print.render;
}
};
class Counter {

View file

@ -272,7 +272,11 @@
for (let top of slices[0].tops) {
bounds.merge(top.poly.bounds);
}
widget.belt_offset = bounds.miny;
widget.belt = {
offset_y: bounds.miny,
pos_y: sdev.bedDepth / 2 + widget.track.pos.y,
ypos: widget.belt.ypos
};
}
// report slicing complete