From 6a429d9598ce19dcedfaaec3f10624076aa98633 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 23 Feb 2021 16:40:49 -0500 Subject: [PATCH 1/5] limit omitthru to outside only. catch and report step down of 0 or less --- src/mode/cam/ops.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mode/cam/ops.js b/src/mode/cam/ops.js index 69434c45..f43667d7 100644 --- a/src/mode/cam/ops.js +++ b/src/mode/cam/ops.js @@ -109,6 +109,10 @@ let { tshadow, shadowTop, ztOff, zBottom, zMax } = state; let { process, stock } = settings; + if (op.down <= 0) { + throw `invalid step down "${op.down}"`; + } + let roughIn = op.inside; let roughTop = op.top; let roughDown = op.down; @@ -390,6 +394,10 @@ let { updateToolDiams, zThru, zBottom, shadowTop, tabs, cutTabs, cutPolys } = state; let { process, stock } = settings; + if (op.down <= 0) { + throw `invalid step down "${op.down}"`; + } + let toolDiam = this.toolDiam = new CAM.Tool(settings, op.tool).fluteDiameter(); updateToolDiams(toolDiam); @@ -453,7 +461,7 @@ tops = tshadow; } - if (op.omitthru) { + if (op.outside && op.omitthru) { // eliminate thru holes from shadow for (let hole of thruHoles) { for (let top of tops) { From f4b8a8b5d296dd763d128aa38b9b3a235f2b469c Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 23 Feb 2021 21:18:10 -0500 Subject: [PATCH 2/5] bump rev 2.7.D12 --- package.json | 2 +- src/kiri.js | 2 +- src/license.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index feb155a5..b0960d4e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grid-apps", - "version": "2.7.11D", + "version": "2.7.12D", "description": "grid.space 3d slice & modeling tools", "author": "Stewart Allen ", "license": "MIT", diff --git a/src/kiri.js b/src/kiri.js index 968acbf1..dd11b4ce 100644 --- a/src/kiri.js +++ b/src/kiri.js @@ -6,7 +6,7 @@ if (!self.kiri) { self.kiri = { - beta: 2711, + beta: 2712, driver: {}, // driver modules loader: [] // module loading: array of functions }; diff --git a/src/license.js b/src/license.js index a18edf41..550b0e42 100644 --- a/src/license.js +++ b/src/license.js @@ -3,7 +3,7 @@ let terms = { COPYRIGHT: "Copyright (C) Stewart Allen - All Rights Reserved", LICENSE: "See the license.md file included with the source distribution", - VERSION: "2.7.D11" + VERSION: "2.7.D12" }; if (typeof(module) === 'object') { From 3d993e99d03891e4fcd1b7b9d31c285fe05c0897 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 24 Feb 2021 04:22:10 -0500 Subject: [PATCH 3/5] fixes #109 Uncaught TypeError --- src/mode/fdm/prepare.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mode/fdm/prepare.js b/src/mode/fdm/prepare.js index be1c7c07..8db5507c 100644 --- a/src/mode/fdm/prepare.js +++ b/src/mode/fdm/prepare.js @@ -68,7 +68,7 @@ offset = process.outputBrimOffset || (process.outputRaft ? 4 : 0); // compute first brim - widgets.forEach(function(widget) { + widgets.filter(w => w.slices.length).forEach(function(widget) { let tops = []; // collect top outer polygons widget.slices[0].tops.forEach(function(top) { From 5bb6e6e905b2b911d3cfd76f9a04527131590aa9 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 24 Feb 2021 10:40:00 -0500 Subject: [PATCH 4/5] disable purge blocks in belt mode --- src/mode/fdm/prepare.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mode/fdm/prepare.js b/src/mode/fdm/prepare.js index 8db5507c..32db121e 100644 --- a/src/mode/fdm/prepare.js +++ b/src/mode/fdm/prepare.js @@ -267,7 +267,7 @@ // generate purge block for given nozzle function purge(nozzle, track, layer, start, z, using) { - if (extcount < 2) { + if (extcount < 2 || isBelt) { return start; } let rec = track[nozzle]; From 18fded64dbb899cb7d4ee8fd07e6d7e38999e16e Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 24 Feb 2021 11:09:02 -0500 Subject: [PATCH 5/5] clean up work cancellation --- src/kiri/client.js | 31 ++++++++++++++++++++----------- src/kiri/init.js | 3 ++- src/kiri/main.js | 4 +++- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/kiri/client.js b/src/kiri/client.js index 116f7143..27ed2c91 100644 --- a/src/kiri/client.js +++ b/src/kiri/client.js @@ -14,8 +14,8 @@ let KIRI = self.kiri = self.kiri || {}, seqid = 1, syncd = {}, running = {}, - slicing = {}, - worker = null + worker = null, + restarting = false // occ = new Worker("/kiri/ext/occ-worker.js", {type:"module"}), ; @@ -57,25 +57,34 @@ KIRI.work = { } }, - isSlicing: function() { + isBusy: function() { let current = 0; - for (let key in slicing) { - current++; + for (let rec of Object.values(running)) { + if (rec.fn) current++; } return current > 0; }, restart: function() { + // prevent re-entry from cancel callback + if (restarting) { + return; + } + if (worker) { worker.terminate(); } - // for (let key in slicing) { - // slicing[key]({error: "cancelled slicing"}); - // } + restarting = true; + + for (let key in running) { + let rec = running[key]; + if (rec.fn) { + rec.fn({error: "cancelled operation"}); + } + } syncd = {}; - slicing = {}; running = {}; worker = KIRI.work.newWorker(); @@ -95,6 +104,8 @@ KIRI.work = { onreply(reply.data, reply); }; + + restarting = false; }, decimate: function(vertices, options, callback) { @@ -169,14 +180,12 @@ KIRI.work = { }, slice: function(settings, widget, callback) { - slicing[widget.id] = callback; send("slice", { id: widget.id, settings: settings }, function(reply) { callback(reply); if (reply.done || reply.error) { - delete slicing[widget.id]; // in belt mode, slicing modifies a widget and requires re-sync if (settings.device.bedBelt) { widget.modified = true; diff --git a/src/kiri/init.js b/src/kiri/init.js index 21295154..15b4d105 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -242,7 +242,8 @@ // hide all dialogs API.dialog.hide(); // cancel slicing - if (KIRI.work.isSlicing()) KIRI.work.restart(); + API.function.cancel(); + // if (KIRI.work.isSlicing()) KIRI.work.restart(); // kill any poppers in compact mode UC.hidePoppers(); // and send an event (used by FDM client) diff --git a/src/kiri/main.js b/src/kiri/main.js index dd9419c4..291a2666 100644 --- a/src/kiri/main.js +++ b/src/kiri/main.js @@ -918,7 +918,9 @@ } function cancelWorker() { - if (KIRI.work.isSlicing()) KIRI.work.restart(); + if (KIRI.work.isBusy()) { + KIRI.work.restart(); + } } function showSlider() {