diff --git a/js/kiri-driver-fdm.js b/js/kiri-driver-fdm.js index d9f913d9..436c69d5 100644 --- a/js/kiri-driver-fdm.js +++ b/js/kiri-driver-fdm.js @@ -33,6 +33,17 @@ let gs_kiri_fdm = exports; return Math.max(min,Math.min(max,v)); } + function fixExtruders(settings) { + Object.entries(settings.widget).forEach(arr => { + let [wid,val] = arr; + let dext = settings.device.extruders[val.extruder]; + if (!dext) { + settings.widget[wid].extruder = 0; + } + }); + return settings; + } + /** * DRIVER SLICE CONTRACT * @@ -47,6 +58,7 @@ let gs_kiri_fdm = exports; * @param {Function} ondone (called when complete with an array of Slice objects) */ function slice(settings, widget, onupdate, ondone) { + fixExtruders(settings); let spro = settings.process, sdev = settings.device, update_start = Date.now(), @@ -73,6 +85,10 @@ let gs_kiri_fdm = exports; return ondone("invalid nozzle size"); } + if (spro.firstSliceHeight === 0) { + spro.firstSliceHeight = sliceHeight; + } + if (spro.firstSliceHeight < sliceHeight) { DBUG.log("invalid first layer height < slice height"); DBUG.log("reverting to slice height"); @@ -376,7 +392,7 @@ let gs_kiri_fdm = exports; */ function printSetup(print, update) { let widgets = print.widgets, - settings = print.settings, + settings = fixExtruders(print.settings), device = settings.device, nozzle = device.extruders[0].extNozzle, process = settings.process, @@ -697,7 +713,7 @@ let gs_kiri_fdm = exports; */ function printExport(print, online) { let layers = print.output, - settings = print.settings, + settings = fixExtruders(print.settings), device = settings.device, extruders = device.extruders, process = settings.process, diff --git a/js/kiri.js b/js/kiri.js index 0d46b0cf..1fd2a685 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -1373,7 +1373,9 @@ self.kiri.copyright = exports.COPYRIGHT; updateExtruderFields(device); }; UI.extAdd.onclick = function() { - device.extruders.push(clone(device.extruders[device.internal])); + let copy = clone(device.extruders[device.internal]); + copy.extSelect = [`T${device.extruders.length}`]; + device.extruders.push(copy); device.internal = device.extruders.length - 1; updateExtruderFields(device); };