diff --git a/src/kiri-mode/fdm/export.js b/src/kiri-mode/fdm/export.js index d904c702..1d80ca06 100644 --- a/src/kiri-mode/fdm/export.js +++ b/src/kiri-mode/fdm/export.js @@ -80,8 +80,8 @@ FDM.export = function(print, online, ondone, ondebug) { nozzleTemp = process.firstLayerNozzleTemp || process.outputTemp, bedTemp = process.firstLayerBedTemp || process.outputBedTemp, fanSpeedSave = undefined, - fanSpeedBase = undefined, - fanSpeed = undefined, + fanSpeedBase = 0, + fanSpeed = 0, lastType = undefined, lastNozzleTemp = nozzleTemp, lastBedTemp = bedTemp, @@ -167,9 +167,8 @@ FDM.export = function(print, online, ondone, ondebug) { params.firstLayerBedTemp || params.outputBedTemp : params.outputBedTemp || params.firstLayerBedTemp; fanSpeedBase = params.firstLayerFanSpeed || 0; - fanSpeed = layer === 0 ? - params.firstLayerFanSpeed || 0 : - params.outputFanSpeed || 0; + fanSpeed = layer >= (params.outputFanLayer ?? 1) ? + params.outputFanSpeed || 0 : fanSpeedBase; Object.assign(subst, { temp_bed: bedTemp, bed_temp: bedTemp, diff --git a/src/kiri/conf.js b/src/kiri/conf.js index dc75c7b5..f395999a 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -357,6 +357,7 @@ const conf = exports({ outputShellMult: 1.25, outputFillMult: 1.25, outputSparseMult: 1.25, + outputFanLayer: 1, outputFanSpeed: 255, outputRetractDist: 1.5, outputRetractSpeed: 40, diff --git a/src/kiri/init.js b/src/kiri/init.js index 5a09e6b4..03fe4f8a 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1833,6 +1833,7 @@ gapp.register("kiri.init", [], (root, exports) => { fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}), sliceShells: uc.newInput(LANG.sl_shel_s, {title:LANG.sl_shel_l, convert:uc.toFloat, modes:FDM}), sliceLineWidth: uc.newInput(LANG.sl_line_s, {title:LANG.sl_line_l, convert:uc.toFloat, bound:uc.bound(0,5), modes:FDM}), + outputFanLayer: uc.newInput(LANG.ou_fanl_s, {title:LANG.ou_fanl_l, convert:uc.toInt, bound:uc.bound(0,255), modes:FDM}), fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}), sliceTopLayers: uc.newInput(LANG.sl_ltop_s, {title:LANG.sl_ltop_l, convert:uc.toInt, modes:FDM}), sliceBottomLayers: uc.newInput(LANG.sl_lbot_s, {title:LANG.sl_lbot_l, convert:uc.toInt, modes:FDM}), @@ -1851,7 +1852,7 @@ gapp.register("kiri.init", [], (root, exports) => { fdmSep: uc.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}), firstLayerNozzleTemp:uc.newInput(LANG.fl_nozl_s, {title:LANG.fl_nozl_l, convert:uc.toInt, modes:FDM, show:isNotBelt}), firstLayerBedTemp: uc.newInput(LANG.fl_bedd_s, {title:LANG.fl_bedd_l, convert:uc.toInt, modes:FDM, show:isNotBelt}), - firstLayerFanSpeed: uc.newInput(LANG.ou_fans_s, {title:LANG.ou_fans_l, convert:uc.toInt, bound:uc.bound(0,255), modes:FDM}), + firstLayerFanSpeed: uc.newInput(LANG.ou_fans_s, {title:LANG.ou_fans_l, convert:uc.toInt, bound:uc.bound(0,255), modes:FDM, show:isBelt}), fdmSep: uc.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}), firstLayerYOffset: uc.newInput(LANG.fl_zoff_s, {title:LANG.fl_zoff_l, convert:uc.toFloat, modes:FDM, show:isBelt}), firstLayerFlatten: uc.newInput(LANG.fl_flat_s, {title:LANG.fl_flat_l, convert:uc.toFloat, modes:FDM, show:isBelt}), diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 7097ea73..a97be36d 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -671,6 +671,8 @@ self.kiri.lang['en-us'] = { ou_flml_s: "solid factor", ou_spml_s: "infill factor", ou_exml_l: ["extrusion multiplier","0.0 - 2.0"], + ou_fanl_s: "fan on", + ou_fanl_l: ["layer # to turn on fan","layers start at 0"], ou_fans_s: "fan speed", ou_fans_l: "0 - 255",