diff --git a/src/kiri/core/conf.js b/src/kiri/core/conf.js index b8f5ffb4..5ac17300 100644 --- a/src/kiri/core/conf.js +++ b/src/kiri/core/conf.js @@ -263,6 +263,7 @@ export const conf = { firstLayerBedTemp: 0, firstLayerBeltBump: 0, firstLayerBeltLead: 3, + firstLayerBeltFact: 1, firstLayerBrim: 0, firstLayerBrimGap: 0, firstLayerBrimIn: 0, diff --git a/src/kiri/mode/fdm/init-menu.js b/src/kiri/mode/fdm/init-menu.js index 453d83da..715ce191 100644 --- a/src/kiri/mode/fdm/init-menu.js +++ b/src/kiri/mode/fdm/init-menu.js @@ -134,6 +134,7 @@ export function menu() { firstLayerFanSpeed: newInput(LANG.ou_fans_s, {title:LANG.ou_fans_l, convert:toInt, bound:bound(0,255), show:isBelt}), firstLayerYOffset: newInput(LANG.fl_zoff_s, {title:LANG.fl_zoff_l, convert:toFloat, show:isBelt}), firstLayerFlatten: newInput(LANG.fl_flat_s, {title:LANG.fl_flat_l, convert:toFloat, show:isBelt}), + firstLayerBeltFact: newInput(LANG.fl_mult_s, {title:LANG.fl_mult_l, convert:toFloat, bound:bound(0, 2), show:isBelt}), firstLayerRate: newInput(LANG.fl_rate_s, {title:LANG.fl_rate_l, convert:toFloat}), firstLayerFillRate: newInput(LANG.fl_frat_s, {title:LANG.fl_frat_l, convert:toFloat, show:isNotBelt}), separator: newBlank({ class:"set-sep", driven, show:isBelt }), diff --git a/src/kiri/mode/fdm/prepare.js b/src/kiri/mode/fdm/prepare.js index 680cc075..8fd835b3 100644 --- a/src/kiri/mode/fdm/prepare.js +++ b/src/kiri/mode/fdm/prepare.js @@ -682,6 +682,7 @@ export async function fdm_prepare(widgets, settings, update) { for (let rec of layer) { overate = rec.overate >= 0 ? rec.overate : overate; + let bmult = params.firstLayerBeltFact ?? 1; let brate = params.firstLayerRate || firstLayerRate; let point = rec.point; let belty = rec.belty = -point.y + (point.z * belt.slope); @@ -695,6 +696,8 @@ export async function fdm_prepare(widgets, settings, update) { // apply base speed to segments touching belt rec.speed = params.firstLayerRate || Math.min(rec.speed, lowrate); rec.fan = params.firstLayerFanSpeed; + // apply base flowrate multiplier to segments touching belt + rec.emit *= bmult; minx = Math.min(minx, point.x, lastout.point.x); maxx = Math.max(maxx, point.x, lastout.point.x); maxy = Math.max(maxy, point.y);