add belt peel guard to prevent deflection on long prints as they leave the belt end
This commit is contained in:
parent
5be46bff75
commit
c8ec0aa498
5 changed files with 19 additions and 2 deletions
2
app.js
2
app.js
|
|
@ -167,6 +167,8 @@ function initModule(mod, file, dir) {
|
||||||
time: time,
|
time: time,
|
||||||
guid: guid,
|
guid: guid,
|
||||||
mkdirs: util.mkdir,
|
mkdirs: util.mkdir,
|
||||||
|
isfile: util.isfile,
|
||||||
|
confdir: util.confdir,
|
||||||
datadir: util.datadir,
|
datadir: util.datadir,
|
||||||
lastmod: lastmod,
|
lastmod: lastmod,
|
||||||
obj2string: obj2string,
|
obj2string: obj2string,
|
||||||
|
|
|
||||||
|
|
@ -341,6 +341,7 @@
|
||||||
outputLayerRetract: false,
|
outputLayerRetract: false,
|
||||||
outputOriginCenter: true,
|
outputOriginCenter: true,
|
||||||
outputLoopLayers: "",
|
outputLoopLayers: "",
|
||||||
|
outputPeelGuard: 0,
|
||||||
outputInvertX: false,
|
outputInvertX: false,
|
||||||
outputInvertY: false,
|
outputInvertY: false,
|
||||||
detectThinWalls: false,
|
detectThinWalls: false,
|
||||||
|
|
|
||||||
|
|
@ -1788,7 +1788,8 @@
|
||||||
arcTolerance: UC.newInput(LANG.ad_arct_s, {title:LANG.ad_arct_l, bound:UC.bound(0,1.0), convert:UC.toFloat, modes:FDM, show:() => { return isDanger() && isNotBelt() }}),
|
arcTolerance: UC.newInput(LANG.ad_arct_s, {title:LANG.ad_arct_l, bound:UC.bound(0,1.0), convert:UC.toFloat, modes:FDM, show:() => { return isDanger() && isNotBelt() }}),
|
||||||
antiBacklash: UC.newInput(LANG.ad_abkl_s, {title:LANG.ad_abkl_l, bound:UC.bound(0,3), convert:UC.toInt, modes:FDM}),
|
antiBacklash: UC.newInput(LANG.ad_abkl_s, {title:LANG.ad_abkl_l, bound:UC.bound(0,3), convert:UC.toInt, modes:FDM}),
|
||||||
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM}),
|
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM}),
|
||||||
gcodePauseLayers: UC.newInput(LANG.ag_paws_s, {title:LANG.ag_paws_l, modes:FDM, comma:true}),
|
outputPeelGuard: UC.newInput(LANG.ag_peel_s, {title:LANG.ag_peel_l, convert:UC.toInt, modes:FDM, comma:true, show:isBelt}),
|
||||||
|
gcodePauseLayers: UC.newInput(LANG.ag_paws_s, {title:LANG.ag_paws_l, modes:FDM, comma:true, show:isNotBelt}),
|
||||||
outputLoopLayers: UC.newInput(LANG.ag_loop_s, {title:LANG.ag_loop_l, modes:FDM, comma:true, show:isBelt}),
|
outputLoopLayers: UC.newInput(LANG.ag_loop_s, {title:LANG.ag_loop_l, modes:FDM, comma:true, show:isBelt}),
|
||||||
outputLayerRetract: UC.newBoolean(LANG.ad_lret_s, onBooleanClick, {title:LANG.ad_lret_l, modes:FDM}),
|
outputLayerRetract: UC.newBoolean(LANG.ad_lret_s, onBooleanClick, {title:LANG.ad_lret_l, modes:FDM}),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,9 @@
|
||||||
lout = null,
|
lout = null,
|
||||||
last = null,
|
last = null,
|
||||||
zpos = 0,
|
zpos = 0,
|
||||||
|
bmax = 0,
|
||||||
|
blast = 0,
|
||||||
|
blastz = 0,
|
||||||
process = settings.process,
|
process = settings.process,
|
||||||
loops = process.outputLoopLayers,
|
loops = process.outputLoopLayers,
|
||||||
zhop = process.zHopDistance || 0, // range
|
zhop = process.zHopDistance || 0, // range
|
||||||
|
|
@ -55,6 +58,7 @@
|
||||||
retSpeed = process.outputRetractSpeed * 60, // range
|
retSpeed = process.outputRetractSpeed * 60, // range
|
||||||
retDwell = process.outputRetractDwell || 0, // range
|
retDwell = process.outputRetractDwell || 0, // range
|
||||||
timeDwell = retDwell / 1000,
|
timeDwell = retDwell / 1000,
|
||||||
|
peelGuard = process.outputPeelGuard || 0,
|
||||||
arcDist = isBelt || !isDanger ? 0 : (process.arcTolerance || 0),
|
arcDist = isBelt || !isDanger ? 0 : (process.arcTolerance || 0),
|
||||||
originCenter = process.outputOriginCenter,
|
originCenter = process.outputOriginCenter,
|
||||||
offset = originCenter ? null : {
|
offset = originCenter ? null : {
|
||||||
|
|
@ -272,7 +276,7 @@
|
||||||
let epos = isBelt ? { x: pos.x, y: pos.y, z: pos.z } : pos;
|
let epos = isBelt ? { x: pos.x, y: pos.y, z: pos.z } : pos;
|
||||||
if (isBelt) {
|
if (isBelt) {
|
||||||
epos.x = originCenter ? -pos.x : device.bedWidth - pos.x;
|
epos.x = originCenter ? -pos.x : device.bedWidth - pos.x;
|
||||||
epos.z = pos.z * icos;
|
epos.z = blastz = pos.z * icos;
|
||||||
epos.y = -pos.y + epos.z * bcos;
|
epos.y = -pos.y + epos.z * bcos;
|
||||||
lout = epos;
|
lout = epos;
|
||||||
}
|
}
|
||||||
|
|
@ -335,6 +339,7 @@
|
||||||
(process.firstSliceHeight || process.sliceHeight) : path.height);
|
(process.firstSliceHeight || process.sliceHeight) : path.height);
|
||||||
|
|
||||||
zpos = path.z || zpos;
|
zpos = path.z || zpos;
|
||||||
|
bmax = Math.max(bmax, pos.z * icos);
|
||||||
subst.z = subst.Z = zpos.round(3);
|
subst.z = subst.Z = zpos.round(3);
|
||||||
subst.e = subst.E = outputLength;
|
subst.e = subst.E = outputLength;
|
||||||
subst.layer = layer;
|
subst.layer = layer;
|
||||||
|
|
@ -342,6 +347,12 @@
|
||||||
|
|
||||||
if (isBelt) {
|
if (isBelt) {
|
||||||
pos.z = zpos;
|
pos.z = zpos;
|
||||||
|
if (peelGuard && bmax > peelGuard && blast < peelGuard) {
|
||||||
|
peelGuard += 50;
|
||||||
|
append(`G0 Z${(blast + 55).round(decimals)} F200 ; peel guard`);
|
||||||
|
append(`G0 Z${blastz.round(decimals)} F200 ; unpeel`);
|
||||||
|
}
|
||||||
|
blast = bmax;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pauseCmd && pause.indexOf(layer) >= 0) {
|
if (pauseCmd && pause.indexOf(layer) >= 0) {
|
||||||
|
|
|
||||||
|
|
@ -585,6 +585,8 @@ kiri.lang['en-us'] = {
|
||||||
ag_menu: "gcode",
|
ag_menu: "gcode",
|
||||||
ag_nozl_s: "nozzle",
|
ag_nozl_s: "nozzle",
|
||||||
ag_nozl_l: "select output nozzle or head",
|
ag_nozl_l: "select output nozzle or head",
|
||||||
|
ag_peel_s: "peel guard",
|
||||||
|
ag_peel_l: ["starting at this belt z positoin","periodically roll the print off and","back on to the belt to unstick it","and prevent rolling deflection"],
|
||||||
ag_paws_s: "pause layers",
|
ag_paws_s: "pause layers",
|
||||||
ag_paws_l: ["comma-separated list of layers","to inject pause commands before"],
|
ag_paws_l: ["comma-separated list of layers","to inject pause commands before"],
|
||||||
ag_loop_s: "loop layers",
|
ag_loop_s: "loop layers",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue