add ruler imperial support. fix 'nohide' ui trigger when switching units. fix stock scale
This commit is contained in:
parent
bf42d4cf30
commit
78bc7ef3f6
6 changed files with 47 additions and 39 deletions
28
notes.md
28
notes.md
|
|
@ -3,17 +3,27 @@
|
||||||
## 2.3 remaining
|
## 2.3 remaining
|
||||||
* cap path ends
|
* cap path ends
|
||||||
* rulers need to follow workspace units
|
* rulers need to follow workspace units
|
||||||
|
* rough/outline shadow needs to respect flats even when not used as slices
|
||||||
* onshape mouse mapping option
|
* onshape mouse mapping option
|
||||||
|
|
||||||
## 2.4
|
## 2.4 tenative list
|
||||||
* cnc: tracing (chamfer, engrave), milling visualization
|
* cnc
|
||||||
* cnc: auto feature detection (slicing), manual tabs
|
* tracing (chamfer, engrave)
|
||||||
* cnc: add tabs to shadow and slice model (for topo)
|
* milling visualization
|
||||||
* cnc: step down should interpolate top/bottom again
|
* auto feature detection (slicing), manual tabs
|
||||||
* cnc: adaptive shadow-line generation for small parts collision detection
|
* add tabs to shadow and slice model (for topo)
|
||||||
* fdm: manual supports, continuous printing
|
* step down should interpolate top/bottom again
|
||||||
* onshape: session token timeout bug
|
* adaptive shadow-line generation for small parts collision detection
|
||||||
* all: 2d image to 3d part
|
* fdm
|
||||||
|
* manual supports
|
||||||
|
* continuous printing (z belt systems)
|
||||||
|
* laser
|
||||||
|
* drag knife support
|
||||||
|
* onshape
|
||||||
|
* session token timeout bug
|
||||||
|
* all
|
||||||
|
* 2d image to 3d part
|
||||||
|
* circular fit/layout when no-layout to prevent collisions
|
||||||
|
|
||||||
## `C` cosmetic, `F` functional, `P` performance, `B` bug fix
|
## `C` cosmetic, `F` functional, `P` performance, `B` bug fix
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function unitsSave() {
|
function unitsSave() {
|
||||||
API.conf.update();
|
API.conf.update({controller:true});
|
||||||
platform.update_size();
|
platform.update_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1421,7 +1421,7 @@
|
||||||
alignTop: UC.newBoolean(LANG.op_alig_s, booleanSave, {title:LANG.op_alig_l}),
|
alignTop: UC.newBoolean(LANG.op_alig_s, booleanSave, {title:LANG.op_alig_l}),
|
||||||
autoLayout: UC.newBoolean(LANG.op_auto_s, booleanSave, {title:LANG.op_auto_l}),
|
autoLayout: UC.newBoolean(LANG.op_auto_s, booleanSave, {title:LANG.op_auto_l}),
|
||||||
freeLayout: UC.newBoolean(LANG.op_free_s, booleanSave, {title:LANG.op_free_l}),
|
freeLayout: UC.newBoolean(LANG.op_free_s, booleanSave, {title:LANG.op_free_l}),
|
||||||
units: UC.newSelect(LANG.op_unit_s, {title: LANG.op_unit_l, action:unitsSave, modes:CAM}, "units"),
|
units: UC.newSelect(LANG.op_unit_s, {title: LANG.op_unit_l, action:unitsSave, modes:CAM, trace:true}, "units"),
|
||||||
|
|
||||||
export: UC.newGroup(LANG.xp_menu, $('prefs-xpo'), {inline: true}),
|
export: UC.newGroup(LANG.xp_menu, $('prefs-xpo'), {inline: true}),
|
||||||
exportOcto: UC.newBoolean(`OctoPrint`, booleanSave),
|
exportOcto: UC.newBoolean(`OctoPrint`, booleanSave),
|
||||||
|
|
|
||||||
|
|
@ -961,7 +961,6 @@
|
||||||
|
|
||||||
function platformUpdateOrigin() {
|
function platformUpdateOrigin() {
|
||||||
platform.update_bounds();
|
platform.update_bounds();
|
||||||
// return;
|
|
||||||
|
|
||||||
let dev = settings.device;
|
let dev = settings.device;
|
||||||
let proc = settings.process;
|
let proc = settings.process;
|
||||||
|
|
@ -978,9 +977,6 @@
|
||||||
let z = 0;
|
let z = 0;
|
||||||
if (MODE === MODES.CAM && proc.camOriginTop) {
|
if (MODE === MODES.CAM && proc.camOriginTop) {
|
||||||
z = (topZ + topZD) + 0.01;
|
z = (topZ + topZD) + 0.01;
|
||||||
// if (!hasStock) {
|
|
||||||
// z += proc.camZTopOffset * unitScale();
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
if (!center) {
|
if (!center) {
|
||||||
if (hasStock) {
|
if (hasStock) {
|
||||||
|
|
@ -1001,7 +997,7 @@
|
||||||
y = -stockCenter.y;
|
y = -stockCenter.y;
|
||||||
}
|
}
|
||||||
settings.origin = {x, y, z};
|
settings.origin = {x, y, z};
|
||||||
SPACE.platform.setRulers(ruler, ruler, center);
|
SPACE.platform.setRulers(ruler, ruler, center, 1/unitScale());
|
||||||
if (settings.controller.showOrigin && MODE !== MODES.SLA) {
|
if (settings.controller.showOrigin && MODE !== MODES.SLA) {
|
||||||
SPACE.platform.setOrigin(x,y,z);
|
SPACE.platform.setOrigin(x,y,z);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1051,7 +1047,7 @@
|
||||||
SPACE.setSkyColor(0xffffff);
|
SPACE.setSkyColor(0xffffff);
|
||||||
DOC.body.classList.remove('dark');
|
DOC.body.classList.remove('dark');
|
||||||
}
|
}
|
||||||
SPACE.platform.setRulers(ruler, ruler, proc.outputOriginCenter);
|
SPACE.platform.setRulers(ruler, ruler, proc.outputOriginCenter, 1/unitScale());
|
||||||
SPACE.platform.setGZOff(height/2 - 0.1);
|
SPACE.platform.setGZOff(height/2 - 0.1);
|
||||||
platform.update_origin();
|
platform.update_origin();
|
||||||
SPACE.scene.freeze(frozen);
|
SPACE.scene.freeze(frozen);
|
||||||
|
|
@ -1208,7 +1204,9 @@
|
||||||
platform.select(widget, shift);
|
platform.select(widget, shift);
|
||||||
platform.compute_max_z();
|
platform.compute_max_z();
|
||||||
API.event.emit('widget.add', widget);
|
API.event.emit('widget.add', widget);
|
||||||
if (nolayout) return;
|
if (nolayout) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!grouping) {
|
if (!grouping) {
|
||||||
platformGroupDone();
|
platformGroupDone();
|
||||||
} else if (feature.drop_layout) {
|
} else if (feature.drop_layout) {
|
||||||
|
|
@ -1452,12 +1450,15 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateSettings() {
|
function updateSettings(opt = {}) {
|
||||||
updateSettingsFromFields(settings.controller);
|
updateSettingsFromFields(settings.controller);
|
||||||
switch (settings.controller.units) {
|
switch (settings.controller.units) {
|
||||||
case 'mm': UC.setUnits(1); break;
|
case 'mm': UC.setUnits(1); break;
|
||||||
case 'in': UC.setUnits(25.4); break;
|
case 'in': UC.setUnits(25.4); break;
|
||||||
}
|
}
|
||||||
|
if (opt.controller) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
updateSettingsFromFields(settings.device);
|
updateSettingsFromFields(settings.device);
|
||||||
updateSettingsFromFields(settings.process);
|
updateSettingsFromFields(settings.process);
|
||||||
let device = settings.device;
|
let device = settings.device;
|
||||||
|
|
|
||||||
|
|
@ -151,12 +151,13 @@
|
||||||
updateGroupShow(group);
|
updateGroupShow(group);
|
||||||
});
|
});
|
||||||
letMode = mode;
|
letMode = mode;
|
||||||
|
if (nohide) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
hasModes.forEach(function(div) {
|
hasModes.forEach(function(div) {
|
||||||
div.setMode(div._group && !groupShow[div._group] ? NOMODE : mode);
|
div.setMode(div._group && !groupShow[div._group] ? NOMODE : mode);
|
||||||
});
|
});
|
||||||
if (!nohide) {
|
hidePoppers();
|
||||||
hidePoppers();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setExpert(bool) {
|
function setExpert(bool) {
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,6 @@
|
||||||
let enabled = UI.camStockOn.checked;
|
let enabled = UI.camStockOn.checked;
|
||||||
let offset = UI.camStockOffset.checked;
|
let offset = UI.camStockOffset.checked;
|
||||||
let stockSet = offset || (proc.camStockX && proc.camStockY && proc.camStockZ > 0);
|
let stockSet = offset || (proc.camStockX && proc.camStockY && proc.camStockZ > 0);
|
||||||
let scale = API.view.unit_scale();
|
|
||||||
let topZ = API.platform.top_z();
|
let topZ = API.platform.top_z();
|
||||||
let delta = 0;
|
let delta = 0;
|
||||||
let csox = 0;
|
let csox = 0;
|
||||||
|
|
@ -100,10 +99,9 @@
|
||||||
|
|
||||||
// create/inject cam stock if stock size other than default
|
// create/inject cam stock if stock size other than default
|
||||||
if (enabled && stockSet && widgets.length) {
|
if (enabled && stockSet && widgets.length) {
|
||||||
// UI.stock.style.display = offset ? 'inline-block' : 'none';
|
let csx = proc.camStockX;
|
||||||
let csx = proc.camStockX * scale;
|
let csy = proc.camStockY;
|
||||||
let csy = proc.camStockY * scale;
|
let csz = proc.camStockZ;
|
||||||
let csz = proc.camStockZ * scale;
|
|
||||||
if (offset) {
|
if (offset) {
|
||||||
let min = { x: Infinity, y: Infinity, z: 0 };
|
let min = { x: Infinity, y: Infinity, z: 0 };
|
||||||
let max = { x: -Infinity, y: -Infinity, z: -Infinity };
|
let max = { x: -Infinity, y: -Infinity, z: -Infinity };
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@
|
||||||
rulerX = true,
|
rulerX = true,
|
||||||
rulerY = true,
|
rulerY = true,
|
||||||
rulerCenter = true,
|
rulerCenter = true,
|
||||||
|
rulerFactor = 1,
|
||||||
fontColor = '#333333',
|
fontColor = '#333333',
|
||||||
fontScale = 1.4, // computed relative to grid size
|
fontScale = 1.4, // computed relative to grid size
|
||||||
rulerColor,
|
rulerColor,
|
||||||
|
|
@ -292,14 +293,11 @@
|
||||||
requestRefresh();
|
requestRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
function setRulers(drawX, drawY, offsetCenter) {
|
function setRulers(drawX = rulerX, drawY = rulerY, offsetCenter = rulerCenter, factor = rulerFactor) {
|
||||||
if (drawX === undefined) drawX = rulerX;
|
|
||||||
if (drawY === undefined) drawY = rulerY;
|
|
||||||
if (offsetCenter === undefined) offsetCenter = rulerCenter;
|
|
||||||
|
|
||||||
rulerX = drawX;
|
rulerX = drawX;
|
||||||
rulerY = drawY;
|
rulerY = drawY;
|
||||||
rulerCenter = offsetCenter;
|
rulerCenter = offsetCenter;
|
||||||
|
rulerFactor = factor;
|
||||||
|
|
||||||
let x = platform.scale.x,
|
let x = platform.scale.x,
|
||||||
y = isRound ? platform.scale.z : platform.scale.y,
|
y = isRound ? platform.scale.z : platform.scale.y,
|
||||||
|
|
@ -343,11 +341,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drawX) {
|
if (drawX) {
|
||||||
let xPadding = labelSize * 4;
|
const xPadding = labelSize * 4;
|
||||||
let canvas = canvasInMesh(x + xPadding, labelSize, 'center', 'top', rulerColor);
|
const canvas = canvasInMesh(x + xPadding, labelSize, 'center', 'top', rulerColor);
|
||||||
|
|
||||||
for (let i = rulerXFirst; i <= rulerXLast; i += gridUnitMajor) {
|
for (let i = rulerXFirst; i <= rulerXLast; i += gridUnitMajor) {
|
||||||
let label = (offsetCenter ? i - (rulerXLast + rulerXFirst) / 2 : i).round(1);
|
const label = ((offsetCenter ? i - (rulerXLast + rulerXFirst) / 2 : i) * factor).round(1);
|
||||||
canvas.ctx.fillText('' + label, i + xPadding / 2, 0);
|
canvas.ctx.fillText('' + label, i + xPadding / 2, 0);
|
||||||
}
|
}
|
||||||
canvas.mesh.position.set(0, - h - labelSize / 2 - 5, zp);
|
canvas.mesh.position.set(0, - h - labelSize / 2 - 5, zp);
|
||||||
|
|
@ -361,12 +359,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drawY) {
|
if (drawY) {
|
||||||
let yPadding = labelSize;
|
const yPadding = labelSize;
|
||||||
let canvas = canvasInMesh(labelSize * 4, y + yPadding, 'end', 'middle', rulerColor);
|
const canvas = canvasInMesh(labelSize * 4, y + yPadding, 'end', 'middle', rulerColor);
|
||||||
|
|
||||||
for (let i = rulerYFirst; i <= rulerYLast; i += gridUnitMajor) {
|
for (let i = rulerYFirst; i <= rulerYLast; i += gridUnitMajor) {
|
||||||
let label = (offsetCenter ? i - (rulerYLast + rulerYFirst) / 2 :
|
const label = ((offsetCenter ? i - (rulerYLast + rulerYFirst) / 2 :
|
||||||
rulerYFirst + rulerYLast - i).round(1);
|
rulerYFirst + rulerYLast - i) * factor).round(1);
|
||||||
canvas.ctx.fillText('' + label, labelSize * 4, i + yPadding / 2);
|
canvas.ctx.fillText('' + label, labelSize * 4, i + yPadding / 2);
|
||||||
}
|
}
|
||||||
canvas.mesh.position.set(-w - labelSize * 2 - 5, 0, zp);
|
canvas.mesh.position.set(-w - labelSize * 2 - 5, 0, zp);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue