fix slice,print,export for missing extruders

This commit is contained in:
Stewart Allen 2020-04-12 22:25:00 -04:00
commit 3d1ad7169c
2 changed files with 21 additions and 3 deletions

View file

@ -33,6 +33,17 @@ let gs_kiri_fdm = exports;
return Math.max(min,Math.min(max,v)); 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 * DRIVER SLICE CONTRACT
* *
@ -47,6 +58,7 @@ let gs_kiri_fdm = exports;
* @param {Function} ondone (called when complete with an array of Slice objects) * @param {Function} ondone (called when complete with an array of Slice objects)
*/ */
function slice(settings, widget, onupdate, ondone) { function slice(settings, widget, onupdate, ondone) {
fixExtruders(settings);
let spro = settings.process, let spro = settings.process,
sdev = settings.device, sdev = settings.device,
update_start = Date.now(), update_start = Date.now(),
@ -73,6 +85,10 @@ let gs_kiri_fdm = exports;
return ondone("invalid nozzle size"); return ondone("invalid nozzle size");
} }
if (spro.firstSliceHeight === 0) {
spro.firstSliceHeight = sliceHeight;
}
if (spro.firstSliceHeight < sliceHeight) { if (spro.firstSliceHeight < sliceHeight) {
DBUG.log("invalid first layer height < slice height"); DBUG.log("invalid first layer height < slice height");
DBUG.log("reverting to slice height"); DBUG.log("reverting to slice height");
@ -376,7 +392,7 @@ let gs_kiri_fdm = exports;
*/ */
function printSetup(print, update) { function printSetup(print, update) {
let widgets = print.widgets, let widgets = print.widgets,
settings = print.settings, settings = fixExtruders(print.settings),
device = settings.device, device = settings.device,
nozzle = device.extruders[0].extNozzle, nozzle = device.extruders[0].extNozzle,
process = settings.process, process = settings.process,
@ -697,7 +713,7 @@ let gs_kiri_fdm = exports;
*/ */
function printExport(print, online) { function printExport(print, online) {
let layers = print.output, let layers = print.output,
settings = print.settings, settings = fixExtruders(print.settings),
device = settings.device, device = settings.device,
extruders = device.extruders, extruders = device.extruders,
process = settings.process, process = settings.process,

View file

@ -1373,7 +1373,9 @@ self.kiri.copyright = exports.COPYRIGHT;
updateExtruderFields(device); updateExtruderFields(device);
}; };
UI.extAdd.onclick = function() { 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; device.internal = device.extruders.length - 1;
updateExtruderFields(device); updateExtruderFields(device);
}; };