fix first time CAM use and processes. fix ability to use finishing X or Y only

This commit is contained in:
Stewart Allen 2020-02-10 17:41:59 -05:00
commit ee4316078e
2 changed files with 59 additions and 38 deletions

View file

@ -697,6 +697,9 @@ var gs_kiri_cam = exports;
drillToolDiam = getToolDiameter(conf, proc.drillTool), drillToolDiam = getToolDiameter(conf, proc.drillTool),
procRough = proc.roughingOn && proc.roughingDown && roughToolDiam, procRough = proc.roughingOn && proc.roughingDown && roughToolDiam,
procFinish = proc.finishingOn && proc.finishingDown && finishToolDiam, procFinish = proc.finishingOn && proc.finishingDown && finishToolDiam,
procFinishX = proc.finishingXOn && proc.finishingPlunge && finishToolDiam,
procFinishY = proc.finishingYOn && proc.finishingPlunge && finishToolDiam,
anyFinish = procFinish || procFinishX || procFinishY,
procFacing = proc.roughingOn && proc.camZTopOffset, procFacing = proc.roughingOn && proc.camZTopOffset,
procDrill = proc.drillingOn && proc.drillDown && proc.drillDownSpeed, procDrill = proc.drillingOn && proc.drillDown && proc.drillDownSpeed,
sliceDepth = MAX(0.1, MIN(proc.roughingDown, proc.finishingDown) / 3), sliceDepth = MAX(0.1, MIN(proc.roughingDown, proc.finishingDown) / 3),
@ -714,7 +717,7 @@ var gs_kiri_cam = exports;
return ondone("invalid slice depth"); return ondone("invalid slice depth");
} }
if (!(procRough || procFinish || procFacing || procDrill)) { if (!(procRough || anyFinish || procFacing || procDrill)) {
return ondone("no processes selected"); return ondone("no processes selected");
} }
@ -782,7 +785,7 @@ var gs_kiri_cam = exports;
shellRough = POLY.expand(shellRough, (roughToolDiam / 2) + proc.roughingStock, 0); shellRough = POLY.expand(shellRough, (roughToolDiam / 2) + proc.roughingStock, 0);
} }
if (procFinish && pocketOnly) { if (anyFinish && pocketOnly) {
shellFinish = POLY.expand(camShellPolys, -finishToolDiam/2, 0); shellFinish = POLY.expand(camShellPolys, -finishToolDiam/2, 0);
} }
@ -813,7 +816,7 @@ var gs_kiri_cam = exports;
sliceAll.appendAll(selected); sliceAll.appendAll(selected);
} }
if (procFinish) { if (anyFinish) {
var selected = []; var selected = [];
selectSlices(slices, proc.finishingDown, CPRO.FINISH, selected); selectSlices(slices, proc.finishingDown, CPRO.FINISH, selected);
sliceAll.appendAll(selected); sliceAll.appendAll(selected);

View file

@ -401,18 +401,18 @@ self.kiri.license = exports.LICENSE;
outputInvertX: false, outputInvertX: false,
outputInvertY: false outputInvertY: false
}, },
// current process name
cproc:{
FDM: "default",
CAM: "default",
LASER: "default"
},
// saved processes by name // saved processes by name
sproc:{ sproc:{
FDM: {}, FDM: {},
CAM: {}, CAM: {},
LASER: {} LASER: {}
}, },
// current process name
cproc:{
FDM: null,
CAM: null,
LASER: null
},
// cached device settings by mode // cached device settings by mode
cdev: { cdev: {
FDM: null, FDM: null,
@ -533,6 +533,13 @@ self.kiri.license = exports.LICENSE;
camTopZ = 0, camTopZ = 0,
showFavorites = SDB['dev-favorites'] === 'true'; showFavorites = SDB['dev-favorites'] === 'true';
// seed defaults. will get culled on save
settings.sproc.FDM.default = clone(settings.process);
settings.sproc.CAM.default = clone(settings.process);
settings.sproc.LASER.default = clone(settings.process);
settings.cdev.FDM = clone(settings.device);
settings.cdev.CAM = clone(settings.device);
DBUG.enable(); DBUG.enable();
if (SETUP.rm) renderMode = parseInt(SETUP.rm[0]); if (SETUP.rm) renderMode = parseInt(SETUP.rm[0]);
@ -581,6 +588,10 @@ self.kiri.license = exports.LICENSE;
* Stats accumulator * Stats accumulator
******************************************************************* */ ******************************************************************* */
function clone(o) {
return o ? JSON.parse(JSON.stringify(o)) : o;
}
function alert2(message, time) { function alert2(message, time) {
alerts.push([message, Date.now(), time]); alerts.push([message, Date.now(), time]);
updateAlerts(); updateAlerts();
@ -721,8 +732,12 @@ self.kiri.license = exports.LICENSE;
function cull(o, f) { function cull(o, f) {
for (var k in o) { for (var k in o) {
if (!o.hasOwnProperty(k)) continue; if (!o.hasOwnProperty(k)) {
if (!f.hasOwnProperty(k)) delete o[k]; continue;
}
if (!f.hasOwnProperty(k)) {
delete o[k];
}
} }
} }
@ -1907,7 +1922,7 @@ self.kiri.license = exports.LICENSE;
updateCamStock(); updateCamStock();
} }
function saveSettings(nocam) { function saveSettings() {
// remove settings invalid for a given mode (cleanup) // remove settings invalid for a given mode (cleanup)
cull(settings, settingsDefault); cull(settings, settingsDefault);
switch (settings.mode) { switch (settings.mode) {
@ -1922,12 +1937,11 @@ self.kiri.license = exports.LICENSE;
case 'LASER': case 'LASER':
cull(settings.device, sf.laser.d); cull(settings.device, sf.laser.d);
cull(settings.process, sf.laser.p); cull(settings.process, sf.laser.p);
settings.cdev.LASER = settings.device; settings.cdev.LASER = clone(settings.device);
break; break;
} }
cull(settings.cdev.FDM, sf.fdm.d); cull(settings.cdev.FDM, sf.fdm.d);
cull(settings.cdev.CAM, sf.cam.d); cull(settings.cdev.CAM, sf.cam.d);
// store camera view // store camera view
var view = SPACE.view.save(); var view = SPACE.view.save();
if (view.left || view.up) settings.controller.view = view; if (view.left || view.up) settings.controller.view = view;
@ -2021,29 +2035,31 @@ self.kiri.license = exports.LICENSE;
UI.reverseZoom.checked = settings.controller.reverseZoom; UI.reverseZoom.checked = settings.controller.reverseZoom;
} }
// update/integrate old settings // update/integrate old settings
["FDM","CAM","LASER"].forEach(function(mode) { // ["FDM","CAM","LASER"].forEach(function(mode) {
var key = 'ws-settings-'+mode, // var key = 'ws-settings-'+mode,
oset = ls2o(key, settings); // oset = ls2o(key, settings);
SDB.removeItem(key); // SDB.removeItem(key);
SDB.removeItem('ws-camera-'+mode); // SDB.removeItem('ws-camera-'+mode);
// create default settings if missing // // create default settings if missing
if (!settings.cproc[mode]) { // if (!settings.cproc[mode]) {
// merge bed into device // // merge bed into device
set(oset.device, oset.bed); // set(oset.device, oset.bed);
// merge output into process // // merge output into process
set(oset.process, oset.output); // set(oset.process, oset.output);
settings.cproc[mode] = "default"; // settings.cproc[mode] = "default";
settings.sproc[mode].default = oset.process; // settings.sproc[mode].default = clone(oset.process);
} // }
// copy device into cdev cache if missing // // copy device into cdev cache if missing
if (!settings.cdev[mode]) settings.cdev[mode] = oset.device; // if (!settings.cdev[mode]) {
// prefer tools object from CAM settings // settings.cdev[mode] = oset.device;
if (mode === 'CAM' && oset.tools) { // }
settings.tools = oset.tools; // // prefer tools object from CAM settings
} // if (mode === 'CAM' && oset.tools) {
// restore per-mode filter // settings.tools = oset.tools;
settings.filter[mode] = oset.filter[mode]; // }
}); // // restore per-mode filter
// settings.filter[mode] = oset.filter[mode];
// });
// merge custom filters from localstorage into settings // merge custom filters from localstorage into settings
localFilters.forEach(function(fname) { localFilters.forEach(function(fname) {
var fkey = "gcode-filter-"+fname, ov = ls2o(fkey); var fkey = "gcode-filter-"+fname, ov = ls2o(fkey);
@ -2359,7 +2375,9 @@ self.kiri.license = exports.LICENSE;
} }
settings.mode = mode; settings.mode = mode;
// restore cached device profile for this mode // restore cached device profile for this mode
if (settings.cdev[mode]) settings.device = settings.cdev[mode]; if (settings.cdev[mode]) {
settings.device = clone(settings.cdev[mode]);
}
// update device stat for FDM/CAM // update device stat for FDM/CAM
STATS.set('dn', settings.filter[mode] || '.laser.'); STATS.set('dn', settings.filter[mode] || '.laser.');
MODE = MODES[mode]; MODE = MODES[mode];