add cut thru option to trace

This commit is contained in:
Stewart Allen 2022-12-28 17:45:27 -05:00
commit d9e5f2d4f8
5 changed files with 9 additions and 3 deletions

View file

@ -68,6 +68,7 @@
# CAM
* `B` feed rate for next tool set before tool change (push/pop feed rates?)
* `B` tab cuts cause loss of direction, parenting, depth, and it's hard to fix
* `B` tabs do not properly track widget mirror events
* `B` tabs are not cut to exact height

View file

@ -1301,6 +1301,7 @@ CAM.init = function(kiri, api) {
tool: 'camTraceTool',
step: 'camTraceOver',
down: 'camTraceDown',
thru: 'camTraceThru',
rate: 'camTraceSpeed',
plunge: 'camTracePlunge',
bottom: 'camTraceBottom',
@ -1314,6 +1315,7 @@ CAM.init = function(kiri, api) {
spindle: UC.newInput(LANG.cc_spnd_s, {title:LANG.cc_spnd_l, convert:UC.toInt, show:hasSpindle}),
step: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.01,1.0), show:(op) => popOp.trace.rec.mode === "clear"}),
down: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, units:true}),
thru: UC.newInput(LANG.cc_thru_s, {title:LANG.cc_thru_l, convert:UC.toFloat, units:true}),
rate: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, units:true}),
plunge: UC.newInput(LANG.cc_plng_s, {title:LANG.cc_plng_l, convert:UC.toInt, units:true}),
sep: UC.newBlank({class:"pop-sep", modes:MCAM, show:zBottom, poop:true }),

View file

@ -818,7 +818,7 @@ class OpTrace extends CamOp {
slice(progress) {
let { op, state } = this;
let { tool, rate, down, plunge, offset } = op;
let { tool, rate, down, plunge, offset, thru } = op;
let { settings, widget, addSlices, zMax, zTop, zThru, tabs } = state;
let { updateToolDiams, cutTabs, cutPolys, healPolys, color } = state;
let { process, stock } = settings;
@ -973,7 +973,7 @@ class OpTrace extends CamOp {
}
for (let pi of poly)
if (down) {
let zto = pi.getZ();
let zto = pi.getZ() - thru;
if (zThru && similar(zto,0)) {
zto -= zThru;
}
@ -989,7 +989,7 @@ class OpTrace extends CamOp {
const zbo = widget.track.top - widget.track.box.d;
let zmap = {};
for (let poly of polys) {
let z = poly.getZ();
let z = poly.getZ() - thru;
if (op.bottom && camZBottom) {
z = Math.max(z, camZBottom) - zbo;
}

View file

@ -501,6 +501,7 @@ const conf = exports({
camTraceType: "follow",
camTraceOver: 0.5,
camTraceDown: 0,
camTraceThru: 0,
camTraceSpeed: 250,
camTracePlunge: 200,
camTraceLines: false,

View file

@ -446,6 +446,8 @@ self.kiri.lang['en-us'] = {
cc_sovr_l: ["a fraction of tool diameter between 0 and 1. values greater than 0.5 may result in uncut areas from acute angle offsets."],
cc_sdwn_s: "step down",
cc_sdwn_l: ["step down depth","for each pass","in workspace units","0 to disable"],
cc_thru_s: "cut thru",
cc_thru_l: ["additional cut depth below trace bottom"],
cc_feed_s: "feed rate",
cc_feed_l: ["max cutting speed in","workspace units / minute"],
cc_plng_s: "plunge rate",