From d8bb38757d4ee224160a0999a23adce5a55b8731 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 7 Jan 2023 13:47:20 -0500 Subject: [PATCH] allow top/bottom layers to be modified in ranges --- src/kiri-mode/fdm/client.js | 2 ++ src/kiri-mode/fdm/slice.js | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/kiri-mode/fdm/client.js b/src/kiri-mode/fdm/client.js index 09da56e8..cf7a7186 100644 --- a/src/kiri-mode/fdm/client.js +++ b/src/kiri-mode/fdm/client.js @@ -43,6 +43,8 @@ FDM.init = function(kiri, api) { "sliceFillGrow": LANG.fi_grow_s, "sliceSolidRate": LANG.ou_fini_s, "sliceSolidMinArea": LANG.ad_msol_s, + "sliceTopLayers": LANG.sl_ltop_s, + "sliceBottomLayers": LANG.sl_lbot_s, "firstLayerRate": LANG.fl_rate_s, "firstLayerPrintMult": LANG.fl_mult_s, "firstLayerFanSpeed": LANG.ou_fans_s, diff --git a/src/kiri-mode/fdm/slice.js b/src/kiri-mode/fdm/slice.js index 553e5276..ff685639 100644 --- a/src/kiri-mode/fdm/slice.js +++ b/src/kiri-mode/fdm/slice.js @@ -110,7 +110,6 @@ FDM.slice = function(settings, widget, onupdate, ondone) { useAssembly = controller.assembly, isConcurrent = controller.threaded && kiri.minions.concurrent, topLayers = process.sliceTopLayers || 0, - solidLayers = process.sliceSolidLayers || 0, bottomLayers = process.sliceBottomLayers || 0, vaseMode = process.sliceFillType === 'vase' && !isSynth, metadata = widget.anno, @@ -699,7 +698,7 @@ FDM.slice = function(settings, widget, onupdate, ondone) { // layer boolean diffs need to be computed to find flat areas to fill // and overhangs that need to be supported. these are stored in flats // and bridges, projected up/down, and merged into an array of solids - if ((topLayers || bottomLayers || solidLayers) && !vaseMode && !isSynth) { + if (!vaseMode && !isSynth) { profileStart("delta"); forSlices(0.2, 0.34, slice => { let params = slice.params || process; @@ -710,8 +709,11 @@ FDM.slice = function(settings, widget, onupdate, ondone) { profileEnd(); profileStart("delta-project"); forSlices(0.34, 0.35, slice => { - if (solidLayers || topLayers) projectFlats(slice, solidLayers || topLayers); - if (solidLayers || bottomLayers) projectBridges(slice, solidLayers || bottomLayers); + let params = slice.params || process; + topLayers = params.sliceTopLayers || 0; + bottomLayers = params.sliceBottomLayers || 0; + if (topLayers) projectFlats(slice, topLayers); + if (bottomLayers) projectBridges(slice, bottomLayers); }, "layer deltas"); profileEnd(); profileStart("solid-fill")