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

@ -5,7 +5,8 @@ Full docs @ https://docs.grid.space/projects/kiri-moto
# Release 3.6
*
* improve CAM animation speeds
* fix belt fan override for base extrusions touching belt
# Release 3.5 (2022-10-07)

View file

@ -45,6 +45,7 @@ FDM.init = function(kiri, api) {
"sliceSolidMinArea": LANG.ad_msol_s,
"firstLayerRate": LANG.fl_rate_s,
"firstLayerPrintMult": LANG.fl_mult_s,
"firstLayerFanSpeed": LANG.ou_fans_s,
// prepare
"sliceShellOrder": LANG.sl_ordr_s,
"sliceFillOverlap": LANG.fi_over_s,

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};

View file

@ -693,8 +693,9 @@ FDM.prepare = function(widgets, settings, update) {
}
if (rec.emit && belty <= thresh && lastout && Math.abs(lastout.belty - belty) < 0.005) {
// apply base speed to segments touching belt
rec.speed = Math.min(rec.speed, lowrate);
rec.speed = params.firstLayerRate || Math.min(rec.speed, lowrate);
rec.emit *= bmult;
rec.fan = params.firstLayerFanSpeed;
minx = Math.min(minx, point.x, lastout.point.x);
maxx = Math.max(maxx, point.x, lastout.point.x);
maxy = Math.max(maxy, point.y);