add origin offset reset button

This commit is contained in:
Stewart Allen 2025-07-10 19:01:00 -04:00
commit 4197377d85
6 changed files with 43 additions and 8 deletions

View file

@ -5,6 +5,10 @@ const boxes = [];
let lastBox;
export function clearboxes() {
boxes.length = 0;
}
export function getlastbox() {
return lastBox;
}
@ -19,7 +23,7 @@ export function delbox(name) {
export function addbox(point, color, name, dim = {x:1,y:1,z:1,rz:0}, opt = {}) {
delbox(name);
const box = boxes[name] = new Mesh(
const box = new Mesh(
new BoxGeometry(dim.x, dim.y, dim.z),
new MeshPhongMaterial({
transparent: true,
@ -28,6 +32,10 @@ export function addbox(point, color, name, dim = {x:1,y:1,z:1,rz:0}, opt = {}) {
})
);
if (name) {
boxes[name] = box;
}
box.position.x = point.x;
box.position.y = point.y;
box.position.z = point.z;

View file

@ -221,7 +221,7 @@ function updateSettingsFromFields(setrec, uirec = api.ui, changes) {
}
// given a settings region, update values of matching bound UI fields
function updateFieldsFromSettings(setrec, uirec = api.ui, trace) {
function updateFieldsFromSettings(setrec, uirec = api.ui, opt = {}) {
if (!setrec) {
updateFieldsFromSettings(settings.device);
updateFieldsFromSettings(settings.process);
@ -229,6 +229,9 @@ function updateFieldsFromSettings(setrec, uirec = api.ui, trace) {
updateExtruderFields(settings.device);
return;
}
if (opt.trace) {
console.log({ setrec, uirec });
}
for (let key in setrec) {
if (!setrec.hasOwnProperty(key)) {
continue;
@ -238,6 +241,9 @@ function updateFieldsFromSettings(setrec, uirec = api.ui, trace) {
continue;
}
let uie = uirec[key], typ = uie ? uie.type : null;
if (opt.trace) {
console.log({ key, uie, typ, val });
}
if (typ === 'text') {
if (uie.setv) {
uie.setv(val);
@ -271,6 +277,8 @@ function updateFieldsFromSettings(setrec, uirec = api.ui, trace) {
} else {
uie.value = '';
}
} else if (opt.trace) {
console.log('skipped', { key, val, typ });
}
}
}

View file

@ -672,6 +672,7 @@ function addUnits(input, round) {
} else {
input.value = value;
}
// console.log({ value }, input.real, input.value );
return input.real;
};
return input;

View file

@ -4,7 +4,7 @@ import { api } from '../../core/api.js';
import { env, clearPops } from './client.js';
import { CAM } from './driver-fe.js';
import { config } from '../../../geo/base.js';
import { addbox, delbox } from '../../core/boxes.js';
import { addbox, clearboxes } from '../../core/boxes.js';
export let originSelectOn = false;
@ -43,7 +43,7 @@ export function originSelect() {
if (points[center.key]) {
continue;
}
let box = addbox(center, color, center.key, undefined, { opacity: 1 });
let box = addbox(center, color, undefined, undefined, { opacity: 1 });
adds.push(box);
world.add(box);
box._origin = center;
@ -55,6 +55,17 @@ export function originSelect() {
});
}
export function originReset() {
let { process} = api.conf.get();
process.camOriginOffX = 0;
process.camOriginOffY = 0;
process.camOriginOffZ = 0;
api.settings.update_fields(process);
api.platform.update_origin();
api.conf.save();
originSelectDone();
}
export function originSelectDone() {
if (!originSelectOn) {
return;
@ -68,6 +79,7 @@ export function originSelectDone() {
}
widget.adds.length = 0;
});
clearboxes();
originSelectOn = false;
}
@ -108,7 +120,8 @@ function pointHoverUp(int, ev) {
process.camOriginOffX = x;
process.camOriginOffY = y;
process.camOriginOffZ = z;
api.settings.update_fields();
api.settings.update_fields(process);
api.platform.update_origin();
api.conf.save();
originSelectDone();
}

View file

@ -2,7 +2,7 @@
import { api } from '../../core/api.js';
import { env, isDark } from './client.js';
import { addbox, delbox } from '../../core/boxes.js';
import { addbox, delbox, clearboxes } from '../../core/boxes.js';
import { traceDone } from './cl-trace.js';
let showTab, lastTab, tab, iw, ic;
@ -107,6 +107,7 @@ export function clearTabs(widget, skiprec) {
if (!skiprec) {
delete api.widgets.annotate(widget.id).tab;
}
clearboxes();
}
export function updateTabs() {
@ -198,6 +199,7 @@ export function tabAdd() {
export function tabDone() {
delbox('tabb');
clearboxes();
api.hide.alert(alert);
api.feature.hover = false;
if (lastTab) {

View file

@ -1,6 +1,6 @@
import { api } from '../../core/api.js';
import { originSelect } from './cl-origin.js';
import { originReset, originSelect } from './cl-origin.js';
let LANG = api.language.current;
let { CAM } = api.const.MODES,
@ -80,7 +80,10 @@ export function menu() {
camOriginOffY: newInput(LANG.co_offy_s, {title:LANG.co_offy_l, convert:toFloat, units}),
camOriginOffZ: newInput(LANG.co_offz_s, {title:LANG.co_offz_l, convert:toFloat, units}),
separator: newBlank({ class:"set-sep", driven }),
camOriginSelect: newRow([ newButton("select", originSelect)], { class: "ext-buttons f-row" }),
camOriginSelect: newRow([
newButton("select", originSelect),
newButton("reset", originReset),
], { class: "ext-buttons f-row" }),
_____: newGroup(LANG.op_xprt_s, $('cam-expert'), { group:"cam_expert", modes:CAM, marker: false, driven, separator }),
camExpertFast: newBoolean(LANG.cx_fast_s, onBooleanClick, {title:LANG.cx_fast_l, show: () => !ui.camTrueShadow.checked }),
camTrueShadow: newBoolean(LANG.cx_true_s, onBooleanClick, {title:LANG.cx_true_l, show: () => !ui.camExpertFast.checked }),