diff --git a/src/kiri/core/boxes.js b/src/kiri/core/boxes.js index ac18430e..7e6cbaed 100644 --- a/src/kiri/core/boxes.js +++ b/src/kiri/core/boxes.js @@ -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; diff --git a/src/kiri/core/settings.js b/src/kiri/core/settings.js index db9d40ae..ec98c819 100644 --- a/src/kiri/core/settings.js +++ b/src/kiri/core/settings.js @@ -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 }); } } } diff --git a/src/kiri/core/ui.js b/src/kiri/core/ui.js index a13ce209..bb665d31 100644 --- a/src/kiri/core/ui.js +++ b/src/kiri/core/ui.js @@ -672,6 +672,7 @@ function addUnits(input, round) { } else { input.value = value; } + // console.log({ value }, input.real, input.value ); return input.real; }; return input; diff --git a/src/kiri/mode/cam/cl-origin.js b/src/kiri/mode/cam/cl-origin.js index 073a7f08..e971a560 100644 --- a/src/kiri/mode/cam/cl-origin.js +++ b/src/kiri/mode/cam/cl-origin.js @@ -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(); } diff --git a/src/kiri/mode/cam/cl-tab.js b/src/kiri/mode/cam/cl-tab.js index b65df0d5..6012ae0d 100644 --- a/src/kiri/mode/cam/cl-tab.js +++ b/src/kiri/mode/cam/cl-tab.js @@ -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) { diff --git a/src/kiri/mode/cam/init-menu.js b/src/kiri/mode/cam/init-menu.js index d9972c13..e628c58f 100644 --- a/src/kiri/mode/cam/init-menu.js +++ b/src/kiri/mode/cam/init-menu.js @@ -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 }),