From 3a7922d1d3c9e06aaac4cb4d543977672ad56feb Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 23 Feb 2021 01:10:57 -0500 Subject: [PATCH] add option to select single lines instead of polylines for traces --- src/kiri/conf.js | 1 + src/mode/cam/client.js | 6 ++++-- src/mode/cam/driver.js | 8 ++++---- src/mode/cam/slice.js | 13 ++++++++++--- web/kiri/lang/en.js | 2 ++ 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 6499fb5a..31223651 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -465,6 +465,7 @@ camTraceDown: 0, camTraceSpeed: 250, camTracePlunge: 200, + camTraceLines: false, camDrillTool: 1000, camDrillSpindle: 1000, camDrillDownSpeed: 250, diff --git a/src/mode/cam/client.js b/src/mode/cam/client.js index 84e24f68..f7f6b10e 100644 --- a/src/mode/cam/client.js +++ b/src/mode/cam/client.js @@ -578,7 +578,7 @@ } }); }); - }); + }, poppedRec.single); api.feature.hover = true; api.feature.hoverAdds = true; func.hover = func.traceHover; @@ -867,7 +867,8 @@ step: 'camTraceOver', down: 'camTraceDown', rate: 'camTraceSpeed', - plunge: 'camTracePlunge' + plunge: 'camTracePlunge', + single: 'camTraceLines', }).inputs = { tool: UC.newSelect(LANG.cc_tool, {}, "tools"), sep: UC.newBlank({class:"pop-sep"}), @@ -879,6 +880,7 @@ 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"}), + single: UC.newBoolean(LANG.cc_sngl_s, undefined, {title:LANG.cc_sngl_l}), select: UC.newRow([ UC.newButton(undefined, func.traceAdd, {icon:''}), UC.newButton(undefined, func.traceDone, {icon:''}), diff --git a/src/mode/cam/driver.js b/src/mode/cam/driver.js index 27560cbe..6629f311 100644 --- a/src/mode/cam/driver.js +++ b/src/mode/cam/driver.js @@ -25,11 +25,11 @@ KIRI.loader.push(function(API) { if (KIRI.client) - CAM.traces = function(ondone) { + CAM.traces = function(ondone, single) { KIRI.client.sync(); let settings = API.conf.get(); let widgets = API.widgets.map(); - KIRI.client.send("cam_traces", { settings }, output => { + KIRI.client.send("cam_traces", { settings, single }, output => { let ids = []; KIRI.codec.decode(output).forEach(rec => { ids.push(rec.id); @@ -41,9 +41,9 @@ if (KIRI.worker) KIRI.worker.cam_traces = function(data, send) { - const { settings } = data; + const { settings, single } = data; const widgets = Object.values(wcache); - const fresh = widgets.filter(widget => CAM.traces(settings, widget)); + const fresh = widgets.filter(widget => CAM.traces(settings, widget, single)); send.done(KIRI.codec.encode(fresh.map(widget => { return { id: widget.id, traces: widget.traces, diff --git a/src/mode/cam/slice.js b/src/mode/cam/slice.js index 25e1ee25..4a8600db 100644 --- a/src/mode/cam/slice.js +++ b/src/mode/cam/slice.js @@ -221,8 +221,8 @@ } }; - CAM.traces = function(settings, widget) { - if (widget.traces) { + CAM.traces = function(settings, widget, single) { + if (widget.traces && widget.trace_single === single) { // do no work if cached return false; } @@ -257,7 +257,13 @@ return; } } - traces.push(poly); + if (single) { + poly.forEachSegment((p1, p2) => { + traces.push(newPolygon().append(p1).append(p2).setOpen()); + }, poly.open); + } else { + traces.push(poly); + } }); }; let opts = { each: oneach, over: false, flatoff: 0, edges: true, openok: true }; @@ -265,6 +271,7 @@ opts.over = true; slicer.slice(indices, opts); widget.traces = traces; + widget.trace_single = single; return true; }; diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 632b8a26..68714f46 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -357,6 +357,8 @@ kiri.lang['en-us'] = { cc_feed_l: ["max cutting speed in","workspace units / minute"], cc_plng_s: "plunge rate", cc_plng_l: ["max z axis speed in","workspace units / minute"], + cc_sngl_s: "select lines only", + cc_sngl_l: ["select only single edges","instead of connected polylines"], // CNC COMMON cc_menu: "limits",