checkpoint range work
This commit is contained in:
parent
0c72cb2412
commit
2bb838cea9
4 changed files with 110 additions and 17 deletions
|
|
@ -1840,6 +1840,9 @@
|
|||
slaFirstOffset: UC.newInput(LANG.sa_opzo_s, {title:LANG.sa_opzo_l, convert:UC.toFloat, bound:UC.bound(0,1), modes:SLA}),
|
||||
slaAntiAlias: UC.newSelect(LANG.sa_opaa_s, {title:LANG.sa_opaa_l, modes:SLA}, "antialias"),
|
||||
|
||||
rangeGroup: UC.newGroup("ranges", null, {modes:FDM, group:"ranges"}),
|
||||
rangeList: UC.newRow([], {}),
|
||||
|
||||
settingsGroup: UC.newGroup(LANG.se_menu, $('settings')),
|
||||
settingsTable: UC.newRow([ UI.settingsLoad = UC.newButton(LANG.se_load, settingsLoad) ]),
|
||||
settingsTable: UC.newRow([ UI.settingsSave = UC.newButton(LANG.se_save, settingsSave) ]),
|
||||
|
|
@ -1851,9 +1854,6 @@
|
|||
return settings().device.spindleMax > 0;
|
||||
}
|
||||
|
||||
// FDM region override setup
|
||||
UI.sliceFillSparse.region = true;
|
||||
|
||||
// slider setup
|
||||
const slbar = 30;
|
||||
const slbar2 = slbar * 2;
|
||||
|
|
|
|||
|
|
@ -681,8 +681,10 @@
|
|||
return ranges;
|
||||
}
|
||||
|
||||
function updateRange(lo, hi, values) {
|
||||
// set process override values for a range
|
||||
function updateRange(lo, hi, values, noadd) {
|
||||
let exact;
|
||||
let empty = [];
|
||||
// remove matching values from overlapping ranges
|
||||
for (let range of getOverlappingRanges(lo, hi)) {
|
||||
if (range.lo === lo && range.hi === hi) {
|
||||
|
|
@ -691,22 +693,46 @@
|
|||
for (let key of Object.keys(values)) {
|
||||
delete range.fields[key];
|
||||
}
|
||||
if (Object.keys(range.fields).length === 0) {
|
||||
empty.push(range);
|
||||
}
|
||||
}
|
||||
let ranges = settings.process.ranges;
|
||||
// clear out empty ranges
|
||||
if (empty.length) {
|
||||
for (let range of empty) {
|
||||
let pos = ranges.indexOf(range);
|
||||
if (pos >= 0) {
|
||||
ranges.splice(pos,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
// noadd flag present when range is 0-max
|
||||
if (noadd) {
|
||||
API.event.emit("range.updates", ranges);
|
||||
return;
|
||||
}
|
||||
// add values to matched range or new range
|
||||
if (!exact) {
|
||||
exact = { lo, hi, fields: {} };
|
||||
settings.process.ranges.push(exact);
|
||||
ranges.push(exact);
|
||||
}
|
||||
for (let key of Object.keys(values)) {
|
||||
exact.fields[key] = values[key];
|
||||
}
|
||||
API.event.emit("range.updates", ranges);
|
||||
}
|
||||
|
||||
let overrides = {};
|
||||
|
||||
// updates that are region (slice range) dependent
|
||||
// updates editable fields that are range dependent
|
||||
function updateFieldsFromRange() {
|
||||
if (settings.mode !== 'FDM' || viewMode !== VIEWS.SLICE || !settings.process.ranges) {
|
||||
let okeys = Object.keys(overrides);
|
||||
if (okeys.length) {
|
||||
updateFieldsFromSettings(overrides);
|
||||
overrides = {};
|
||||
}
|
||||
return;
|
||||
}
|
||||
let match = 0;
|
||||
|
|
@ -731,6 +757,7 @@
|
|||
delete overrides[key];
|
||||
}
|
||||
}
|
||||
UC.refresh();
|
||||
}
|
||||
|
||||
function updateSlider() {
|
||||
|
|
@ -2074,18 +2101,20 @@
|
|||
return;
|
||||
}
|
||||
updateSettingsFromFields(device);
|
||||
// range-specific values
|
||||
if (settings.mode === 'FDM' && viewMode === VIEWS.SLICE) {
|
||||
let changes = {};
|
||||
let values = process;
|
||||
let { layer_lo, layer_hi, layer_max } = API.var;
|
||||
let range;
|
||||
let range = { lo: layer_lo, hi: layer_hi };
|
||||
let add = false;
|
||||
if (layer_lo > 0 || layer_hi < layer_max) {
|
||||
values = Object.clone(process);
|
||||
range = { lo: layer_lo, hi: layer_hi };
|
||||
add = true;
|
||||
}
|
||||
updateSettingsFromFields(values, undefined, changes);
|
||||
if (range) {
|
||||
updateRange(range.lo, range.hi, changes);
|
||||
updateRange(range.lo, range.hi, changes, !add);
|
||||
}
|
||||
} else {
|
||||
updateSettingsFromFields(process);
|
||||
|
|
|
|||
Loading…
Reference in a new issue