fix cam tools dialog
This commit is contained in:
parent
741016ca7b
commit
a87e0c937f
5 changed files with 324 additions and 344 deletions
|
|
@ -1,36 +1,25 @@
|
||||||
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
||||||
import { api } from '../kiri/api.js';
|
|
||||||
import { consts } from '../kiri/consts.js';
|
|
||||||
import { settings } from '../kiri/settings.js';
|
|
||||||
|
|
||||||
// Convert root destructuring to imports
|
import { $ } from '../../moto/webui.js';
|
||||||
import { kiri } from '../kiri.js';
|
import { api } from '../../kiri/api.js';
|
||||||
|
import { consts } from '../../kiri/consts.js';
|
||||||
|
import { settings as setconf } from '../../kiri/settings.js';
|
||||||
|
|
||||||
|
const DEG2RAD = Math.PI / 180;
|
||||||
|
|
||||||
const DEG2RAD = Math.PI / 180;
|
let { MODES } = consts,
|
||||||
let { kiri } = root,
|
|
||||||
{ api, consts } = kiri,
|
|
||||||
{ uc, ui } = api,
|
|
||||||
{ MODES } = consts,
|
|
||||||
DOC = document,
|
DOC = document,
|
||||||
selectedTool = null,
|
selectedTool = null,
|
||||||
editTools = null,
|
editTools = null,
|
||||||
maxTool = 0,
|
maxTool = 0,
|
||||||
toolNames = ['endmill','ballmill','tapermill','drill'];
|
toolNames = ['endmill','ballmill','tapermill','drill'];
|
||||||
|
|
||||||
api.show.tools = showTools;
|
function settings() {
|
||||||
|
|
||||||
// extend API
|
|
||||||
Object.assign(api.tool, {
|
|
||||||
update: updateTool
|
|
||||||
});
|
|
||||||
|
|
||||||
function settings() {
|
|
||||||
return api.conf.get();
|
return api.conf.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderTools() {
|
function renderTools() {
|
||||||
ui.toolSelect.innerHTML = '';
|
api.ui.toolSelect.innerHTML = '';
|
||||||
maxTool = 0;
|
maxTool = 0;
|
||||||
editTools.forEach(function(tool, index) {
|
editTools.forEach(function(tool, index) {
|
||||||
maxTool = Math.max(maxTool, tool.number);
|
maxTool = Math.max(maxTool, tool.number);
|
||||||
|
|
@ -38,13 +27,12 @@ import { kiri } from '../kiri.js';
|
||||||
let opt = DOC.createElement('option');
|
let opt = DOC.createElement('option');
|
||||||
opt.appendChild(DOC.createTextNode(tool.name));
|
opt.appendChild(DOC.createTextNode(tool.name));
|
||||||
opt.onclick = function() { selectTool(tool) };
|
opt.onclick = function() { selectTool(tool) };
|
||||||
ui.toolSelect.appendChild(opt);
|
api.ui.toolSelect.appendChild(opt);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function selectTool(tool) {
|
||||||
|
const { ui } = api;
|
||||||
function selectTool(tool) {
|
|
||||||
selectedTool = tool;
|
selectedTool = tool;
|
||||||
ui.toolName.value = tool.name;
|
ui.toolName.value = tool.name;
|
||||||
ui.toolNum.value = tool.number;
|
ui.toolNum.value = tool.number;
|
||||||
|
|
@ -61,14 +49,13 @@ import { kiri } from '../kiri.js';
|
||||||
).round(1);
|
).round(1);
|
||||||
} else if(tool === 'drill'){
|
} else if(tool === 'drill'){
|
||||||
ui.toolTaperAngle.value = 118;
|
ui.toolTaperAngle.value = 118;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ui.toolTaperAngle.value = 0;
|
ui.toolTaperAngle.value = 0;
|
||||||
}
|
}
|
||||||
renderTool(tool);
|
renderTool(tool);
|
||||||
}
|
}
|
||||||
|
|
||||||
function otag(o) {
|
function otag(o) {
|
||||||
if (Array.isArray(o)) {
|
if (Array.isArray(o)) {
|
||||||
let out = []
|
let out = []
|
||||||
o.forEach(oe => out.push(otag(oe)));
|
o.forEach(oe => out.push(otag(oe)));
|
||||||
|
|
@ -85,9 +72,10 @@ import { kiri } from '../kiri.js';
|
||||||
tags.push(`<${key} ${att.join(' ')}></${key}>`);
|
tags.push(`<${key} ${att.join(' ')}></${key}>`);
|
||||||
});
|
});
|
||||||
return tags.join('');
|
return tags.join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderTool(tool) {
|
function renderTool(tool) {
|
||||||
|
const { ui } = api;
|
||||||
let type = selectedTool.type;
|
let type = selectedTool.type;
|
||||||
let taper = type=== 'tapermill'
|
let taper = type=== 'tapermill'
|
||||||
let drill = type === 'drill'
|
let drill = type === 'drill'
|
||||||
|
|
@ -144,7 +132,6 @@ import { kiri } from '../kiri.js';
|
||||||
`z`
|
`z`
|
||||||
].join('\n')}});
|
].join('\n')}});
|
||||||
} else if(drill){
|
} else if(drill){
|
||||||
|
|
||||||
const x1 = off.x + flute_off,
|
const x1 = off.x + flute_off,
|
||||||
y1 = off.y + shaft_len,
|
y1 = off.y + shaft_len,
|
||||||
x2 = dim.w - off.x - flute_off,
|
x2 = dim.w - off.x - flute_off,
|
||||||
|
|
@ -207,9 +194,10 @@ import { kiri } from '../kiri.js';
|
||||||
}
|
}
|
||||||
svg.innerHTML = otag(parts);
|
svg.innerHTML = otag(parts);
|
||||||
}, 10);
|
}, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTool(ev) {
|
export function updateTool(ev) {
|
||||||
|
const { ui } = api;
|
||||||
selectedTool.name = ui.toolName.value;
|
selectedTool.name = ui.toolName.value;
|
||||||
selectedTool.number = parseInt(ui.toolNum.value);
|
selectedTool.number = parseInt(ui.toolNum.value);
|
||||||
selectedTool.flute_diam = parseFloat(ui.toolFluteDiam.value);
|
selectedTool.flute_diam = parseFloat(ui.toolFluteDiam.value);
|
||||||
|
|
@ -238,20 +226,20 @@ import { kiri } from '../kiri.js';
|
||||||
ui.toolSelect.selectedIndex = selectedTool.order;
|
ui.toolSelect.selectedIndex = selectedTool.order;
|
||||||
setToolChanged(true);
|
setToolChanged(true);
|
||||||
renderTool(selectedTool);
|
renderTool(selectedTool);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setToolChanged(changed) {
|
function setToolChanged(changed) {
|
||||||
editTools.changed = changed;
|
editTools.changed = changed;
|
||||||
ui.toolsSave.disabled = !changed;
|
api.ui.toolsSave.disabled = !changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showTools() {
|
export function showTools() {
|
||||||
if (api.mode.get_id() !== MODES.CAM) return;
|
if (api.mode.get_id() !== MODES.CAM) return;
|
||||||
api.settings.sync.get().then(_showTools);
|
setconf.sync.get().then(_showTools);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _showTools() {
|
function _showTools() {
|
||||||
let selectedIndex = null;
|
const { ui } = api;
|
||||||
|
|
||||||
editTools = settings().tools.slice().sort((a,b) => {
|
editTools = settings().tools.slice().sort((a,b) => {
|
||||||
return a.name > b.name ? 1 : -1;
|
return a.name > b.name ? 1 : -1;
|
||||||
|
|
@ -321,11 +309,11 @@ import { kiri } from '../kiri.js';
|
||||||
api.conf.save();
|
api.conf.save();
|
||||||
api.conf.update_fields();
|
api.conf.update_fields();
|
||||||
api.event.settings();
|
api.event.settings();
|
||||||
api.settings.sync.put();
|
setconf.sync.put();
|
||||||
};
|
};
|
||||||
ui.toolsImport.onclick = (ev) => api.event.import(ev);
|
ui.toolsImport.onclick = (ev) => api.event.import(ev);
|
||||||
ui.toolsExport.onclick = () => {
|
ui.toolsExport.onclick = () => {
|
||||||
uc.prompt("Export Tools Filename", "tools").then(name => {
|
api.uc.prompt("Export Tools Filename", "tools").then(name => {
|
||||||
if (!name) {
|
if (!name) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -348,7 +336,9 @@ import { kiri } from '../kiri.js';
|
||||||
|
|
||||||
api.dialog.show('tools');
|
api.dialog.show('tools');
|
||||||
ui.toolSelect.focus();
|
ui.toolSelect.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const tools = {
|
||||||
export { settings, renderTools, selectTool, otag, renderTool, updateTool, setToolChanged, showTools, DEG2RAD, opt, out, tags, att, tv, type, taper, drill, drillAngleRad, svg, yoff, mid, x1, fl, y1, x2, y2, rad, xend, CAM, angle, len, selectedIndex, metric, clone, split, endv, record };
|
updateTool,
|
||||||
|
showTools
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -429,21 +429,3 @@ CXDLP.render = function(params) {
|
||||||
}
|
}
|
||||||
return { lines, area };
|
return { lines, area };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!self.navigator && self.process && self.process.env) {
|
|
||||||
let fs = require('fs');
|
|
||||||
eval(fs.readFileSync("src/add/class.js").toString());
|
|
||||||
let args = process.argv.slice(2);
|
|
||||||
let file = args.shift();
|
|
||||||
// let fpos = 0;
|
|
||||||
let view = new DataView(fs.readFileSync(file).buffer);
|
|
||||||
let read = new DataReader(view, 0);
|
|
||||||
let cxdlp = new CXDLP().read(view);
|
|
||||||
console.log({
|
|
||||||
cxdlp,
|
|
||||||
layers5: cxdlp.layers.slice(0,5),
|
|
||||||
lines1: cxdlp.get_layer_lines(1)
|
|
||||||
});
|
|
||||||
} else if (self.navigator) {
|
|
||||||
self.CXDLP = CXDLP;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import { platform } from './platform.js';
|
||||||
import { selection } from './selection.js';
|
import { selection } from './selection.js';
|
||||||
import { stats } from '../kiri/stats.js';
|
import { stats } from '../kiri/stats.js';
|
||||||
import { widgets } from './widgets.js';
|
import { widgets } from './widgets.js';
|
||||||
|
import { updateTool } from '../kiri-mode/cam/tools.js';
|
||||||
|
|
||||||
import { LANG } from './lang.js';
|
import { LANG } from './lang.js';
|
||||||
import { LOCAL, SETUP, SECURE } from './main.js';
|
import { LOCAL, SETUP, SECURE } from './main.js';
|
||||||
|
|
@ -153,7 +154,9 @@ export const api = {
|
||||||
space,
|
space,
|
||||||
stacks: STACKS,
|
stacks: STACKS,
|
||||||
stats,
|
stats,
|
||||||
tool: {}, // kiri-mode/cam/tools.js
|
tool: {
|
||||||
|
update: updateTool
|
||||||
|
},
|
||||||
tweak,
|
tweak,
|
||||||
uc: UC,
|
uc: UC,
|
||||||
ui: {}, // init.js
|
ui: {}, // init.js
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import { stats } from '../kiri/stats.js';
|
||||||
import { noop, utils } from '../kiri/utils.js';
|
import { noop, utils } from '../kiri/utils.js';
|
||||||
import { version } from '../moto/license.js';
|
import { version } from '../moto/license.js';
|
||||||
import { Widget } from './widget.js';
|
import { Widget } from './widget.js';
|
||||||
|
import { showTools } from '../kiri-mode/cam/tools.js';
|
||||||
|
|
||||||
let { parseOpt, o2js, js2o, ls2o } = utils,
|
let { parseOpt, o2js, js2o, ls2o } = utils,
|
||||||
{ COLOR, MODES, VIEWS } = consts,
|
{ COLOR, MODES, VIEWS } = consts,
|
||||||
|
|
@ -119,13 +120,14 @@ export const process = {
|
||||||
|
|
||||||
export const show = {
|
export const show = {
|
||||||
alert() { return api.alerts.show(...arguments) },
|
alert() { return api.alerts.show(...arguments) },
|
||||||
devices: showDevices,
|
|
||||||
progress: setProgress,
|
|
||||||
controls: setControlsVisible,
|
controls: setControlsVisible,
|
||||||
slices: showSlices,
|
devices: showDevices,
|
||||||
|
import() { api.ui.import.style.display = '' },
|
||||||
layer: setVisibleLayer,
|
layer: setVisibleLayer,
|
||||||
local: showLocal,
|
local: showLocal,
|
||||||
import: function() { api.ui.import.style.display = '' }
|
progress: setProgress,
|
||||||
|
slices: showSlices,
|
||||||
|
tools: showTools
|
||||||
};
|
};
|
||||||
|
|
||||||
export const space = {
|
export const space = {
|
||||||
|
|
|
||||||
|
|
@ -251,6 +251,9 @@ details[open] summary::after {
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
.dark option:checked {
|
||||||
|
background-color: var(--blue-1);
|
||||||
|
}
|
||||||
.dark hr {
|
.dark hr {
|
||||||
border-color: #555;
|
border-color: #555;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue