fixes #217 belt fan override for base extrusions touching belt with the caveat that values over 0 are used. 0 is reserved, which makes sense in all other fields. fixing this requires the introduction of another checkbox and other ui code. for now, use 1 in place of 0

This commit is contained in:
Stewart Allen 2022-10-09 15:54:53 -04:00
commit 9dbec25714
4 changed files with 34 additions and 3 deletions

View file

@ -79,6 +79,8 @@ FDM.export = function(print, online, ondone, ondebug) {
extrudeSet = false,
nozzleTemp = process.firstLayerNozzleTemp || process.outputTemp,
bedTemp = process.firstLayerBedTemp || process.outputBedTemp,
fanSpeedSave = undefined,
fanSpeedBase = undefined,
fanSpeed = undefined,
lastType = undefined,
lastNozzleTemp = nozzleTemp,
@ -95,6 +97,7 @@ FDM.export = function(print, online, ondone, ondebug) {
temp: nozzleTemp,
temp_bed: bedTemp,
bed_temp: bedTemp,
fan_speed_base: fanSpeedBase,
fan_speed: fanSpeed,
speed: fanSpeed, // legacy
top: offset.y ? bedDepth : bedDepth/2,
@ -133,9 +136,23 @@ FDM.export = function(print, online, ondone, ondebug) {
}
subst.tool_count = tools_used.length;
function setTempFanSpeed(tempSpeed) {
if (tempSpeed > 0) {
fanSpeedSave = fanSpeedSave >= 0 ? fanSpeedSave : fanSpeed;
fanSpeed = tempSpeed;
subst.fan_speed = fanSpeed;
subst.fan_speed_base = tempSpeed;
} else {
fanSpeed = fanSpeedSave >= 0 ? fanSpeedSave : fanSpeed
fanSpeedSave = undefined;
subst.fan_speed = fanSpeed;
subst.fan_speed_base = fanSpeedBase;
}
}
// smallish band-aid. refactor above to remove redundancy
function updateParams(layer, params) {
// let params = getRangeParameters(process, layer);
// params = getRangeParameters(process, layer);
zhop = params.zHopDistance || 0; // range
retDist = params.outputRetractDist || 0; // range
retSpeed = params.outputRetractSpeed * 60 || 1; // range
@ -147,6 +164,7 @@ FDM.export = function(print, online, ondone, ondebug) {
bedTemp = layer === 0 ?
params.firstLayerBedTemp || params.outputBedTemp :
params.outputBedTemp || params.firstLayerBedTemp;
fanSpeedBase = params.firstLayerFanSpeed || 0;
fanSpeed = layer === 0 ?
params.firstLayerFanSpeed || 0 :
params.outputFanSpeed || 0;
@ -154,6 +172,7 @@ FDM.export = function(print, online, ondone, ondebug) {
temp_bed: bedTemp,
bed_temp: bedTemp,
fan_speed: fanSpeed,
fan_speed_base: fanSpeedBase,
speed: fanSpeed, // legacy
retract_speed: retSpeed,
retract_distance: retDist,
@ -682,6 +701,15 @@ FDM.export = function(print, online, ondone, ondebug) {
unretract();
}
// in belt mode, fan can change per segment (for base)
if (isBelt) {
setTempFanSpeed(out.fan);
if (fanSpeed !== lastFanSpeed) {
appendAllSub(gcodeFan);
lastFanSpeed = fanSpeed;
}
}
if (lastp && out.emit) {
if (arcDist) {
let rec = {e:out.emit, x, y, z, dist, emitPerMM, speedMMM};