improve path moves in indexed mode
This commit is contained in:
parent
905f0392f6
commit
3e36f2f9ea
4 changed files with 15 additions and 9 deletions
|
|
@ -1352,7 +1352,7 @@ CAM.init = function(kiri, api) {
|
||||||
spindle: UC.newInput(LANG.cc_spnd_s, {title:LANG.cc_spnd_l, convert:UC.toInt, show:hasSpindle}),
|
spindle: UC.newInput(LANG.cc_spnd_s, {title:LANG.cc_spnd_l, convert:UC.toInt, show:hasSpindle}),
|
||||||
rate: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, units:true}),
|
rate: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, units:true}),
|
||||||
step: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.01,10.0)}),
|
step: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.01,10.0)}),
|
||||||
angle: UC.newInput(LANG.cc_sang_s, {title:LANG.cc_sang_l, convert:UC.toFloat, bound:UC.bound(0.01,10.0)}),
|
angle: UC.newInput(LANG.cc_sang_s, {title:LANG.cc_sang_l, convert:UC.toFloat, bound:UC.bound(0.01,90.0)}),
|
||||||
tolerance: UC.newInput(LANG.ou_toll_s, {title:LANG.ou_toll_l, convert:UC.toFloat, bound:UC.bound(0,10.0), units:true, round:4}),
|
tolerance: UC.newInput(LANG.ou_toll_s, {title:LANG.ou_toll_l, convert:UC.toFloat, bound:UC.bound(0,10.0), units:true, round:4}),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ class OpRough extends CamOp {
|
||||||
let { op, state } = this;
|
let { op, state } = this;
|
||||||
let { settings, widget, slicer, addSlices, unsafe, color } = state;
|
let { settings, widget, slicer, addSlices, unsafe, color } = state;
|
||||||
let { updateToolDiams, thruHoles, tabs, cutTabs, cutPolys } = state;
|
let { updateToolDiams, thruHoles, tabs, cutTabs, cutPolys } = state;
|
||||||
let { tshadow, shadowTop, ztOff, zBottom, zMax, shadowAt } = state;
|
let { tshadow, shadowTop, ztOff, zBottom, zMax, shadowAt, isIndexed } = state;
|
||||||
let { process, stock } = settings;
|
let { process, stock } = settings;
|
||||||
|
|
||||||
if (op.down <= 0) {
|
if (op.down <= 0) {
|
||||||
|
|
@ -180,7 +180,7 @@ class OpRough extends CamOp {
|
||||||
let roughTop = op.top;
|
let roughTop = op.top;
|
||||||
let roughDown = op.down;
|
let roughDown = op.down;
|
||||||
let roughLeave = op.leave;
|
let roughLeave = op.leave;
|
||||||
let roughStock = op.all && state.isIndexed;
|
let roughStock = op.all && isIndexed;
|
||||||
let toolDiam = new CAM.Tool(settings, op.tool).fluteDiameter();
|
let toolDiam = new CAM.Tool(settings, op.tool).fluteDiameter();
|
||||||
let trueShadow = process.camTrueShadow === true;
|
let trueShadow = process.camTrueShadow === true;
|
||||||
|
|
||||||
|
|
@ -188,11 +188,15 @@ class OpRough extends CamOp {
|
||||||
if (roughTop) {
|
if (roughTop) {
|
||||||
let shadow = tshadow.clone();
|
let shadow = tshadow.clone();
|
||||||
let step = toolDiam * op.step;
|
let step = toolDiam * op.step;
|
||||||
let inset = POLY.offset(shadow, roughIn ? step : step + roughLeave + toolDiam / 2);
|
let inset = roughStock ?
|
||||||
|
POLY.offset([ newPolygon().centerRectangle(stock.center, stock.x, stock.y) ], step) :
|
||||||
|
POLY.offset(shadow, roughIn ? step : step + roughLeave + toolDiam / 2);
|
||||||
let facing = POLY.offset(inset, -step, { count: 999, flat: true });
|
let facing = POLY.offset(inset, -step, { count: 999, flat: true });
|
||||||
let zdiv = ztOff / roughDown;
|
let zdiv = ztOff / roughDown;
|
||||||
let zstep = (zdiv % 1 > 0) ? ztOff / (Math.floor(zdiv) + 1) : roughDown;
|
let zstep = (zdiv % 1 > 0) ? ztOff / (Math.floor(zdiv) + 1) : roughDown;
|
||||||
if (ztOff === 0) {
|
if (isIndexed) {
|
||||||
|
ztOff = (stock.z / 2) - zMax;
|
||||||
|
} else if (ztOff === 0) {
|
||||||
// compensate for lack of z top offset in this scenario
|
// compensate for lack of z top offset in this scenario
|
||||||
ztOff = zstep;
|
ztOff = zstep;
|
||||||
}
|
}
|
||||||
|
|
@ -308,7 +312,7 @@ class OpRough extends CamOp {
|
||||||
// shell = shadow expanded by half tool diameter + leave stock
|
// shell = shadow expanded by half tool diameter + leave stock
|
||||||
const sadd = roughIn ? toolDiam / 2 : toolDiam / 2;
|
const sadd = roughIn ? toolDiam / 2 : toolDiam / 2;
|
||||||
const shell = roughStock ?
|
const shell = roughStock ?
|
||||||
[ newPolygon().centerRectangle(stock.center, stock.x, stock.y) ] :
|
POLY.offset([ newPolygon().centerRectangle(stock.center, stock.x, stock.y) ], sadd) :
|
||||||
POLY.offset(shadow, sadd + roughLeave);
|
POLY.offset(shadow, sadd + roughLeave);
|
||||||
|
|
||||||
slices.forEach((slice, index) => {
|
slices.forEach((slice, index) => {
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ function prepEach(widget, settings, print, firstPoint, update) {
|
||||||
plungeRate = process.camFastFeedZ,
|
plungeRate = process.camFastFeedZ,
|
||||||
feedRate,
|
feedRate,
|
||||||
lastTool,
|
lastTool,
|
||||||
|
lastPush,
|
||||||
lastPoint,
|
lastPoint,
|
||||||
currentOp,
|
currentOp,
|
||||||
nextIsMove = true,
|
nextIsMove = true,
|
||||||
|
|
@ -279,6 +280,7 @@ function prepEach(widget, settings, print, firstPoint, update) {
|
||||||
} else {
|
} else {
|
||||||
print.addOutput(layerOut, point, emit, speed, tool);
|
print.addOutput(layerOut, point, emit, speed, tool);
|
||||||
}
|
}
|
||||||
|
lastPush = { point, emit, speed, tool };
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -378,7 +380,7 @@ function prepEach(widget, settings, print, firstPoint, update) {
|
||||||
}
|
}
|
||||||
// up if any point between higher than start/outline, go up first
|
// up if any point between higher than start/outline, go up first
|
||||||
if (mustGoUp || zIsBelow) {
|
if (mustGoUp || zIsBelow) {
|
||||||
const zClearance = clearz + ztOff;
|
const zClearance = clearz + (isIndexed ? 0 : ztOff);
|
||||||
if (zIsBelow) {
|
if (zIsBelow) {
|
||||||
layerPush(lastPoint.clone().setZ(zClearance), 0, 0, tool.getNumber());
|
layerPush(lastPoint.clone().setZ(zClearance), 0, 0, tool.getNumber());
|
||||||
}
|
}
|
||||||
|
|
@ -470,7 +472,7 @@ function prepEach(widget, settings, print, firstPoint, update) {
|
||||||
opSum += weight;
|
opSum += weight;
|
||||||
if (tool) {
|
if (tool) {
|
||||||
newLayer();
|
newLayer();
|
||||||
camOut(printPoint = printPoint.clone().setZ(zmax + zadd + ztOff));
|
camOut(printPoint = lastPoint.clone().setZ(zmax + zadd));
|
||||||
newLayer();
|
newLayer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -470,7 +470,7 @@ const conf = exports({
|
||||||
camRoughSpeed: 1000,
|
camRoughSpeed: 1000,
|
||||||
camRoughPlunge: 250,
|
camRoughPlunge: 250,
|
||||||
camRoughStock: 0,
|
camRoughStock: 0,
|
||||||
camRoughAll: false,
|
camRoughAll: true,
|
||||||
camRoughVoid: false,
|
camRoughVoid: false,
|
||||||
camRoughFlat: true,
|
camRoughFlat: true,
|
||||||
camRoughTop: true,
|
camRoughTop: true,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue