diff --git a/js/kiri-driver-fdm.js b/js/kiri-driver-fdm.js index adcaaa45..3047ebea 100644 --- a/js/kiri-driver-fdm.js +++ b/js/kiri-driver-fdm.js @@ -815,6 +815,7 @@ let gs_kiri_fdm = exports; append(`; Generated by Kiri:Moto ${exports.VERSION}`); append(`; ${new Date().toString()}`); appendSub("; Bed left:{left} right:{right} top:{top} bottom:{bottom}"); + append(`; Target: ${settings.filter[settings.mode]}`); append("; --- process ---"); for (let pk in process) { append("; " + pk + " = " + process[pk]); @@ -830,6 +831,17 @@ let gs_kiri_fdm = exports; if (line.indexOf('M83') >= 0) extrudeAbs = false; else if (line.indexOf('G90') >= 0) extrudeAbs = true; 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) { line.split(";")[0].split(' ').forEach(function (tok) { // use max E position from gcode-preamble @@ -848,14 +860,14 @@ let gs_kiri_fdm = exports; function retract(zhop) { retracted = retDist; - moveTo({e:-retracted}, retSpeed, `retract ${retDist}`); - if (zhop) moveTo({z:zpos + zhop}, seekMMM, "zhop up"); + moveTo({e:-retracted}, retSpeed, `e-retract ${retDist}`); + if (zhop) moveTo({z:zpos + zhop}, seekMMM, "z-hop start"); time += (retDist / retSpeed) * 60 * 2; // retraction time } function moveTo(newpos, rate, comment) { if (comment) { - append(" ; " + comment); + append(";; " + comment); } let o = [!rate && !newpos.e ? 'G0' : 'G1']; if (typeof newpos.x === 'number') { @@ -914,7 +926,7 @@ let gs_kiri_fdm = exports; path.layer === 0 ? (process.firstSliceHeight || process.sliceHeight) : path.height); - subst.z = zpos.toFixed(2); + subst.z = (zpos + path.height).toFixed(3); subst.Z = subst.z; subst.layer = layer; subst.height = path.height.toFixed(3); @@ -923,10 +935,10 @@ let gs_kiri_fdm = exports; appendAllSub(pauseCmd) } - if (gcodeLayer) { + if (gcodeLayer && gcodeLayer.length) { appendAllSub(gcodeLayer); } else { - append(`; --- layer ${layer} (${subst.height} @ ${subst.z}) ---`); + append(`;; --- layer ${layer} (${subst.height} @ ${subst.z}) ---`); } if (layer > 0 && process.layerRetract) { @@ -1000,9 +1012,9 @@ let gs_kiri_fdm = exports; // re-engage post-retraction before new extrusion if (out.emit && retracted) { // 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 - moveTo({e:retracted}, retSpeed, `engage ${retracted}`); + moveTo({e:retracted}, retSpeed, `e-engage ${retracted}`); retracted = 0; // optional dwell after re-engaging filament to allow pressure to build if (retDwell) dwell(retDwell); @@ -1050,7 +1062,7 @@ let gs_kiri_fdm = exports; append("; --- shutdown ---"); appendAllSub(device.gcodePost); append(`; --- filament used: ${subst.material} mm ---`); - append(`; --- print time: ${time}s ---`); + append(`; --- print time: ${time.toFixed(0)}s ---`); // force emit of buffer append(); diff --git a/js/kiri.js b/js/kiri.js index 0a114a2a..58edf61f 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -1315,6 +1315,8 @@ self.kiri.copyright = exports.COPYRIGHT; } else if (typ === 'textarea') { if (Array.isArray(val)) { uie.value = val.join('\n'); + } else { + uie.value = ''; } } } @@ -1355,7 +1357,7 @@ self.kiri.copyright = exports.COPYRIGHT; nval = scope[key]; } } else if (uie.type === 'textarea') { - nval = uie.value.trim().split('\n'); + nval = uie.value.trim().split('\n').filter(v => v !== ''); } else { continue; }