From 3e7ed14adc928aca2f9f0493a33efbb04bc1de72 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 12 Jul 2025 16:15:27 -0400 Subject: [PATCH 1/7] fix slicing progress --- src/kiri-mode/cam/slice.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/kiri-mode/cam/slice.js b/src/kiri-mode/cam/slice.js index 7e97fc32d..40354d792 100644 --- a/src/kiri-mode/cam/slice.js +++ b/src/kiri-mode/cam/slice.js @@ -277,10 +277,13 @@ CAM.slice = async function(settings, widget, onupdate, ondone) { // silently preface op list with OpShadow if (isIndexed) { - if (activeOps.length === 0 || activeOps[0].type !== 'index') - opList.push(new CAM.OPS.index(state, { type: "index", index: 0 })); + if (activeOps.length === 0 || activeOps[0].type !== 'index') { + opList.push(new CAM.OPS.index(state, { type: "index", index: 0 })); + opTot++; + } } else { opList.push(new CAM.OPS.shadow(state, { type: "shadow", silent: true })); + opTot++; } // determing # of steps and step weighting for progress bar From 9e39716c1fe0777fd361774bae39ba016712419f Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 12 Jul 2025 18:46:39 -0400 Subject: [PATCH 2/7] Restore indexed output --- src/geo/paths.js | 1 - src/kiri-mode/cam/prepare.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/geo/paths.js b/src/geo/paths.js index 134a63f34..3a0e32055 100644 --- a/src/geo/paths.js +++ b/src/geo/paths.js @@ -540,7 +540,6 @@ function shapeToPath(shape, points, closed) { * @return {Array} an array of points representing the arc. */ function arcToPath( start, end,arcdivs=24,opts) { - let { clockwise, center, radius } = opts; // @type {Point} diff --git a/src/kiri-mode/cam/prepare.js b/src/kiri-mode/cam/prepare.js index 27ed582fa..344c73ad3 100644 --- a/src/kiri-mode/cam/prepare.js +++ b/src/kiri-mode/cam/prepare.js @@ -329,7 +329,7 @@ function prepEach(widget, settings, print, firstPoint, update) { p.x + wmx, p.y + wmy, p.z + zadd - ) + ).setA(p.a); } /** From b24be319c52df99446925852685a0cc9b365dcce Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sun, 13 Jul 2025 12:31:38 -0400 Subject: [PATCH 3/7] requested ulio brix device changes --- src/kiri-dev/fdm/ULIO.3D.BRIX.json | 6 +++--- src/kiri-dev/fdm/ULIO.3D.STEAM.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kiri-dev/fdm/ULIO.3D.BRIX.json b/src/kiri-dev/fdm/ULIO.3D.BRIX.json index 113f20a7b..0a1aadf92 100644 --- a/src/kiri-dev/fdm/ULIO.3D.BRIX.json +++ b/src/kiri-dev/fdm/ULIO.3D.BRIX.json @@ -104,16 +104,16 @@ "sliceFillWidth": 1, "sliceFillRate": 0, "sliceSupportEnable": false, - "firstSliceHeight": 0.25, + "firstSliceHeight": 0.5, "firstLayerFillRate": 20, "firstLayerLineMult": 1, "firstLayerNozzleTemp": 0, "firstLayerBedTemp": 0, "firstLayerBrimTrig": 0, "firstLayerBrimGap": 0, - "outputRaft": true, + "outputRaft": false, "outputRaftSpacing": 0.2, - "outputBrimCount": 5, + "outputBrimCount": 0, "outputBrimOffset": 2, "outputPurgeTower": 0, "outputInvertX": false, diff --git a/src/kiri-dev/fdm/ULIO.3D.STEAM.json b/src/kiri-dev/fdm/ULIO.3D.STEAM.json index b6239564e..5270560e9 100644 --- a/src/kiri-dev/fdm/ULIO.3D.STEAM.json +++ b/src/kiri-dev/fdm/ULIO.3D.STEAM.json @@ -104,16 +104,16 @@ "sliceFillWidth": 1, "sliceFillRate": 0, "sliceSupportEnable": false, - "firstSliceHeight": 0.25, + "firstSliceHeight": 0.5, "firstLayerFillRate": 20, "firstLayerLineMult": 1, "firstLayerNozzleTemp": 0, "firstLayerBedTemp": 0, "firstLayerBrimTrig": 0, "firstLayerBrimGap": 0, - "outputRaft": true, + "outputRaft": false, "outputRaftSpacing": 0.2, - "outputBrimCount": 5, + "outputBrimCount": 0, "outputBrimOffset": 2, "outputPurgeTower": 0, "outputInvertX": false, From 2dde4ccae433935ed23d4cd09f105abe884847c7 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Mon, 14 Jul 2025 18:31:18 -0400 Subject: [PATCH 4/7] back-port 4.3 fix for trace-clear of standalone letters --- src/kiri-mode/cam/ops.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/kiri-mode/cam/ops.js b/src/kiri-mode/cam/ops.js index 01a9aae25..5de5caecc 100644 --- a/src/kiri-mode/cam/ops.js +++ b/src/kiri-mode/cam/ops.js @@ -1066,7 +1066,20 @@ class OpTrace extends CamOp { for (let z of zs) { let clip = [], shadow; shadow = shadowAt(z); - POLY.subtract([ poly ], shadow, clip, undefined, undefined, 0); + // for cases where the shadow IS the poly like + // with lettering without a bounding frame, clip + // will fail and we need to restore the matching poly + let subshadow = true; + for (let spo of shadow) { + if (poly.isInside(spo, 0.01)) { + subshadow = false; + clip = [ poly ]; + break; + } + } + if (subshadow) { + POLY.subtract([ poly ], shadow, clip, undefined, undefined, 0); + } if (op.outline) { POLY.clearInner(clip); } From 2aa8a3af2c774591cda8359f6fbdba329b8e9d78 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Mon, 14 Jul 2025 19:07:07 -0400 Subject: [PATCH 5/7] fix relative rotations with index op --- src/kiri-mode/cam/slice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kiri-mode/cam/slice.js b/src/kiri-mode/cam/slice.js index 40354d792..048c13c9d 100644 --- a/src/kiri-mode/cam/slice.js +++ b/src/kiri-mode/cam/slice.js @@ -234,7 +234,7 @@ CAM.slice = async function(settings, widget, onupdate, ondone) { } function setAxisIndex(degrees = 0, absolute = true) { - axisIndex = absolute ? degrees : axisIndex + degrees; + axisIndex = absolute ? degrees : (axisIndex || 0) + degrees; axisRotation = (Math.PI / 180) * axisIndex; widget.setAxisIndex(isIndexed ? -axisIndex : 0); return isIndexed ? -axisIndex : 0; From b2ba6de307e450c2d8c7705b95ebbdc5a732c438 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 15 Jul 2025 18:07:23 -0400 Subject: [PATCH 6/7] disable arc conversion by default, add explicit checkbox to enable, add additional arc checks in preview code path --- src/kiri-mode/cam/prepare.js | 5 +++-- src/kiri/conf.js | 3 ++- src/kiri/init.js | 5 +++-- web/kiri/lang/en.js | 2 ++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/kiri-mode/cam/prepare.js b/src/kiri-mode/cam/prepare.js index 344c73ad3..23a8b5061 100644 --- a/src/kiri-mode/cam/prepare.js +++ b/src/kiri-mode/cam/prepare.js @@ -99,6 +99,7 @@ function prepEach(widget, settings, print, firstPoint, update) { engageFactor = process.camFullEngage, arcTolerance = process.camArcTolerance, arcRes = toRadians(process.camArcResolution), + arcEnabled = process.camArcEnabled && arcTolerance > 0 && arcRes > 0, tolerance = 0, drillDown = 0, drillLift = 0, @@ -787,7 +788,7 @@ function prepEach(widget, settings, print, firstPoint, update) { if(indexA == startIndex){ camOut(pointA.clone(), 0, {factor:engageFactor}); // if first point, move to and call export function - quePush(pointA); + if (arcEnabled) quePush(pointA); } lastPoint = arcExport(pointB, pointA); }, !poly.isClosed(), startIndex); @@ -808,7 +809,7 @@ function prepEach(widget, settings, print, firstPoint, update) { function arcExport(point,lastp){ let dist = lastp? point.distTo2D(lastp) : 0; if (lastp) { - if (dist >lineTolerance && lastp) { + if (arcEnabled && dist >lineTolerance && lastp) { let rec = Object.assign(point,{dist}); arcQ.push(rec); diff --git a/src/kiri/conf.js b/src/kiri/conf.js index abea4b436..807abd56d 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -578,7 +578,8 @@ const conf = exports({ outputInvertY: false, camExpertFast: false, camTrueShadow: false, - camArcTolerance: 0.006, + camArcEnabled: false, + camArcTolerance: 0.15, camArcResolution: 5, camForceZMax: false, camFirstZMax: false, diff --git a/src/kiri/init.js b/src/kiri/init.js index d489ed21b..bcb795b33 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1282,8 +1282,9 @@ gapp.register("kiri.init", (root, exports) => { camExpertFast: newBoolean(LANG.cx_fast_s, onBooleanClick, {title:LANG.cx_fast_l, show: () => !ui.camTrueShadow.checked }), camTrueShadow: newBoolean(LANG.cx_true_s, onBooleanClick, {title:LANG.cx_true_l, show: () => !ui.camExpertFast.checked }), separator: newBlank({ class:"set-sep", driven }), - camArcTolerance: newInput(LANG.cx_arct_s, {title:LANG.cx_arct_l, convert:toFloat, units, bound:bound(0,100)}), - camArcResolution: newInput(LANG.cx_arcr_s, {title:LANG.cx_arcr_l, convert:toFloat, bound:bound(0,180), show:() => ui.camArcTolerance.value > 0}), + camArcEnabled: newBoolean(LANG.cx_arce_s, onBooleanClick, {title:LANG.cx_arce_l}), + camArcTolerance: newInput(LANG.cx_arct_s, {title:LANG.cx_arct_l, convert:toFloat, bound:bound(0,100), units, trigger, show:() => ui.camArcEnabled.checked}), + camArcResolution: newInput(LANG.cx_arcr_s, {title:LANG.cx_arcr_l, convert:toFloat, bound:bound(0,180), trigger, show:() => ui.camArcEnabled.checked}), /** LASER/DRAG/WJET/WEDM cut tool Settings */ diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 0e90a13a5..6577a6f31 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -830,6 +830,8 @@ self.kiri.lang['en-us'] = { ad_mins_l: ["minimum speed","for short segments"], ad_spol_s: "short path", ad_spol_l: ["polygons shorter than this","will have their print speed","scaled down to min speed","in millimeters"], + cx_arce_s: "arc output", + cx_arce_l: ["EXPERIMENTAL: enable path to arc conversion"], ad_arct_s: "arc tolerance", ad_arct_l: ["convert faceted lines to arcs","center point drift tolerance","when matching arc points","consider values around 0.15","in millimeters","0 to disable"], ad_zhop_s: "z hop dist", From 4562e7e86fc3904f7839aa0fbc1112b7fba5bc0d Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 15 Jul 2025 18:07:48 -0400 Subject: [PATCH 7/7] bump rev 4.2.3 --- package.json | 2 +- src/moto/license.js | 2 +- web/kiri/manifest.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 1fa80dfd8..60cd8454a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grid-apps", - "version": "4.2.2", + "version": "4.2.3", "description": "grid.space 3d slicing & modeling tools", "author": "Stewart Allen ", "license": "MIT", diff --git a/src/moto/license.js b/src/moto/license.js index 1984fa2e5..dcc44ba93 100644 --- a/src/moto/license.js +++ b/src/moto/license.js @@ -5,7 +5,7 @@ let terms = { COPYRIGHT: "Copyright (C) Stewart Allen - All Rights Reserved", LICENSE: "See the license.md file included with the source distribution", - VERSION: (is_self ? self : this).debug_version || "4.2.2" + VERSION: (is_self ? self : this).debug_version || "4.2.3" }; if (typeof(module) === 'object') { diff --git a/web/kiri/manifest.json b/web/kiri/manifest.json index b32e5007c..18af32ac3 100644 --- a/web/kiri/manifest.json +++ b/web/kiri/manifest.json @@ -1,5 +1,5 @@ { - "name": "Kiri:Moto 4.2.2", + "name": "Kiri:Moto 4.2.3", "short_name": "Kiri:Moto", "description": "Slicer for 3D printers, CNC mills, laser cutters and more", "start_url": "/kiri/",