From d9e5f2d4f8fdaf46e7ef7fe1dc03c0915f1c5aaa Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 28 Dec 2022 17:45:27 -0500 Subject: [PATCH] add cut thru option to trace --- notes.md | 1 + src/kiri-mode/cam/client.js | 2 ++ src/kiri-mode/cam/ops.js | 6 +++--- src/kiri/conf.js | 1 + web/kiri/lang/en.js | 2 ++ 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/notes.md b/notes.md index 7b8ca9c5..294b2641 100644 --- a/notes.md +++ b/notes.md @@ -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 diff --git a/src/kiri-mode/cam/client.js b/src/kiri-mode/cam/client.js index a8326a49..2778394e 100644 --- a/src/kiri-mode/cam/client.js +++ b/src/kiri-mode/cam/client.js @@ -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 }), diff --git a/src/kiri-mode/cam/ops.js b/src/kiri-mode/cam/ops.js index 790d598d..e5fee021 100644 --- a/src/kiri-mode/cam/ops.js +++ b/src/kiri-mode/cam/ops.js @@ -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; } diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 87eddb04..a359505c 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -501,6 +501,7 @@ const conf = exports({ camTraceType: "follow", camTraceOver: 0.5, camTraceDown: 0, + camTraceThru: 0, camTraceSpeed: 250, camTracePlunge: 200, camTraceLines: false, diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 635e0f13..9909b99b 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -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",