fdm gcode formatting

This commit is contained in:
Stewart Allen 2020-04-19 19:09:13 -04:00
commit cd433e100e
2 changed files with 24 additions and 10 deletions

View file

@ -815,6 +815,7 @@ let gs_kiri_fdm = exports;
append(`; Generated by Kiri:Moto ${exports.VERSION}`); append(`; Generated by Kiri:Moto ${exports.VERSION}`);
append(`; ${new Date().toString()}`); append(`; ${new Date().toString()}`);
appendSub("; Bed left:{left} right:{right} top:{top} bottom:{bottom}"); appendSub("; Bed left:{left} right:{right} top:{top} bottom:{bottom}");
append(`; Target: ${settings.filter[settings.mode]}`);
append("; --- process ---"); append("; --- process ---");
for (let pk in process) { for (let pk in process) {
append("; " + pk + " = " + process[pk]); append("; " + pk + " = " + process[pk]);
@ -830,6 +831,17 @@ let gs_kiri_fdm = exports;
if (line.indexOf('M83') >= 0) extrudeAbs = false; else if (line.indexOf('M83') >= 0) extrudeAbs = false; else
if (line.indexOf('G90') >= 0) extrudeAbs = true; else if (line.indexOf('G90') >= 0) extrudeAbs = true; else
if (line.indexOf('G91') >= 0) extrudeAbs = false; else if (line.indexOf('G91') >= 0) extrudeAbs = false; else
if (line.indexOf('G92') === 0) {
line.split(";")[0].split(' ').forEach(function (tok) {
let val = parseFloat(tok.substring(1) || 0) || 0;
switch (tok[0]) {
case 'X': pos.x = val; break;
case 'Y': pos.y = val; break;
case 'Z': pos.z = val; break;
case 'E': outputLength = val; break;
}
});
}
if (extrudeAbs && line.indexOf('E') > 0) { if (extrudeAbs && line.indexOf('E') > 0) {
line.split(";")[0].split(' ').forEach(function (tok) { line.split(";")[0].split(' ').forEach(function (tok) {
// use max E position from gcode-preamble // use max E position from gcode-preamble
@ -848,14 +860,14 @@ let gs_kiri_fdm = exports;
function retract(zhop) { function retract(zhop) {
retracted = retDist; retracted = retDist;
moveTo({e:-retracted}, retSpeed, `retract ${retDist}`); moveTo({e:-retracted}, retSpeed, `e-retract ${retDist}`);
if (zhop) moveTo({z:zpos + zhop}, seekMMM, "zhop up"); if (zhop) moveTo({z:zpos + zhop}, seekMMM, "z-hop start");
time += (retDist / retSpeed) * 60 * 2; // retraction time time += (retDist / retSpeed) * 60 * 2; // retraction time
} }
function moveTo(newpos, rate, comment) { function moveTo(newpos, rate, comment) {
if (comment) { if (comment) {
append(" ; " + comment); append(";; " + comment);
} }
let o = [!rate && !newpos.e ? 'G0' : 'G1']; let o = [!rate && !newpos.e ? 'G0' : 'G1'];
if (typeof newpos.x === 'number') { if (typeof newpos.x === 'number') {
@ -914,7 +926,7 @@ let gs_kiri_fdm = exports;
path.layer === 0 ? path.layer === 0 ?
(process.firstSliceHeight || process.sliceHeight) : path.height); (process.firstSliceHeight || process.sliceHeight) : path.height);
subst.z = zpos.toFixed(2); subst.z = (zpos + path.height).toFixed(3);
subst.Z = subst.z; subst.Z = subst.z;
subst.layer = layer; subst.layer = layer;
subst.height = path.height.toFixed(3); subst.height = path.height.toFixed(3);
@ -923,10 +935,10 @@ let gs_kiri_fdm = exports;
appendAllSub(pauseCmd) appendAllSub(pauseCmd)
} }
if (gcodeLayer) { if (gcodeLayer && gcodeLayer.length) {
appendAllSub(gcodeLayer); appendAllSub(gcodeLayer);
} else { } else {
append(`; --- layer ${layer} (${subst.height} @ ${subst.z}) ---`); append(`;; --- layer ${layer} (${subst.height} @ ${subst.z}) ---`);
} }
if (layer > 0 && process.layerRetract) { if (layer > 0 && process.layerRetract) {
@ -1000,9 +1012,9 @@ let gs_kiri_fdm = exports;
// re-engage post-retraction before new extrusion // re-engage post-retraction before new extrusion
if (out.emit && retracted) { if (out.emit && retracted) {
// when enabled, resume previous Z // when enabled, resume previous Z
if (zhop && pos.z != zpos) moveTo({z:zpos}, seekMMM, "zhop down"); if (zhop && pos.z != zpos) moveTo({z:zpos}, seekMMM, "z-hop end");
// re-engage retracted filament // re-engage retracted filament
moveTo({e:retracted}, retSpeed, `engage ${retracted}`); moveTo({e:retracted}, retSpeed, `e-engage ${retracted}`);
retracted = 0; retracted = 0;
// optional dwell after re-engaging filament to allow pressure to build // optional dwell after re-engaging filament to allow pressure to build
if (retDwell) dwell(retDwell); if (retDwell) dwell(retDwell);
@ -1050,7 +1062,7 @@ let gs_kiri_fdm = exports;
append("; --- shutdown ---"); append("; --- shutdown ---");
appendAllSub(device.gcodePost); appendAllSub(device.gcodePost);
append(`; --- filament used: ${subst.material} mm ---`); append(`; --- filament used: ${subst.material} mm ---`);
append(`; --- print time: ${time}s ---`); append(`; --- print time: ${time.toFixed(0)}s ---`);
// force emit of buffer // force emit of buffer
append(); append();

View file

@ -1315,6 +1315,8 @@ self.kiri.copyright = exports.COPYRIGHT;
} else if (typ === 'textarea') { } else if (typ === 'textarea') {
if (Array.isArray(val)) { if (Array.isArray(val)) {
uie.value = val.join('\n'); uie.value = val.join('\n');
} else {
uie.value = '';
} }
} }
} }
@ -1355,7 +1357,7 @@ self.kiri.copyright = exports.COPYRIGHT;
nval = scope[key]; nval = scope[key];
} }
} else if (uie.type === 'textarea') { } else if (uie.type === 'textarea') {
nval = uie.value.trim().split('\n'); nval = uie.value.trim().split('\n').filter(v => v !== '');
} else { } else {
continue; continue;
} }