2017-04-18 17:09:33 -04:00
<!DOCTYPE html>
2026-02-19 14:41:52 -05:00
< html lang = "en" data-app = "kiri" >
2021-01-16 10:08:11 -05:00
< head >
2017-04-18 17:09:33 -04:00
< meta charset = "UTF-8" >
2020-06-05 23:21:53 -04:00
< meta name = "author" content = "Stewart Allen" >
2023-02-19 08:03:54 -05:00
< meta name = "keywords" content = "3d slicer,chromebook,slicer,3d slicing,cnc,cam,toolpaths,toolpath generation,kiri,kirimoto,kiri:moto,gcode,cura,simplify 3d,prusaslicer,fdm,sla" >
2019-01-20 21:20:35 -05:00
< meta name = "copyright" content = "stewart allen [sa@grid.space]" >
2020-12-06 18:10:44 -05:00
< meta name = "description" content = "Browser-based 3D slicer, gcode and CNC toolpath generator" >
< meta property = "og:description" content = "Kiri:Moto is a unique 3D slicer that runs entirely in browser and creates output for your favorite maker tools: 3D Printers, CNC Mills and Laser Cutters." >
< meta property = "og:title" content = "Browser-based 3D Slicer" >
2017-04-18 17:09:33 -04:00
< meta property = "og:type" content = "website" >
2020-04-21 18:20:39 -04:00
< meta property = "og:url" content = "https://grid.space/kiri/" >
2020-04-20 21:04:52 -04:00
< meta property = "og:image" content = "https://static.grid.space/img/logo_km_og.png" >
2022-01-18 13:38:52 -05:00
< meta name = "mobile-web-app-capable" content = "yes" >
< meta name = "apple-mobile-web-app-capable" content = "yes" >
2022-10-17 22:24:19 -04:00
< meta name = "apple-mobile-web-app-status-bar-style" content = "default" >
2026-01-20 18:49:42 -05:00
< meta http-equiv = "origin-trial" content = "AvttY0bfMDdg4vBwjn5k4Yv/+OmqjNj4bTRvCgBpP7hkI6base2DxEViSebcOyglERiFV7g0DaVmI+yv79ftDw8AAAB0eyJvcmlnaW4iOiJodHRwczovL2dyaWQuc3BhY2U6NDQzIiwiZmVhdHVyZSI6IlVucmVzdHJpY3RlZFNoYXJlZEFycmF5QnVmZmVyIiwiZXhwaXJ5IjoxNzc5MTQ4ODAwLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=" >
2022-10-17 22:24:19 -04:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" >
2017-04-18 17:09:33 -04:00
< title > Kiri:Moto< / title >
2026-02-17 23:48:25 -05:00
< script >
2026-02-19 14:41:52 -05:00
const isDark = localStorage['kiri-dark'] === 'true';
2026-02-22 15:17:20 -05:00
function setDarkLight(isDark) {
const dde = document.documentElement;
dde.setAttribute('data-theme', isDark ? 'dark' : 'light');
2026-02-22 20:24:34 -05:00
dde.style.background = isDark ? '#000000' : '#ffffff';
2026-02-17 23:48:25 -05:00
}
2026-02-22 15:17:20 -05:00
setDarkLight(isDark);
2026-02-17 23:48:25 -05:00
< / script >
2026-02-14 19:00:48 -05:00
< link rel = "icon" href = "/icon/kirimoto.png" >
< link rel = "apple-touch-icon" href = "/icon/kirimoto.png" >
2026-02-19 14:41:52 -05:00
< link rel = "stylesheet" type = "text/css" href = "/moto/palette.css" >
2026-02-22 17:54:38 -05:00
< link rel = "stylesheet" type = "text/css" href = "/moto/theme.css" >
2026-02-22 15:17:20 -05:00
< link rel = "stylesheet" type = "text/css" href = "/moto/menubar.css" >
2026-02-23 20:30:26 -05:00
< link rel = "stylesheet" type = "text/css" href = "index.css" >
2025-07-06 23:44:33 -04:00
< link href = "manifest.json" rel = "manifest" >
2026-02-19 14:41:52 -05:00
< link href = "/font/css/all.min.css" rel = "stylesheet" >
2025-12-24 14:15:47 -05:00
<!-- <script type="module" src="/lib/kiri/run/worker.js"></script> -->
<!-- <script type="module" src="/lib/kiri/run/minion.js"></script> -->
2026-02-19 14:41:52 -05:00
< script src = "/lib/ext/tween.js" > < / script >
< script src = "/font/js/all.min.js" crossorigin = "anonymous" defer > < / script >
< script src = "/lib/main/kiri.js" type = "module" > < / script >
2017-04-18 17:09:33 -04:00
< / head >
2020-07-01 17:41:33 -04:00
< body >
< div id = "app" class = "f-col" >
2024-05-23 08:53:10 -04:00
<!-- hide page contents and provide loading message during initialization -->
2024-05-22 22:58:10 -04:00
< div id = "curtain" class = "j-center a-center" > < img id = "loading" > Kiri:Moto is Loading< / div >
2024-05-22 18:20:02 -04:00
2024-05-23 08:53:10 -04:00
<!-- when running iframed, provide a separator between the menu bar and enclosing page -->
2020-06-08 12:01:56 -04:00
< div id = "top-sep" > < / div >
2024-05-19 22:31:25 -04:00
2024-05-23 08:53:10 -04:00
<!-- top menu bar -->
2026-02-22 15:17:20 -05:00
< div id = "menubar" class = "f-row" > < / div >
2024-05-19 22:31:25 -04:00
2026-02-22 17:34:51 -05:00
<!-- modal progress overlay -->
< div id = "progress-overlay" class = "hide" >
< div id = "progress-indicator" >
< div id = "progress-ring" > < / div >
< div id = "progress-pct" > < / div >
< div id = "progtxt" > < / div >
< / div >
< / div >
2024-05-20 13:40:44 -04:00
2024-06-05 12:10:33 -07:00
<!-- toolbar with mesh and rendering options -->
2026-02-22 17:14:20 -05:00
< div id = "mode-tools" > < / div >
2024-06-05 12:10:33 -07:00
2020-07-01 17:26:39 -04:00
< div id = "mid" class = "grow f-row" >
2024-05-22 18:20:02 -04:00
<!-- left settings menu -->
2024-05-28 18:02:52 -04:00
< div id = "panel-left" class = "f-col j-left" >
2026-02-23 13:45:01 -05:00
< div id = "panel-slide" class = "f-col settings" >
2026-02-23 00:46:00 -05:00
< div id = "all-devpro" class = "set2-group" > < / div >
2024-05-26 22:51:44 -04:00
<!-- FDM -->
2024-05-29 02:00:34 -04:00
< div id = "fdm-layers" class = "set2-group mode-fdm" > < / div >
2024-05-29 08:52:16 -04:00
< div id = "fdm-walls" class = "set2-group mode-fdm" > < / div >
2025-09-22 23:39:45 -04:00
< div id = "fdm-solid" class = "set2-group mode-fdm" > < / div >
2024-05-29 02:00:34 -04:00
< div id = "fdm-fill" class = "set2-group mode-fdm" > < / div >
2024-05-29 08:52:16 -04:00
< div id = "fdm-heat" class = "set2-group mode-fdm" > < / div >
< div id = "fdm-cool" class = "set2-group mode-fdm" > < / div >
2024-05-29 16:00:16 -04:00
< div id = "fdm-base" class = "set2-group mode-fdm" > < / div >
2024-05-29 02:00:34 -04:00
< div id = "fdm-support" class = "set2-group mode-fdm" > < / div >
< div id = "fdm-output" class = "set2-group mode-fdm" > < / div >
2026-02-24 01:11:13 -05:00
< div id = "fdm-expert" class = "set2-group mode-fdm bottom" > < / div >
2024-05-26 22:51:44 -04:00
<!-- CAM -->
2024-05-29 02:00:34 -04:00
< div id = "cam-tabs" class = "set2-group mode-cam" > < / div >
< div id = "cam-stock" class = "set2-group mode-cam" > < / div >
< div id = "cam-limits" class = "set2-group mode-cam" > < / div >
< div id = "cam-output" class = "set2-group mode-cam" > < / div >
< div id = "cam-origin" class = "set2-group mode-cam" > < / div >
2026-02-24 01:11:13 -05:00
< div id = "cam-expert" class = "set2-group mode-cam bottom" > < / div >
2024-06-10 21:54:25 -07:00
<!-- LASER / 2D Cut Tools -->
2024-05-29 02:00:34 -04:00
< div id = "lzr-slice" class = "set2-group mode-laser" > < / div >
2024-06-10 21:54:25 -07:00
< div id = "lzr-surface" class = "set2-group mode-laser" > < / div >
2024-05-29 02:00:34 -04:00
< div id = "lzr-knife" class = "set2-group mode-laser" > < / div >
2024-06-08 13:23:37 -07:00
< div id = "lzr-layout" class = "set2-group mode-laser" > < / div >
2026-02-24 01:11:13 -05:00
< div id = "lzr-output" class = "set2-group mode-laser bottom" > < / div >
2024-05-26 22:51:44 -04:00
<!-- SLA -->
2024-05-29 02:00:34 -04:00
< div id = "sla-slice" class = "set2-group mode-sla" > < / div >
< div id = "sla-layers" class = "set2-group mode-sla" > < / div >
< div id = "sla-base" class = "set2-group mode-sla" > < / div >
< div id = "sla-fill" class = "set2-group mode-sla" > < / div >
< div id = "sla-support" class = "set2-group mode-sla" > < / div >
2026-02-24 01:11:13 -05:00
< div id = "sla-output" class = "set2-group mode-sla bottom" > < / div >
2024-05-26 20:06:46 -04:00
< / div >
2017-04-18 17:09:33 -04:00
< / div >
2024-05-22 18:20:02 -04:00
2024-05-23 08:53:10 -04:00
<!-- main workspace -->
2024-05-22 18:20:02 -04:00
< div id = "mid-mid" class = "grow" >
2020-07-01 17:26:39 -04:00
< div id = "layer-slider" class = "f-col a-stretch" >
2024-06-02 19:40:45 -04:00
< div id = "layers" class = "f-row j-center gap2" > < / div >
2020-07-01 17:26:39 -04:00
< div id = "slider" class = "f-row russo" >
2020-06-21 22:37:11 -04:00
< div id = "slider-zero" > 0< / div >
< div id = "slider-center" class = "grow" >
2024-06-02 20:57:21 -04:00
< div id = "slider-line" > < / div >
2020-07-01 17:26:39 -04:00
< div id = "slider-hold" class = "f-row" >
2020-06-21 22:37:11 -04:00
< div id = "slider-lo" class = "handle" > < div id = "slider-lo-val" > < / div > < / div >
< div id = "slider-mid" > < / div >
< div id = "slider-hi" class = "handle" > < div id = "slider-hi-val" > < / div > < / div >
< / div >
< / div >
< div id = "slider-max" > ∞ < / div >
< / div >
< / div >
2024-06-24 15:20:41 -04:00
<!-- slice/preview layer slider -->
< div id = "top-slider" class = "f-col grow" >
< input id = "anim-slider" type = "range" min = "0" max = "1000" value = "0" > < / input >
< / div >
2025-02-27 11:11:31 -05:00
<!-- CAM animation controls and readout -->
< div id = "layer-animate" class = "f-col a-center set2-group hide" > < / div >
2020-06-05 23:21:53 -04:00
< / div >
2024-05-22 18:20:02 -04:00
2024-05-23 08:53:10 -04:00
<!-- allows right tray to slide/hide but still show speeds menu -->
2024-05-28 18:02:52 -04:00
< div class = "f-row j-center" >
2020-07-01 17:26:39 -04:00
< div id = "set-menu" class = "f-col" >
2021-11-09 20:46:10 -05:00
< div id = "speeds" > < div id = "speedbar" class = "f-col a-stretch j-center" lkt = "sb_info" > < / div > < / div >
2020-06-07 23:02:05 -04:00
< / div >
2024-05-23 08:53:10 -04:00
<!-- vertical separation between workspace and right tray -->
2024-05-28 18:02:52 -04:00
< div id = "panel-right" class = "f-col j-start settings" >
2024-05-31 15:28:20 -04:00
< div class = "set2-group f-col" >
2024-12-04 16:55:31 -05:00
< details open >
< summary class = "set-header" > < a > objects< / a > < / summary >
< div id = "ws-widgets" class = "f-col" > < / div >
< / details >
2024-05-27 13:53:16 -04:00
< / div >
2026-02-24 01:11:13 -05:00
< div class = "set2-group f-col mode-fdm bottom" >
2024-05-29 20:08:37 -04:00
< div class = "set-header" > < a > ranges< / a > < / div >
2024-05-24 22:49:10 -04:00
< div id = "fdm-ranges" class = "f-col" > < / div >
2024-05-23 10:22:47 -04:00
< / div >
2026-02-24 01:11:13 -05:00
< div class = "set2-group f-col mode-cam bottom" >
2025-12-25 23:15:38 -05:00
< details open >
< summary class = "set-header mode-cam" > < a > operation list< / a > < / summary >
2024-05-24 22:49:10 -04:00
< div id = "camops" class = "f-col a-stretch grow" >
2025-10-12 19:23:28 -04:00
< div id = "oplist" class = "f-col" > < / div >
2024-05-24 22:49:10 -04:00
< div id = "op-add" class = "opdiv" >
< i class = "fas fa-plus" > < / i >
< div id = "op-add-pop" class = "f-col" >
< div id = "op-add-list" class = "opdiv op-grid" >
< div id = "laser-on" title = "turn on laser mode" > laser on< / div >
< div id = "laser-off" title = "turn off laser mode" > laser off< / div >
2026-01-07 19:17:12 -05:00
< div id = "cam-index" title = "rotate index axis" > index< / div >
< div id = "cam-lathe" title = "lathe operation" > lathe< / div >
2024-05-24 22:49:10 -04:00
< div id = "cam-flip" title = "flip part and load profile for other side for double-sided work" > flip< / div >
< div id = "cam-reg" title = "drill registration holes along the X or Y axis for double-sided work" > register< / div >
2025-12-06 00:09:17 -05:00
< div title = "clear stock face" > level< / div >
2026-01-07 19:17:12 -05:00
< div title = "drill selected holes" > drill< / div >
2025-12-06 00:09:17 -05:00
< div title = "follow a downward helix using conical selections" > helical< / div >
2024-05-24 22:49:10 -04:00
< div title = "insert custom gcode" > gcode< / div >
< div title = "2.5D tracing along X or Y axis used for complex part features" > contour< / div >
2025-12-06 00:09:17 -05:00
< div title = "follow selected features. often used for lettering and engraving" > trace< / div >
< div title = "clear areas above selected surfaces" > pocket< / div >
< div title = "remove an area of material inside a defined boundary sometimes called pocketing" > rough< / div >
< div title = "cutout parts using their shadow outline" > outline< / div >
< div title = "perform operations on using outlines or surfaces many operations are simple wrappers around this" > area< / div >
2026-01-03 01:16:54 -05:00
< div id = "cam-loop" title = "loop next N operations M times" > loop< / div >
2024-05-24 22:49:10 -04:00
< / div >
2024-05-22 18:20:02 -04:00
< / div >
2020-12-24 00:11:38 -05:00
< / div >
< / div >
2025-12-25 23:15:38 -05:00
< / details >
2020-12-24 00:11:38 -05:00
< / div >
2020-12-16 21:25:45 -05:00
< / div >
< / div >
2019-01-18 14:23:30 -05:00
< / div >
2024-05-22 18:20:02 -04:00
<!-- ThreeJS container -->
< div id = "container" > < / div >
2024-05-28 18:02:52 -04:00
<!-- modal dialogs -->
< div id = "modal" >
< div id = "modal-box" class = "f-col" >
2024-05-29 12:54:59 -04:00
<!-- title bar and closer -->
2025-02-02 16:10:05 -05:00
< div class = "mod-top f-row" > < div id = "mod-x" class = "mod-x" > < i class = "fas fa-times" > < / i > < / div > < / div >
2024-05-29 12:54:59 -04:00
2025-02-05 18:37:41 -05:00
<!-- donate menu -->
< div id = "mod-don8" class = "mdialog f-col" >
< div class = "f-col gap4" style = "gap:5px" >
< div class = "t-pad2" > < / div >
< div style = "padding:20px;font-size:larger;font-weight:bold" > Your contribution is appreciated!< / div >
< div style = "padding:5px 0 5px 0;justify-content:center" > And supports ongoing development,< / div >
< div style = "padding:5px 0 20px 0;justify-content:center" > servers, forums, and related costs< / div >
2025-02-05 18:53:04 -05:00
< button id = "don8pt" class = "yellow" style = "justify-content:center;padding:25px;font-size:larger" > < a target = "_paypal" href = "https://www.patreon.com/c/gridspace3d" > Become a Patreon Patron< / a > < / button >
2025-02-05 18:37:41 -05:00
< button id = "don8gh" class = "yellow" style = "justify-content:center;padding:25px;font-size:larger" > < a target = "_github" href = "https://github.com/sponsors/GridSpace" > Sponsor on GitHub< / a > < / button >
2025-02-05 18:53:04 -05:00
< button id = "don8pp" class = "yellow" style = "justify-content:center;padding:25px;font-size:larger" > < a target = "_paypal" href = "https://paypal.me/gridspace3d" > Donate with PayPal< / a > < / button >
2025-02-05 18:37:41 -05:00
< div class = "t-pad2" > < / div >
< / div >
< / div >
2024-05-29 12:54:59 -04:00
<!-- help menu -->
2024-05-28 18:02:52 -04:00
< div id = "mod-help" class = "mdialog f-col" >
< div class = "f-row j-center title" >
< label > Kiri:Moto Help< / label >
< / div >
2024-07-09 19:20:03 -04:00
< hr width = "100%" >
2025-12-21 13:53:45 -05:00
< div class = "f-row" >
< div class = "f-col" >
< a target = "_rsc" href = "https://docs.grid.space/projects/kiri-moto" > < i class = "fas fa-question-circle" > < / i > Documentation & APIs< / a >
< a target = "_rsc" href = "https://forum.grid.space" > < i class = "fab fa-discourse" > < / i > Discourse Forums< / a >
< a target = "_rsc" href = "https://discord.gg/suyCCgr" > < i class = "fab fa-discord" > < / i > Discord Server< / a >
< a target = "_rsc" href = "https://github.com/gridspace/grid-apps/issues" > < i class = "fas fa-bug" > < / i > Bug Reports< / a >
2025-12-21 20:04:04 -05:00
< a href = "https://youtu.be/08795Sj22QE" target = "youtube" > < i class = "fab fa-youtube" > < / i > Video Guide (v2.5)< / a >
2025-12-21 13:53:45 -05:00
< a target = "_rsc" href = "https://github.com/gridspace/grid-apps/releases" > < i class = "fab fa-github" > < / i > Releases & Binaries< / a >
2025-12-21 14:20:29 -05:00
< a target = "_rsc" id = "wassup" onclick = "kiri.api.modal.show('don8')" > < i class = "fa-solid fa-hand-holding-dollar" > < / i > Support Development< / a >
2025-12-21 13:53:45 -05:00
< / div >
2025-12-21 14:20:29 -05:00
< div id = "suppopp" class = "content hide" >
2025-12-21 13:53:45 -05:00
< hr class = "mlr-10" >
< div class = "f-col blurb" >
< p > 14 Years Under< br > Active Development< / p >
< span class = "grow" > < / span >
< p > A project for makers, hobbyist, professionals, students, and educators< / p >
< span class = "grow" > < / span >
< p > Help keep it free. Ask about Institutional support< / p >
< span class = "grow" > < / span >
< p > Support funds continued development, bug fixes, documentation, and discussion forums< / p >
< / div >
2024-05-28 18:02:52 -04:00
< / div >
2025-12-21 14:20:29 -05:00
< / div >
2024-07-09 19:20:03 -04:00
< hr width = "100%" >
2024-05-28 18:02:52 -04:00
< div class = "f-row j-center" >
< label id = "kiri-version" > < / label >
< / div >
< / div >
2024-05-29 12:54:59 -04:00
<!-- device selector / editor -->
2024-06-01 16:49:26 -04:00
< div id = "mod-setup" class = "mdialog f-col gap3" >
< div class = "f-row gap4 a-center" >
< label id = "dev-sel" class = "set-header" > select device< / label >
< select id = "dev-list" > < / select >
< div class = "f-row grow j-end" >
2024-06-01 01:27:43 -04:00
< button id = "device-add" lk = "copy" > copy< / button >
2024-06-01 16:49:26 -04:00
< button id = "device-ren" lk = "rename" > rename< / button >
2024-06-01 01:27:43 -04:00
< button id = "device-del" lk = "delete" > delete< / button >
< button id = "device-exp" lk = "export" > export< / button >
2024-05-28 18:02:52 -04:00
< / div >
< / div >
2024-06-01 16:49:26 -04:00
< div class = "set-sep" > < / div >
< div class = "f-row grow gap4" >
< div id = "dev-config" class = "f-col gap4 overy shrink0" > < / div >
< div class = "f-col grow" >
< div id = "gcode-edit" class = "f-col grow gap4" >
< div id = "dg" class = "f-col t-body t-inset" > < / div >
< div id = "dev-gcode" class = "grow" > < / div >
< / div >
2024-05-28 18:02:52 -04:00
< / div >
< / div >
2024-06-01 16:49:26 -04:00
< div class = "set-sep" > < / div >
< div id = "device-action" class = "f-row" >
< div class = "grow" > < / div >
< button id = "device-save" lk = "save" > save< / button >
< div class = "grow" > < / div >
2025-11-29 01:08:44 -05:00
< a href = "https://docs.grid.space/kiri-moto/gcode-macros" target = "docs" > gcode macro docs< / a >
2024-06-01 16:49:26 -04:00
< / div >
2024-05-28 18:02:52 -04:00
< / div >
2024-05-29 12:54:59 -04:00
<!-- recent file menu -->
2024-05-28 18:02:52 -04:00
< div id = "mod-files" class = "mdialog f-col" >
< label class = "set-header menu-title" lk = "dm_rcnt" > recent files< / label >
< div id = "catalogList" class = "f-col" > < / div >
< / div >
2024-05-29 12:54:59 -04:00
<!-- settings list and editor -->
2024-05-28 18:02:52 -04:00
< div id = "mod-saves" class = "mdialog f-col" >
2024-06-02 14:10:16 -04:00
< label class = "set-header menu-title" lk = "dm_savs" > settings< / label >
2024-05-28 18:02:52 -04:00
< div id = "settingsList" class = "f-col" > < / div >
< div id = "settingsNew" >
< input id = "settingsName" class = "grow" > < / input >
< button id = "settingsSave" lk = "save" > Save< / button >
< / div >
< / div >
2024-05-29 12:54:59 -04:00
<!-- cnc tool menu -->
2024-05-28 18:02:52 -04:00
< div id = "mod-tools" class = "mdialog" >
2024-06-02 22:22:38 -04:00
< div class = "f-col gap3" >
< div class = "f-row t-head gap3" >
< label class = "t-33 set-header" lk = "tool" > tool< / label >
< label class = "t-33 set-header" lk = "detail" > detail< / label >
2025-12-06 00:09:17 -05:00
< label class = "t-33 set-header" lk = "preview" > preview< / label >
2024-05-28 18:02:52 -04:00
< / div >
2024-06-02 22:22:38 -04:00
< div id = "tool-cols" class = "f-row gap3" >
2024-05-28 18:02:52 -04:00
< div class = "f-col t-33" >
< select id = "tool-select" size = "10" class = "grow" > < / select >
< / div >
2025-12-06 00:09:17 -05:00
< div id = "tool-details" class = "f-col t-33 t-body t-inset" > < / div >
2024-05-28 18:02:52 -04:00
< div id = "tool-view" class = "f-col t-33 t-body" > < / div >
< / div >
2024-06-02 22:22:38 -04:00
< div class = "set-sep" > < / div >
2024-06-05 12:10:33 -07:00
< div id = "tool-action" class = "f-row j-center gap10" >
< div class = "f-row" >
< button id = "tool-add" > < i class = "fas fa-plus" > < / i > < / button >
2024-08-12 08:42:28 -04:00
< button id = "tool-dup" lk = "clone" > copy< / button >
2024-09-10 21:48:56 -04:00
< button id = "tool-del" > < i class = "fas fa-minus" > < / i > < / button >
2024-06-05 12:10:33 -07:00
< / div >
< div class = "f-row" >
< button id = "tools-save" lk = "save" > save< / button >
< button id = "tools-close" lk = "done" > done< / button >
< / div >
2024-08-12 08:42:28 -04:00
< div class = "f-row" >
2025-03-07 13:56:18 -05:00
< button id = "tools-import" lk = "import" > import< / button >
2024-08-12 08:42:28 -04:00
< button id = "tools-export" lk = "export" > export< / button >
< / div >
2024-05-28 18:02:52 -04:00
< / div >
< / div >
< / div >
2024-05-29 12:54:59 -04:00
<!-- system preferences -->
2024-05-28 18:02:52 -04:00
< div id = "mod-prefs" class = "mdialog f-col a-center" >
< label lk = "dm_appp" class = "menu-title" > Application Preferences< / label >
< hr width = "80%" >
2024-06-05 12:10:33 -07:00
< div class = "f-row gap10" >
2024-05-28 18:02:52 -04:00
< div id = "prefs-gen1" class = "f-col" > < / div >
< div id = "prefs-gen2" class = "f-col" > < / div >
< div id = "prefs-lay" class = "f-col" > < / div >
< div id = "prefs-xpo" class = "f-col" > < / div >
< div id = "prefs-prt" class = "f-col" > < / div >
< div id = "prefs-add" class = "f-col" > < / div >
< / div >
< / div >
2024-05-29 12:54:59 -04:00
2024-09-12 10:11:38 -04:00
<!-- export dialogs -->
< div id = "mod-x-any" class = "mod-print mdialog f-col" >
2025-02-01 18:45:33 -05:00
< div class = "f-row gap4" >
< div class = "f-col grow" >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "ex_job" > job< / label > < / div >
2025-02-01 18:45:33 -05:00
< div id = "print-info" class = "f-col box" >
2025-11-13 15:21:14 -05:00
< div > < label lk = "ex_fnam" > file name< / label > < input id = "print-filename" size = "20" spellcheck = "false" / > < / div >
< div > < label lk = "ex_fsiz" > file size (bytes)< / label > < input id = "print-filesize" size = "12" disabled = "true" / > < / div >
< div > < label lk = "ex_time" > time estimate (h:m:s)< / label > < input id = "output-time" size = "12" disabled = "true" / > < / div >
2025-02-01 18:45:33 -05:00
< / div >
< / div >
< div id = "print-filament" class = "f-col" >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "ex_matl" > material< / label > < / div >
2025-02-01 18:45:33 -05:00
< div class = "f-col box" >
2025-11-13 15:21:14 -05:00
< div > < label lk = "ex_dens" > filament density (g/cm^3)< / label > < input id = "print-density" size = "12" value = "1.25" / > < / div >
< div > < label lk = "ex_fuse" > filament used (mm)< / label > < input id = "print-length" size = "12" disabled = "true" / > < / div >
< div > < label lk = "ex_wght" > printed weight (g)< / label > < input id = "print-weight" size = "12" disabled = "true" / > < / div >
2025-02-01 18:45:33 -05:00
< / div >
< / div >
2024-09-12 10:11:38 -04:00
< / div >
2025-11-13 15:21:14 -05:00
< div id = "code-preview-head" class = "header" > < label lk = "ex_gcpv" > gcode preview< / label > < / div >
2024-09-12 10:11:38 -04:00
< div id = "code-preview" class = "f-col box" >
< div > < textarea id = "code-preview-textarea" > < / textarea > < / div >
< / div >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "ex_dwnl" > download< / label > < / div >
2024-09-12 10:11:38 -04:00
< div class = "f-row box" >
2024-12-10 11:59:33 -05:00
< button id = "print-download" class = "grow" > gcode< / button >
2024-09-12 10:11:38 -04:00
< button id = "print-palette" class = "grow" > palette< / button >
2024-12-10 11:59:33 -05:00
< button id = "print-zip" class = "grow" > zip< / button >
< button id = "print-3mf" class = "grow" > 3mf< / button >
2025-02-01 18:45:33 -05:00
< / div >
< div id = "bambu-output" class = "f-col" >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "ex_bamb" > send to bambu< / label > < / div >
2025-02-01 18:45:33 -05:00
< div class = "f-row box gap4 a-center" >
2025-02-12 17:44:25 -05:00
< label class = "grow0 pad3" > printer< / label >
2025-02-01 18:45:33 -05:00
< select id = "print-bambu-device" > < / select >
2025-02-12 17:44:25 -05:00
< label class = "grow0 pad3" > spool< / label >
< select id = "print-bambu-spool" > < / select >
2025-02-01 23:10:20 -05:00
< button id = "print-bambu-1" class = "grow" disabled > send< / button >
2026-01-08 23:44:31 -05:00
< button id = "print-bambu-2" class = "grow" disabled > print< / button >
2025-02-01 18:45:33 -05:00
< / div >
2024-09-12 10:11:38 -04:00
< / div >
2026-01-08 23:44:31 -05:00
< div id = "send-remote-head" class = "header" > < label > send to print< / label > < / div >
< div id = "send-remote-print" class = "f-col box" >
2024-09-12 10:11:38 -04:00
< div class = "grow f-row" >
< div class = "f-col grow" >
2026-01-08 23:44:31 -05:00
< div id = "ophost" >
< label lk = "ex_host" > host< / label >
< input id = "octo-host" size = "20" placeholder = "http(s)://host:port" / >
< / div >
< div id = "opapik" >
< label lk = "ex_akey" > key< / label >
< input id = "octo-apik" size = "20" / >
< / div >
< div id = "optype" >
< label lk = "ex_type" > type< / label >
< select id = "octo-type" >
< option selected > moonraker< / option >
< option > octoprint< / option >
< / select >
< / div >
2024-09-12 10:11:38 -04:00
< / div >
2026-01-08 23:44:31 -05:00
< button id = "send-remote" > send< / button >
< button id = "print-remote" > print< / button >
< / div >
< div id = "oph1nt" >
< label class = "hint" >
check printer
< a href = "http://docs.octoprint.org/en/master/api/general.html?highlight=cors#cross-origin-requests" target = "_help" > CORS< / a >
settings
< / label >
2024-09-12 10:11:38 -04:00
< / div >
< / div >
2025-12-18 00:45:26 -05:00
< div id = "export-support" class = "f-col" >
2025-12-26 21:46:49 -05:00
< a id = "export-support-a" target = "support" > this project needs your support!< / a >
2025-12-18 00:45:26 -05:00
< / div >
2024-09-12 10:11:38 -04:00
< / div >
< div id = "mod-x-sla" class = "mod-print mdialog f-col" >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "export" > export< / label > < / div >
2024-09-12 10:11:38 -04:00
< div id = "print-info" class = "f-col box" >
2025-11-13 15:21:14 -05:00
< div > < label lk = "ex_fnam" > file name< / label > < input id = "print-filename-sla" size = "20" spellcheck = "false" / > < / div >
2024-09-12 10:11:38 -04:00
< div > < label > resin used ML< / label > < input id = "print-volume" size = "10" spellcheck = "false" / > < / div >
< div > < label > layers< / label > < input id = "print-layers" size = "10" spellcheck = "false" / > < / div >
< div > < label > print time< / label > < input id = "print-time" size = "10" spellcheck = "false" / > < / div >
< / div >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "ex_dwnl" > download< / label > < / div >
2024-09-12 10:11:38 -04:00
< div class = "f-row box" >
2025-11-13 15:21:14 -05:00
< button id = "print-sla" class = "grow" lk = "ex_dwnl" > download< / button >
2024-09-12 10:11:38 -04:00
< / div >
< / div >
< div id = "mod-x-laser" class = "mod-print mdialog f-col" >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "export" > export< / label > < / div >
2024-09-12 10:11:38 -04:00
< div id = "print-info" class = "f-col box" >
2025-11-13 15:21:14 -05:00
< div > < label lk = "ex_fnam" > file name< / label > < input id = "print-filename-laser" size = "20" spellcheck = "false" / > < / div >
2024-09-12 10:11:38 -04:00
< div > < label > segments< / label > < input id = "print-lines" size = "12" disabled = "true" / > < / div >
< / div >
2025-11-13 15:21:14 -05:00
< div class = "header" > < label lk = "ex_dwnl" > download< / label > < / div >
2024-09-12 10:11:38 -04:00
< div class = "f-row box" >
< button id = "print-svg" class = "grow" > svg< / button >
< button id = "print-dxf" class = "grow" > dxf< / button >
2025-12-25 20:47:38 -05:00
< button id = "print-obj" class = "grow" > obj< / button >
2024-09-12 10:11:38 -04:00
< button id = "print-lg" class = "grow" > gcode< / button >
< / div >
< / div >
<!-- dynamic dialogs -->
2024-05-28 18:02:52 -04:00
< div id = "mod-any" class = "mdialog f-col" > < / div >
< div class = "mod-end" > < / div > < / div >
< / div >
2025-02-02 16:10:05 -05:00
<!-- prompts and other modals needed in electron -->
< dialog id = "dialog" > < / dialog >
2024-05-22 18:20:02 -04:00
<!-- click + drag mouse tracking -->
< div id = "tracker" > < / div >
<!-- EU compliance -->
2020-06-13 20:04:39 -04:00
< div id = "gdpr" class = "noshow" >
2020-12-06 17:19:07 -05:00
< p > this site uses < A href = "/privacy.html" target = "privacy" > cookies< / a > to preserve application preferences< / p >
2020-07-01 17:26:39 -04:00
< button id = "gotit" class = "f-col j-center" > got it< / button >
2020-06-13 20:04:39 -04:00
< / div >
2024-05-22 18:20:02 -04:00
<!-- developer debugging -->
2022-01-28 16:54:53 -05:00
< div id = "stats" >
< div id = "rms" > < / div >
< div id = "fps" > < / div >
2022-01-31 15:20:34 -05:00
< div id = "rnfo" > < / div >
2022-01-28 16:54:53 -05:00
< / div >
2024-05-22 18:20:02 -04:00
<!-- ephemeral non - modal alerts -->
2020-12-24 12:59:57 -05:00
< div id = "alert-area" >
< div id = "alert-border" >
< div id = "alert-text" > alerts< br > alerts< br > alerts< / div >
< / div >
< / div >
2024-05-22 18:20:02 -04:00
2020-07-01 17:41:33 -04:00
< / div >
2017-04-18 17:09:33 -04:00
< / body >
< / html >