159 lines
9.8 KiB
JavaScript
159 lines
9.8 KiB
JavaScript
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
|
|
|
import { api } from '../../core/api.js';
|
|
import { originReset, originSelect } from './cl-origin.js';
|
|
import { updateTool } from './tools.js';
|
|
|
|
let LANG = api.language.current;
|
|
let { CAM } = api.const.MODES,
|
|
{ $ } = api.web,
|
|
{ uc, ui } = api,
|
|
{ bound, toInt, toFloat } = uc,
|
|
{ newBlank, newButton, newBoolean, newGroup, newInput } = uc,
|
|
{ newSelect, newLabel, newValue, newRow, newDiv } = uc,
|
|
driven = true,
|
|
separator = true,
|
|
trigger = true,
|
|
units = true
|
|
;
|
|
|
|
function onBooleanClick(el) {
|
|
api.event.emit('click.boolean', el);
|
|
}
|
|
|
|
function onButtonClick(el) {
|
|
api.event.emit('click.button', el);
|
|
}
|
|
|
|
function zAnchorSave() {
|
|
api.conf.update();
|
|
api.platform.update_top_z();
|
|
}
|
|
|
|
export function menu() {
|
|
let anim = ui.anim = {};
|
|
|
|
uc.setGroup($('tool-details'));
|
|
|
|
return {
|
|
|
|
/** Tool Editor Menu */
|
|
|
|
_____: uc.setGroup($('tool-details')),
|
|
toolName: newInput('name', { title:'tool name', id: 'tool-name', size: 0, text: true }),
|
|
toolType: newSelect('type', { title: 'tool type', id: 'tool-type', action:updateTool }, "camtool"),
|
|
toolNum: newInput('tool #', { title:'tool number', id: 'tool-num', convert: toInt }),
|
|
toolMetric: newBoolean('metric', updateTool, { title: 'metric', id: 'tool-metric' }),
|
|
_____: newGroup(LANG.td_shft),
|
|
toolShaftDiam: newInput('diameter', { convert: toFloat }),
|
|
toolShaftLen: newInput('length', { convert: toFloat }),
|
|
_____: newGroup(LANG.td_flut),
|
|
toolFluteDiam: newInput('diameter', { convert: toFloat }),
|
|
toolFluteLen: newInput('length', { convert: toFloat }),
|
|
_____: newGroup(LANG.td_tapr),
|
|
toolTaperAngle: newInput('angle', { convert: toFloat }),
|
|
toolTaperTip: newInput('tip', { convert: toFloat }),
|
|
// toolTaperAngle: $('tool-tangle'),
|
|
|
|
toolsSave: $('tools-save'),
|
|
toolsClose: $('tools-close'),
|
|
toolsImport: $('tools-import'),
|
|
toolsExport: $('tools-export'),
|
|
toolSelect: $('tool-select'),
|
|
toolAdd: $('tool-add'),
|
|
toolCopy: $('tool-dup'),
|
|
toolDelete: $('tool-del'),
|
|
|
|
/** Animation Bar */
|
|
|
|
_____: {
|
|
_____: newDiv({ addto: $('layer-animate'), set:true, group:false }),
|
|
row: newRow([
|
|
anim.replay = newButton(null,"anim.replay",{icon:'<i class="fas fa-fast-backward"></i>',title:"restart"}),
|
|
anim.play = newButton(null,"anim.play",{icon:'<i class="fas fa-play"></i>',title:"play"}),
|
|
anim.pause = newButton(null,"anim.pause",{icon:'<i class="fas fa-pause"></i>',title:"pause"}),
|
|
anim.step = newButton(null,"anim.step",{icon:'<i class="fas fa-step-forward"></i>',title:"single step"}),
|
|
anim.speed = newButton(null,"anim.fast",{icon:'<i class="fas fa-forward"></i>',title:"toggle speed"}),
|
|
anim.labspd = newValue(3, {class:"center padleft"}),
|
|
anim.labx = newLabel("X", {class:"padleft"}),
|
|
anim.valx = newValue(7, {class:"center"}),
|
|
anim.laby = newLabel("Y", {class:"padleft"}),
|
|
anim.valy = newValue(7, {class:"center"}),
|
|
anim.labz = newLabel("Z", {class:"padleft"}),
|
|
anim.valz = newValue(6, {class:"center"}),
|
|
anim.laba = newLabel("A", {class:"padleft hide"}),
|
|
anim.vala = newValue(6, {class:"center hide"}),
|
|
anim.labpro = newLabel("%", {class:"padleft"}),
|
|
anim.progress = newValue(5, {class:"center"}),
|
|
anim.trans = newButton(null,null,{icon:'<i class="fa-solid fa-border-none"></i>',title:"transparency",class:"padleft"}),
|
|
anim.model = newButton(null,null,{icon:'<i class="fa-solid fa-eye"></i>',title:"show model"}),
|
|
anim.shade = newButton(null,null,{icon:'<i class="fa-solid fa-cube"></i>',title:"stock box"}),
|
|
anim.path = newButton(null,null,{icon:'<i class="fa-solid fa-draw-polygon"></i>',title:"path"}),
|
|
])
|
|
},
|
|
|
|
/** Left Side Menu */
|
|
|
|
_____: newGroup(LANG.ct_menu, $('cam-tabs'), { modes:CAM, marker:true, driven, separator }),
|
|
camTabsWidth: newInput(LANG.ct_wdth_s, {title:LANG.ct_wdth_l, convert:toFloat, bound:bound(0.005,100), units}),
|
|
camTabsHeight: newInput(LANG.ct_hght_s, {title:LANG.ct_hght_l, convert:toFloat, bound:bound(0.005,100), units}),
|
|
camTabsDepth: newInput(LANG.ct_dpth_s, {title:LANG.ct_dpth_l, convert:toFloat, bound:bound(0.005,100), units}),
|
|
separator: newBlank({ class:"set-sep", driven }),
|
|
camTabsMidline: newBoolean(LANG.ct_midl_s, onBooleanClick, {title:LANG.ct_midl_l}),
|
|
separator: newBlank({ class:"set-sep", driven }),
|
|
camTabsManual: newRow([
|
|
(ui.tabAdd = newButton(undefined, onButtonClick, {icon:'<i class="fas fa-plus"></i>'})),
|
|
(ui.tabDun = newButton(undefined, onButtonClick, {icon:'<i class="fas fa-check"></i>'})),
|
|
(ui.tabClr = newButton(undefined, onButtonClick, {icon:'<i class="fas fa-trash-alt"></i>'}))
|
|
], {class:"ext-buttons f-row"}),
|
|
_____: newGroup(LANG.cs_menu, $('cam-stock'), { modes:CAM, driven, separator }),
|
|
camStockX: newInput(LANG.cs_wdth_s, {title:LANG.cs_wdth_l, convert:toFloat, bound:bound(0,9999), units}),
|
|
camStockY: newInput(LANG.cs_dpth_s, {title:LANG.cs_dpth_l, convert:toFloat, bound:bound(0,9999), units}),
|
|
camStockZ: newInput(LANG.cs_hght_s, {title:LANG.cs_hght_l, convert:toFloat, bound:bound(0,9999), units}),
|
|
separator: newBlank({ class:"set-sep", driven }),
|
|
camStockOffset: newBoolean(LANG.cs_offs_s, onBooleanClick, {title:LANG.cs_offs_l}),
|
|
camStockClipTo: newBoolean(LANG.cs_clip_s, onBooleanClick, {title:LANG.cs_clip_l}),
|
|
camStockIndexed: newBoolean(LANG.cs_indx_s, onBooleanClick, {title:LANG.cs_indx_l}),
|
|
camStockIndexGrid: newBoolean(LANG.cs_ishg_s, onBooleanClick, {title:LANG.cs_ishg_l, show:() => ui.camStockIndexed.checked}),
|
|
_____: newGroup(LANG.cc_menu, $('cam-limits'), { modes:CAM, driven, separator }),
|
|
camZAnchor: newSelect(LANG.ou_zanc_s, {title: LANG.ou_zanc_l, action:zAnchorSave, show:() => !ui.camStockIndexed.checked}, "zanchor"),
|
|
camZOffset: newInput(LANG.ou_ztof_s, {title:LANG.ou_ztof_l, convert:toFloat, units}),
|
|
camZTop: newInput(LANG.ou_ztop_s, {title:LANG.ou_ztop_l, convert:toFloat, units, trigger}),
|
|
camZBottom: newInput(LANG.ou_zbot_s, {title:LANG.ou_zbot_l, convert:toFloat, units, trigger}),
|
|
// camZThru: newInput(LANG.ou_ztru_s, {title:LANG.ou_ztru_l, convert:toFloat, bound:bound(0.0,100), units }),
|
|
camZClearance: newInput(LANG.ou_zclr_s, {title:LANG.ou_zclr_l, convert:toFloat, bound:bound(0.01,100), units }),
|
|
separator: newBlank({ class:"set-sep", driven }),
|
|
camFastFeed: newInput(LANG.cc_rapd_s, {title:LANG.cc_rapd_l, convert:toFloat, units}),
|
|
camFastFeedZ: newInput(LANG.cc_rzpd_s, {title:LANG.cc_rzpd_l, convert:toFloat, units}),
|
|
_____: newGroup(LANG.ou_menu, $('cam-output'), { modes:CAM, driven, separator, group:"cam-output" }),
|
|
camEaseDown: newBoolean(LANG.cr_ease_s, onBooleanClick, {title:LANG.cr_ease_l}),
|
|
camDepthFirst: newBoolean(LANG.ou_depf_s, onBooleanClick, {title:LANG.ou_depf_l}),
|
|
camInnerFirst: newBoolean(LANG.ou_inrf_s, onBooleanClick, {title:LANG.ou_inrf_l}),
|
|
camToolInit: newBoolean(LANG.ou_toin_s, onBooleanClick, {title:LANG.ou_toin_l}),
|
|
separator: newBlank({ class:"set-sep", driven }),
|
|
camFirstZMax: newBoolean(LANG.ou_z1st_s, onBooleanClick, {title:LANG.ou_z1st_l}),
|
|
camForceZMax: newBoolean(LANG.ou_forz_s, onBooleanClick, {title:LANG.ou_forz_l}),
|
|
separator: newBlank({ class:"set-sep", driven }),
|
|
camEaseAngle: newInput(LANG.ou_eang_s, {title:LANG.ou_eang_l, convert:toFloat, bound:bound(0.1,85), show:() => ui.camEaseDown.checked}),
|
|
camFullEngage: newInput(LANG.ou_feng_s, {title:LANG.ou_feng_l, convert:toFloat, bound:bound(0.1,1.0)}),
|
|
_____: newGroup(LANG.or_menu, $('cam-origin'), { modes:CAM, driven, separator }),
|
|
camOriginTop: newBoolean(LANG.or_topp_s, onBooleanClick, {title:LANG.or_topp_l}),
|
|
camOriginCenter: newBoolean(LANG.or_cntr_s, onBooleanClick, {title:LANG.or_cntr_l}),
|
|
separator: newBlank({ class:"set-sep", driven }),
|
|
camOriginOffX: newInput(LANG.co_offx_s, {title:LANG.co_offx_l, convert:toFloat, units}),
|
|
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),
|
|
newButton("reset", originReset),
|
|
], { class: "ext-buttons f-row" }),
|
|
_____: newGroup(LANG.op_xprt_s, $('cam-expert'), { group:"cam_expert", modes:CAM, marker: false, driven, separator }),
|
|
camArcEnabled: newBoolean(LANG.cx_arce_s, onBooleanClick, { title:LANG.cx_arce_l }),
|
|
camArcTolerance: newInput(LANG.cx_arct_s, {title:LANG.cx_arct_l, convert:toFloat, bound:bound(0,100), units, trigger, show:() => ui.camArcEnabled.checked}),
|
|
camArcResolution: newInput(LANG.cx_arcr_s, {title:LANG.cx_arcr_l, convert:toFloat, bound:bound(0,180), trigger, show:() => ui.camArcEnabled.checked}),
|
|
camExpertFast: newBoolean(LANG.cx_fast_s, onBooleanClick, { title:LANG.cx_fast_l }),
|
|
camRoundCorners: newBoolean(LANG.cx_smof_s, onBooleanClick, { title:LANG.cx_smof_l }),
|
|
|
|
};
|
|
};
|