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
|
||||
* cap path ends
|
||||
* rulers need to follow workspace units
|
||||
* rough/outline shadow needs to respect flats even when not used as slices
|
||||
* onshape mouse mapping option
|
||||
|
||||
## 2.4
|
||||
* cnc: tracing (chamfer, engrave), milling visualization
|
||||
* cnc: auto feature detection (slicing), manual tabs
|
||||
* cnc: add tabs to shadow and slice model (for topo)
|
||||
* cnc: step down should interpolate top/bottom again
|
||||
* cnc: adaptive shadow-line generation for small parts collision detection
|
||||
* fdm: manual supports, continuous printing
|
||||
* onshape: session token timeout bug
|
||||
* all: 2d image to 3d part
|
||||
## 2.4 tenative list
|
||||
* cnc
|
||||
* tracing (chamfer, engrave)
|
||||
* milling visualization
|
||||
* auto feature detection (slicing), manual tabs
|
||||
* add tabs to shadow and slice model (for topo)
|
||||
* step down should interpolate top/bottom again
|
||||
* adaptive shadow-line generation for small parts collision detection
|
||||
* 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
|
||||
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@
|
|||
}
|
||||
|
||||
function unitsSave() {
|
||||
API.conf.update();
|
||||
API.conf.update({controller:true});
|
||||
platform.update_size();
|
||||
}
|
||||
|
||||
|
|
@ -1421,7 +1421,7 @@
|
|||
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}),
|
||||
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}),
|
||||
exportOcto: UC.newBoolean(`OctoPrint`, booleanSave),
|
||||
|
|
|
|||
|
|
@ -961,7 +961,6 @@
|
|||
|
||||
function platformUpdateOrigin() {
|
||||
platform.update_bounds();
|
||||
// return;
|
||||
|
||||
let dev = settings.device;
|
||||
let proc = settings.process;
|
||||
|
|
@ -978,9 +977,6 @@
|
|||
let z = 0;
|
||||
if (MODE === MODES.CAM && proc.camOriginTop) {
|
||||
z = (topZ + topZD) + 0.01;
|
||||
// if (!hasStock) {
|
||||
// z += proc.camZTopOffset * unitScale();
|
||||
// }
|
||||
}
|
||||
if (!center) {
|
||||
if (hasStock) {
|
||||
|
|
@ -1001,7 +997,7 @@
|
|||
y = -stockCenter.y;
|
||||
}
|
||||
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) {
|
||||
SPACE.platform.setOrigin(x,y,z);
|
||||
} else {
|
||||
|
|
@ -1051,7 +1047,7 @@
|
|||
SPACE.setSkyColor(0xffffff);
|
||||
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);
|
||||
platform.update_origin();
|
||||
SPACE.scene.freeze(frozen);
|
||||
|
|
@ -1208,7 +1204,9 @@
|
|||
platform.select(widget, shift);
|
||||
platform.compute_max_z();
|
||||
API.event.emit('widget.add', widget);
|
||||
if (nolayout) return;
|
||||
if (nolayout) {
|
||||
return;
|
||||
}
|
||||
if (!grouping) {
|
||||
platformGroupDone();
|
||||
} else if (feature.drop_layout) {
|
||||
|
|
@ -1452,12 +1450,15 @@
|
|||
}
|
||||
}
|
||||
|
||||
function updateSettings() {
|
||||
function updateSettings(opt = {}) {
|
||||
updateSettingsFromFields(settings.controller);
|
||||
switch (settings.controller.units) {
|
||||
case 'mm': UC.setUnits(1); break;
|
||||
case 'in': UC.setUnits(25.4); break;
|
||||
}
|
||||
if (opt.controller) {
|
||||
return;
|
||||
}
|
||||
updateSettingsFromFields(settings.device);
|
||||
updateSettingsFromFields(settings.process);
|
||||
let device = settings.device;
|
||||
|
|
|
|||
|
|
@ -151,12 +151,13 @@
|
|||
updateGroupShow(group);
|
||||
});
|
||||
letMode = mode;
|
||||
if (nohide) {
|
||||
return;
|
||||
}
|
||||
hasModes.forEach(function(div) {
|
||||
div.setMode(div._group && !groupShow[div._group] ? NOMODE : mode);
|
||||
});
|
||||
if (!nohide) {
|
||||
hidePoppers();
|
||||
}
|
||||
hidePoppers();
|
||||
}
|
||||
|
||||
function setExpert(bool) {
|
||||
|
|
|
|||
|
|
@ -91,7 +91,6 @@
|
|||
let enabled = UI.camStockOn.checked;
|
||||
let offset = UI.camStockOffset.checked;
|
||||
let stockSet = offset || (proc.camStockX && proc.camStockY && proc.camStockZ > 0);
|
||||
let scale = API.view.unit_scale();
|
||||
let topZ = API.platform.top_z();
|
||||
let delta = 0;
|
||||
let csox = 0;
|
||||
|
|
@ -100,10 +99,9 @@
|
|||
|
||||
// create/inject cam stock if stock size other than default
|
||||
if (enabled && stockSet && widgets.length) {
|
||||
// UI.stock.style.display = offset ? 'inline-block' : 'none';
|
||||
let csx = proc.camStockX * scale;
|
||||
let csy = proc.camStockY * scale;
|
||||
let csz = proc.camStockZ * scale;
|
||||
let csx = proc.camStockX;
|
||||
let csy = proc.camStockY;
|
||||
let csz = proc.camStockZ;
|
||||
if (offset) {
|
||||
let min = { x: Infinity, y: Infinity, z: 0 };
|
||||
let max = { x: -Infinity, y: -Infinity, z: -Infinity };
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@
|
|||
rulerX = true,
|
||||
rulerY = true,
|
||||
rulerCenter = true,
|
||||
rulerFactor = 1,
|
||||
fontColor = '#333333',
|
||||
fontScale = 1.4, // computed relative to grid size
|
||||
rulerColor,
|
||||
|
|
@ -292,14 +293,11 @@
|
|||
requestRefresh();
|
||||
}
|
||||
|
||||
function setRulers(drawX, drawY, offsetCenter) {
|
||||
if (drawX === undefined) drawX = rulerX;
|
||||
if (drawY === undefined) drawY = rulerY;
|
||||
if (offsetCenter === undefined) offsetCenter = rulerCenter;
|
||||
|
||||
function setRulers(drawX = rulerX, drawY = rulerY, offsetCenter = rulerCenter, factor = rulerFactor) {
|
||||
rulerX = drawX;
|
||||
rulerY = drawY;
|
||||
rulerCenter = offsetCenter;
|
||||
rulerFactor = factor;
|
||||
|
||||
let x = platform.scale.x,
|
||||
y = isRound ? platform.scale.z : platform.scale.y,
|
||||
|
|
@ -343,11 +341,11 @@
|
|||
}
|
||||
|
||||
if (drawX) {
|
||||
let xPadding = labelSize * 4;
|
||||
let canvas = canvasInMesh(x + xPadding, labelSize, 'center', 'top', rulerColor);
|
||||
const xPadding = labelSize * 4;
|
||||
const canvas = canvasInMesh(x + xPadding, labelSize, 'center', 'top', rulerColor);
|
||||
|
||||
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.mesh.position.set(0, - h - labelSize / 2 - 5, zp);
|
||||
|
|
@ -361,12 +359,12 @@
|
|||
}
|
||||
|
||||
if (drawY) {
|
||||
let yPadding = labelSize;
|
||||
let canvas = canvasInMesh(labelSize * 4, y + yPadding, 'end', 'middle', rulerColor);
|
||||
const yPadding = labelSize;
|
||||
const canvas = canvasInMesh(labelSize * 4, y + yPadding, 'end', 'middle', rulerColor);
|
||||
|
||||
for (let i = rulerYFirst; i <= rulerYLast; i += gridUnitMajor) {
|
||||
let label = (offsetCenter ? i - (rulerYLast + rulerYFirst) / 2 :
|
||||
rulerYFirst + rulerYLast - i).round(1);
|
||||
const label = ((offsetCenter ? i - (rulerYLast + rulerYFirst) / 2 :
|
||||
rulerYFirst + rulerYLast - i) * factor).round(1);
|
||||
canvas.ctx.fillText('' + label, labelSize * 4, i + yPadding / 2);
|
||||
}
|
||||
canvas.mesh.position.set(-w - labelSize * 2 - 5, 0, zp);
|
||||
|
|
|
|||
Loading…
Reference in a new issue