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:
parent
c8cbf3a088
commit
9dbec25714
4 changed files with 34 additions and 3 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue