fix prep render bug (lastEnd) and contour camOut routing

This commit is contained in:
Stewart Allen 2020-11-15 01:01:10 -05:00
commit 42dfa27e63
3 changed files with 40 additions and 30 deletions

View file

@ -3,7 +3,8 @@
## 2.3 remaining ## 2.3 remaining
* adaptive shadow-line generation for small parts collision detection * adaptive shadow-line generation for small parts collision detection
* step down should interpolate top/bottom again * step down should interpolate top/bottom again
* preview rendering bugs for contouring * clear voids broken again
* fix contour up and over thru holes
* path arrows, retracts, and engages * path arrows, retracts, and engages
* cap path ends * cap path ends
* help dialog * help dialog

View file

@ -250,32 +250,38 @@
// new pos for plunge calc // new pos for plunge calc
deltaXY = 0; deltaXY = 0;
} }
} else } else {
// for longer moves, check the terrain to see if we need to go up and over // for longer moves, check the terrain to see if we need to go up and over
if ((deltaXY > toolDiam || (deltaZ > toolDiam && deltaXY > tolerance)) && (isMove || absDeltaZ >= tolerance)) { const bigXY = (deltaXY > toolDiam);
let maxz = getZClearPath( const bigZ = (deltaZ > toolDiam/2 && deltaXY > tolerance);
terrain, const midZ = (absDeltaZ >= tolerance);
lastPoint.x,// - wmx, if ((bigXY || bigZ) && (isMove || midZ)) {
lastPoint.y,// - wmy, let maxz = getZClearPath(
point.x,// - wmx, terrain,
point.y,// - wmy, lastPoint.x,
Math.max(point.z, lastPoint.z), lastPoint.y,
zadd, point.x,
maxToolDiam/2, point.y,
zclear Math.max(point.z, lastPoint.z),
) + ztOff, zadd,
mustGoUp = Math.max(maxz - point.z, maxz - lastPoint.z) >= tolerance, maxToolDiam/2,
clearz = maxz; zclear
// up if any point between higher than start/outline, go up ) + ztOff,
if (mustGoUp) { mustGoUp = Math.max(maxz - point.z, maxz - lastPoint.z) >= tolerance,
clearz = maxz + zclear; clearz = maxz;
layerPush(lastPoint.clone().setZ(clearz), 0, 0, tool.getNumber()); // up if any point between higher than start/outline, go up
} if (mustGoUp) {
// move to point above target point if (bigXY) {
if (mustGoUp || point.z < maxz) { clearz += zclear;
layerPush(point.clone().setZ(clearz), 0, 0, tool.getNumber()); }
// new pos for plunge calc layerPush(lastPoint.clone().setZ(clearz), 0, 0, tool.getNumber());
deltaXY = 0; }
// move to point above target point
if (mustGoUp || point.z < maxz) {
layerPush(point.clone().setZ(clearz), 0, 0, tool.getNumber());
// new pos for plunge calc
deltaXY = 0;
}
} }
} }

View file

@ -436,6 +436,7 @@
self.worker.print.thinColor = thin; self.worker.print.thinColor = thin;
self.worker.print.flatColor = flat; self.worker.print.flatColor = flat;
let lastEnd = null;
let lastOut = null; let lastOut = null;
let current = null; let current = null;
@ -462,7 +463,7 @@
let width = 1; let width = 1;
let emits = 0; let emits = 0;
level.forEach(out => { level.forEach((out,oi) => {
if (!out.point) { if (!out.point) {
// in cam mode, these are drilling or dwell ops // in cam mode, these are drilling or dwell ops
return; return;
@ -472,7 +473,7 @@
const op = out.point, lp = lastOut.point, const op = out.point, lp = lastOut.point,
moved = (op.x !== lp.x) || (op.y !== lp.y) || (op.z !== lp.z);; moved = (op.x !== lp.x) || (op.y !== lp.y) || (op.z !== lp.z);;
if (out.emit) { if (out.emit) {
if (!lastOut.emit || (ckspeed && out.speed !== lastOut.speed)) { if (!lastOut.emit || (ckspeed && out.speed !== lastOut.speed) || lastEnd) {
current = newPolygon().setOpen(); current = newPolygon().setOpen();
current.push(lastOut.point); current.push(lastOut.point);
current.color = color(out); current.color = color(out);
@ -480,13 +481,14 @@
} }
current.push(out.point); current.push(out.point);
} else { } else {
if (lastOut.emit) { if (lastOut.emit || lastEnd) {
current = newPolygon().setOpen(); current = newPolygon().setOpen();
current.push(lastOut.point); current.push(lastOut.point);
moves.push(current); moves.push(current);
} }
current.push(out.point); current.push(out.point);
} }
lastEnd = null;
} else { } else {
current = newPolygon().setOpen(); current = newPolygon().setOpen();
current.push(out.point); current.push(out.point);
@ -503,6 +505,7 @@
if (lastOut.emit && !emits) { if (lastOut.emit && !emits) {
pushPrint(lastOut.tool, current) pushPrint(lastOut.tool, current)
} }
lastEnd = lastOut;
output output
.setLayer(opts.other || 'move', moveOpt, opts.moves !== true) .setLayer(opts.other || 'move', moveOpt, opts.moves !== true)
.addPolys(moves, { thin: true, z: opts.z }); .addPolys(moves, { thin: true, z: opts.z });