2017-04-18 17:09:33 -04:00
<!DOCTYPE html>
2021-01-16 10:08:11 -05:00
< html lang = "en" >
< 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" >
2025-02-12 23:49:18 -05:00
< meta http-equiv = "origin-trial" content = "Aixo1di7jfA+ystPFy70vGYyODYVAju1y8EQWwdkdtl5sB7i990oDCnqLQntpfl7NsW74wz99Og7xgQqeLKiBQsAAAB0eyJvcmlnaW4iOiJodHRwczovL2dyaWQuc3BhY2U6NDQzIiwiZmVhdHVyZSI6IlVucmVzdHJpY3RlZFNoYXJlZEFycmF5QnVmZmVyIiwiZXhwaXJ5IjoxNzUzMTQyNDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=" >
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 >
< link rel = "icon" href = "/kiri/favicon.ico" >
< link rel = "apple-touch-icon" href = "/kiri/favicon-mobile.png" >
2020-05-31 21:34:04 -04:00
< link rel = "stylesheet" type = "text/css" href = "/kiri/index.css?{{version}}" >
2021-12-16 19:11:52 -05:00
< link href = "/font/css/all.min.css" rel = "stylesheet" >
2022-09-01 00:50:55 -04:00
< link href = "/kiri/manifest.json" rel = "manifest" >
2022-09-01 11:12:24 -04:00
< script src = "/code/cache.js?{{version}}" defer > < / script >
2022-08-31 16:35:25 -04:00
< script src = "/font/js/all.min.js" crossorigin = "anonymous" defer > < / script >
2020-04-05 11:19:03 -04:00
< script src = "/code/kiri.js?{{version}}" > < / 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 -->
2020-07-01 17:26:39 -04:00
< div id = "top" class = "f-row" >
2024-05-19 22:31:25 -04:00
< div class = "f-row top-menu" >
2024-05-22 22:58:10 -04:00
< span id = "view-arrange" >
< span > < i class = "fas fa-shapes" > < / i > < / span >
< label lk = "arrange" > arrange< / label >
< / span >
< span id = "act-slice" >
< span > < i class = "fas fa-bars" > < / i > < / span >
< label id = "label-slice" title = "generate layer slices" lk = "slice" > preview< / label >
< / span >
< span id = "act-preview" >
< span > < i class = "fas fa-layer-group" > < / i > < / span >
< label id = "label-preview" title = "show routing and paths" lk = "preview" > preview< / label >
< / span >
< span id = "act-animate" >
< span > < i class = "fas fa-film" > < / i > < / span >
< label id = "label-animate" title = "render routing on a mesh" lk = "animate" > animate< / label >
< / span >
< span id = "act-export" >
< span > < i class = "fas fa-file-download" > < / i > < / span >
< label id = "label-export" title = "generate gcode" lk = "export" > export< / label >
< / span >
< / div >
< div class = "grow" > < / div >
< div id = "app-name" class = "f-col a-center top-menu" >
2024-05-24 23:52:57 -04:00
< span class = "grow" >
2025-02-05 13:18:14 -05:00
< span id = "app-name-text" class = "km-font" > Kiri:Moto< / span >
2024-05-22 22:58:10 -04:00
< div id = "app-name-pop" class = "top-menu-drop top-menu-center" >
2024-05-19 22:31:25 -04:00
< div class = "content" >
2024-05-22 22:58:10 -04:00
< div id = "app-help" >
< label lk = "help" > help< / label >
2024-05-19 22:31:25 -04:00
< / div >
2025-02-05 18:37:41 -05:00
< hr width = "100%" >
< div id = "app-don8" >
< label lk = "donate" > donate< / label >
< / div >
2024-07-23 13:08:17 -04:00
< div >
< label id = "app-mesh" > mesh edit< / label >
< / div >
2024-05-22 22:58:10 -04:00
< hr width = "100%" >
< div >
< label id = "app-info" > version< / label >
2024-05-19 22:31:25 -04:00
< / div >
< / div >
< / div >
< / span >
2024-05-22 22:58:10 -04:00
< / div >
< div id = "doit" class = "f-row a-center" >
< button id = "undo" > < i class = "fas fa-undo-alt" > < / i > < / button >
< button id = "redo" > < i class = "fas fa-redo-alt" > < / i > < / button >
< / div >
< div class = "grow" > < / div >
< div class = "f-row top-menu" >
2024-05-19 22:31:25 -04:00
< span >
< i class = "fas fa-folder" > < / i >
< label > files< / label >
2024-05-22 22:58:10 -04:00
< div class = "top-menu-drop top-menu-right" >
2024-05-19 22:31:25 -04:00
< div class = "content" >
2025-02-23 08:43:39 -05:00
< div id = "file-new" >
< label lk = "new" > new< / label >
< span > < i class = "fas fa-file" > < / i > < / span >
< / div >
< hr >
2024-05-19 22:31:25 -04:00
< div id = "file-recent" >
< label lk = "recent" > recent< / label >
< span > < i class = "fas fa-list" > < / i > < / span >
< / div >
< div id = "file-import" >
< label lk = "import" > import< / label >
< span > < i class = "fas fa-file-upload" > < / i > < / span >
2024-05-23 08:53:10 -04:00
<!-- required file input loader -->
2024-05-19 22:31:25 -04:00
< input id = "load-file" type = "file" name = "loadme" style = "display:none" > < / input >
< / div >
2024-05-31 02:23:01 -04:00
< hr >
< div id = "app-export" >
< label lk = "export" > export< / label >
< span > < i class = "fas fa-download" > < / i > < / span >
< / div >
2024-05-19 22:31:25 -04:00
< / div >
< / div >
< / span >
< span >
< i class = "fas fa-eye" > < / i >
< label > view< / label >
< div class = "top-menu-drop top-menu-right" >
< div class = "content" >
< div id = "view-home" >
< label lk = "home" > home< / label >
< span > < i class = "fas fa-home" > < / i > < / span >
< / div >
2024-05-20 22:20:20 -04:00
< hr >
2024-05-19 22:31:25 -04:00
< div id = "view-top" >
< label lk = "top" > top< / label >
< span > < i class = "fas fa-square" > < / i > < / span >
< / div >
2024-05-20 22:20:20 -04:00
< div id = "view-front" >
< label lk = "front" > top< / label >
< span > < i class = "fas fa-square" > < / i > < / span >
< / div >
< div id = "view-back" >
< label lk = "back" > top< / label >
< span > < i class = "fas fa-square" > < / i > < / span >
< / div >
< div id = "view-left" >
< label lk = "left" > top< / label >
< span > < i class = "fas fa-square" > < / i > < / span >
< / div >
< div id = "view-right" >
< label lk = "right" > top< / label >
< span > < i class = "fas fa-square" > < / i > < / span >
< / div >
< hr >
2024-05-19 22:31:25 -04:00
< div id = "app-xpnd" >
< label lk = "fullscreen" > fullscreen< / label >
< span > < i class = "fas fa-maximize" > < / i > < / span >
< / div >
2020-06-13 18:13:47 -04:00
< / div >
2024-05-19 22:31:25 -04:00
< / div >
< / span >
2024-05-31 02:17:16 -04:00
< span >
< i class = "fas fa-code-branch" > < / i >
< label > mode< / label >
< div class = "top-menu-drop top-menu-right" >
< div class = "content" >
< div id = "mode-fdm" >
2024-06-09 19:29:50 -07:00
< label title = "3D Additive Printing Processes" > FDM< / label >
2024-05-31 02:17:16 -04:00
< span > < i class = "fas fa-layer-group" > < / i > < / span >
< / div >
< div id = "mode-cam" >
2024-06-09 19:29:50 -07:00
< label title = "CNC Mills and Subtractive Processes" > CNC< / label >
2024-05-31 02:17:16 -04:00
< span > < i class = "fas fa-bore-hole" > < / i > < / span >
< / div >
2024-06-08 13:23:37 -07:00
< div id = "mode-sla" >
2024-06-09 19:29:50 -07:00
< label title = "mSLA Resin Printing" > SLA< / label >
2024-06-08 13:23:37 -07:00
< span > < i class = "fas fa-cube" > < / i > < / span >
< / div >
< hr >
2024-05-31 02:17:16 -04:00
< div id = "mode-laser" >
2024-06-09 19:29:50 -07:00
< label title = "Laser Cutting and Engraving" > Laser< / label >
2024-05-31 02:17:16 -04:00
< span > < i class = "fas fa-bolt" > < / i > < / span >
< / div >
2024-06-09 14:03:16 -07:00
< div id = "mode-wjet" >
2024-06-09 19:29:50 -07:00
< label title = "WaterJet Cutting" > Water< / label >
2024-06-08 13:23:37 -07:00
< span > < i class = "fas fa-location-pin" > < / i > < / span >
< / div >
2024-06-09 11:00:53 -07:00
< div id = "mode-wedm" >
2024-06-09 19:29:50 -07:00
< label title = "Wire EDM Cutting" > Wire< / label >
2024-06-08 13:23:37 -07:00
< span > < i class = "fas fa-ellipsis-vertical" > < / i > < / span >
2024-06-09 14:03:16 -07:00
< / div >
2024-06-09 11:00:53 -07:00
< div id = "mode-drag" >
2024-06-09 19:29:50 -07:00
< label title = "Drag Knife Cutting" > Drag< / label >
2024-06-09 11:00:53 -07:00
< span > < i class = "fas fa-caret-left" > < / i > < / span >
< / div >
2024-05-31 02:17:16 -04:00
< / div >
< / div >
< / span >
2024-05-19 22:31:25 -04:00
< span >
< i class = "fas fa-cog" > < / i >
< label > setup< / label >
< div class = "top-menu-drop top-menu-right" >
< div class = "content" >
< div id = "set-device" >
2024-05-31 23:35:42 -04:00
< label lk = "machines" > machines< / label >
2024-05-19 22:31:25 -04:00
< span > < i class = "fas fa-cube" > < / i > < / span >
< / div >
2024-05-20 22:06:33 -04:00
< div id = "set-profs" >
< label lk = "profs" > profiles< / label >
< span > < i class = "fas fa-sliders-h" > < / i > < / span >
< / div >
2024-05-19 22:31:25 -04:00
< div id = "set-tools" >
2024-05-20 13:12:49 -04:00
< label lk = "tools" > tools< / label >
2024-05-19 22:31:25 -04:00
< span > < i class = "fas fa-tools" > < / i > < / span >
< / div >
< div id = "app-lang" >
< label lk = "language" > language< / label >
< span > < i class = "fas fa-language" > < / i > < / span >
< div id = "lang-pop" >
2024-05-20 13:12:49 -04:00
< span id = "lang-hold" > < / span >
2024-05-19 22:31:25 -04:00
< div id = "lset-zh" > 简体中文< / div >
< div id = "lset-da" > dansk< / div >
< div id = "lset-de" > deutsch< / div >
< div id = "lset-en" > english< / div >
< div id = "lset-es" > español< / div >
< div id = "lset-fr" > français< / div >
< div id = "lset-pl" > polskie< / div >
< div id = "lset-pt" > português< / div >
< / div >
< / div >
2024-05-20 13:12:49 -04:00
< div id = "set-prefs" >
< label lk = "prefs" > prefs< / label >
2024-05-22 18:20:02 -04:00
< span > < i class = "fa-solid fa-square-check" > < / i > < / span >
2024-05-19 22:31:25 -04:00
< / div >
2020-06-08 14:21:10 -04:00
< / div >
2020-06-06 20:05:21 -04:00
< / div >
2024-05-19 22:31:25 -04:00
< / span >
2020-06-06 20:05:21 -04:00
< / div >
2017-04-18 17:09:33 -04:00
< / div >
2024-05-19 22:31:25 -04:00
2024-05-23 08:53:10 -04:00
<!-- line betwwen menu bar and main application windows -->
2024-08-08 17:44:47 -04:00
< div id = "progress" > < div id = "progbar" > < / div > < div id = "progtxt" > loading< / div > < / div >
2024-05-20 13:40:44 -04:00
2024-06-05 12:10:33 -07:00
<!-- toolbar with mesh and rendering options -->
< div >
< div id = "render-tools" >
2024-06-07 10:30:28 -07:00
< span id = "tool-nozzle" > < i class = "fas fa-location-pin" title = "extruder" > < / i >
< div id = "ft-nozzle" class = "f-col pop" > < / div >
< / span >
2024-06-07 09:51:09 -07:00
< span id = "tool-rotate" > < i class = "fas fa-rotate-right" title = "rotate selection" > < / i >
2024-06-05 12:10:33 -07:00
< div id = "ft-rotate" class = "grid pop" >
< div id = "rot_x_lt" > < i class = "fas fa-chevron-left" > < / i > < / div >
< label > X< / label >
< div id = "rot_x_gt" > < i class = "fas fa-chevron-right" > < / i > < / div >
2024-06-05 17:36:35 -07:00
< input id = "rot_x" class = "value center" size = "6" value = "5" >
2024-06-05 12:10:33 -07:00
< div id = "rot_y_lt" > < i class = "fas fa-chevron-left" > < / i > < / div >
< label > Y< / label >
< div id = "rot_y_gt" > < i class = "fas fa-chevron-right" > < / i > < / div >
2024-06-05 17:36:35 -07:00
< input id = "rot_y" class = "value center" size = "6" value = "5" >
2024-06-05 12:10:33 -07:00
< div id = "rot_z_lt" > < i class = "fas fa-chevron-left" > < / i > < / div >
< label > Z< / label >
< div id = "rot_z_gt" > < i class = "fas fa-chevron-right" > < / i > < / div >
2024-06-05 17:36:35 -07:00
< input id = "rot_z" class = "value center" size = "6" value = "5" >
2024-06-05 12:10:33 -07:00
< div class = "buttons f-row" >
< button id = "unrotate" class = "grow" lk = "reset" > reset< / button >
< / div >
< / div >
< / span >
2024-06-07 09:51:09 -07:00
< span id = "tool-scale" > < i class = "fas fa-expand" title = "scale or resize selection" > < / i >
2024-06-05 12:10:33 -07:00
< div id = "ft-scale" class = "grid pop" >
2024-06-05 17:36:35 -07:00
< div > < label > X< / label > < input id = "lock_x" type = "checkbox" checked > < / div >
< div > < label > Y< / label > < input id = "lock_y" type = "checkbox" checked > < / div >
< div > < label > Z< / label > < input id = "lock_z" type = "checkbox" checked > < / div >
< label id = "lab-axis" lk = "axis" > axis< / label >
< input id = "size_x" size = "8" class = "value" >
< input id = "size_y" size = "8" class = "value" >
< input id = "size_z" size = "8" class = "value" >
< label id = "lab-size" lk = "size" > size< / label >
< input id = "scale_x" size = "8" class = "value" value = "1" >
< input id = "scale_y" size = "8" class = "value" value = "1" >
< input id = "scale_z" size = "8" class = "value" value = "1" >
< label id = "lab-scale" lk = "scale" > scale< / label >
< div class = "buttons f-row" >
< button id = "scale-reset" class = "grow j-center" > reset< / button >
< / div >
2024-06-05 12:10:33 -07:00
< / div >
< / span >
2024-06-07 09:51:09 -07:00
< span id = "tool-mesh" > < i class = "fas fa-dice-d20" > < / i >
2024-06-05 12:10:33 -07:00
< div id = "ft-mesh" class = "grow f-col pop" >
2024-06-05 17:36:35 -07:00
< div id = "ft-mesh-btn" >
2024-09-10 21:48:56 -04:00
< div > < button id = "mesh-merge" lk = "rc_merg" > Merge< / button > < / div >
2024-06-05 17:36:35 -07:00
< div > < button id = "mesh-export-obj" lk = "rc_xobj" > export OBJ< / button > < / div >
< div > < button id = "mesh-export-stl" lk = "rc_xstl" > export STL< / button > < / div >
< / div >
2024-06-05 12:10:33 -07:00
< / div >
< / span >
2024-06-05 17:51:24 -07:00
< span id = "context-mirror" xlk = "rc_mirr" >
< i class = "fas fa-arrows-left-right-to-line" > < / i >
< div class = "pop" > mirror selection< / div >
< / span >
< span id = "context-duplicate" xlk = "rc_dupl" >
< i class = "fas fa-copy" > < / i >
< div class = "pop" > duplicate selection< / div >
< / span >
< span id = "context-layflat" xlk = "rc_lafl" >
< i class = "fas fa-arrows-down-to-line" > < / i >
< div class = "pop" > choose a face to place< br > on the work surface< / div >
< / span >
< span id = "context-setfocus" xlk = "rc_focs" >
< i class = "fas fa-eye" > < / i >
< div class = "pop" > choose focal point< br > camera orbit center< / div >
< / span >
< span id = "render-solid" class = "j-center" >
< i class = "fas fa-square" > < / i >
< div class = "pop" > render objects solid< / div >
< / span >
< span id = "render-wire" class = "j-center" >
< i class = "fas fa-border-all" > < / i >
< div class = "pop" > render objects wireframe< / div >
< / span >
< span id = "render-ghost" class = "a-center" >
< i class = "fas fa-border-none" > < / i >
< div class = "pop" > render objects transparent< / div >
< / span >
2024-09-06 11:38:18 -04:00
< span id = "render-edges" class = "a-center" >
2024-09-06 10:22:46 -04:00
< i class = "fa-regular fa-square" > < / i >
2024-09-06 11:38:18 -04:00
< div class = "pop" > trace edges< / div >
2024-09-06 10:22:46 -04:00
< / span >
2024-06-05 12:10:33 -07:00
< / div >
< / div >
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" >
2024-06-02 14:10:16 -04:00
<!-- <div class="line - sep2"></div> -->
2024-06-02 16:30:20 -04:00
< div id = "slide-show" > < span > < i class = "fa-solid fa-arrow-right" > < / i > < / span > < / div >
2024-05-28 18:02:52 -04:00
< div class = "f-col grow settings" >
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 >
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 >
< div id = "fdm-expert" class = "set2-group mode-fdm" > < / 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 >
< div id = "cam-expert" class = "set2-group mode-cam" > < / 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 >
2024-05-29 02:00:34 -04:00
< div id = "lzr-output" class = "set2-group mode-laser" > < / 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 >
< div id = "sla-output" class = "set2-group mode-sla" > < / div >
2024-05-26 20:06:46 -04:00
< / div >
2024-05-31 18:46:58 -04:00
< div class = "line-sep2" > < / div >
2024-05-22 18:20:02 -04:00
< div class = "chonk" > < / 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 >
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-06-02 14:10:16 -04:00
< div id = "mode-info" >
< div > < label > Device< / label > < span id = "mode-device" > < / span > < / div >
< div > < label > Profile< / label > < span id = "mode-profile" > < / span > < / div >
< / div >
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 >
2024-05-28 18:02:52 -04:00
< div class = "set2-group f-col mode-fdm" >
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 >
2024-05-28 18:02:52 -04:00
< div class = "set2-group f-col mode-cam" >
2024-05-29 20:08:37 -04:00
< div class = "set-header mode-cam" > < a > operation list< / a > < / div >
2024-05-24 22:49:10 -04:00
< div id = "camops" class = "f-col a-stretch grow" >
< div id = "oplist" class = "f-col j-center" > < / div >
< 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 = "cam-index" title = "rotate index axis" > index< / div >
< div id = "cam-lathe" title = "lathe operation" > lathe< / div >
< div id = "laser-on" title = "turn on laser mode" > laser on< / div >
< div id = "laser-off" title = "turn off laser mode" > laser off< / div >
< 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 >
< div title = "drill any holes matching selected tool diameter" > drill< / div >
< div title = "clear stock face or top of part when no stock" > level< / div >
< div title = "follow selected features with a specified tool. often used for lettering and engraving" > trace< / div >
< div title = "insert custom gcode" > gcode< / div >
< div title = "remove an area of material inside a defined boundary sometimes called pocketing" > rough< / div >
< div title = "clean up after roughing or perform a part cutout" > outline< / div >
< div title = "2.5D tracing along X or Y axis used for complex part features" > contour< / div >
< div title = "clear areas above selected surfaces" > pocket< / div >
< / div >
2024-05-22 18:20:02 -04:00
< / div >
2020-12-24 00:11:38 -05:00
< / div >
< / div >
< / div >
2024-05-28 18:02:52 -04:00
< div class = "grow" > < / div >
< div class = "line-sep2" > < / div >
2024-05-22 18:20:02 -04:00
< div class = "chonk" > < / 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%" >
2024-05-28 18:02:52 -04:00
< div class = "f-col" >
2024-07-09 19:20:03 -04:00
< a target = "_rsc" href = "https://docs.grid.space/projects/kiri-moto" > < i class = "fas fa-question-circle" > < / i > Documentation & APIs< / a >
2024-05-28 18:02:52 -04:00
< a target = "_rsc" href = "https://forum.grid.space" > < i class = "fab fa-discourse" > < / i > Discourse Forums< / a >
2024-07-09 19:20:03 -04:00
< a target = "_rsc" href = "https://discord.gg/suyCCgr" > < i class = "fab fa-discord" > < / i > Discord Server< / a >
2024-08-12 19:40:14 -04:00
< a target = "_rsc" href = "https://github.com/gridspace/grid-apps/issues" > < i class = "fas fa-bug" > < / i > Bug Reports< / a >
2024-07-09 19:20:03 -04:00
< a target = "_rsc" href = "https://github.com/gridspace/grid-apps/releases" > < i class = "fab fa-github" > < / i > Releases & Binaries< / a >
2025-02-05 18:37:41 -05:00
< a target = "_rsc" onclick = "kiri.api.modal.show('don8')" > < i class = "fa-solid fa-sack-dollar" > < / i > Support Development< / a >
2024-07-09 19:20:03 -04:00
< a href = "https://youtu.be/08795Sj22QE" target = "youtube" > < i class = "fab fa-youtube" > < / i > Video Guide (from v2.5)< / a >
2024-05-28 18:02:52 -04: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 >
< / 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 >
< label class = "t-33 set-header" lk = "view" > view< / 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 >
< div class = "f-col t-33 t-body t-inset" >
< div class = "f-row var-row" > < label lk = "name" > name< / label > < input id = "tool-name" size = "15" > < / input > < / div >
< div class = "f-row var-row" > < label lk = "type" > type< / label >
< select id = "tool-type" >
< option value = "endmill" lk = "td_tyem" selected > end< / option >
< option value = "ballmill" lk = "td_tybm" > ball< / option >
< option value = "tapermill" lk = "td_tytm" > taper< / option >
< / select >
< / div >
< div class = "f-row var-row" title = "tool number to use
in gcode commands" > < label lk = "td_tonm" > tool #< / label > < input id = "tool-num" size = "7" > < / input > < / div >
< div class = "f-row var-row" > < label lk = "metric" > metric< / label > < input id = "tool-metric" type = "checkbox" > < / input > < / div >
< div class = "set-header f-col" lk = "td_shft" > shaft< / div >
< div class = "f-row var-row" title = "shaft diameter in inches
unless metric is checked
then in millimeters" > < label > diameter< / label > < input id = "tool-sdiam" size = "7" > < / input > < / div >
< div class = "f-row var-row" title = "shaft length in inches
unless metric is checked
then in millimeters" > < label > length< / label > < input id = "tool-slen" size = "7" > < / input > < / div >
< div class = "set-header f-col" lk = "td_flut" > flute< / div >
< div class = "f-row var-row" title = "flute diameter in inches
unless metric is checked
then in millimeters" > < label > diameter< / label > < input id = "tool-fdiam" size = "7" > < / input > < / div >
< div class = "f-row var-row" title = "flute length in inches
unless metric is checked
then in millimeters" > < label > length< / label > < input id = "tool-flen" size = "7" > < / input > < / div >
< div class = "set-header f-col" ln = "td_tapr" > taper< / div >
< div class = "f-row var-row" title = "taper angle" > < label > angle< / label > < input id = "tool-tangle" size = 7 > < / input > < / div >
< div class = "f-row var-row" title = "tip width in inches
unless metric is checked
then in millimeters" > < label > tip< / label > < input id = "tool-ttip" size = "7" > < / input > < / div >
< / div >
< 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" >
< 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
<!-- grid local list -->
2024-05-28 18:02:52 -04:00
< div id = "mod-local" class = "mdialog f-col" > < / div >
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" >
< div class = "header" > < label > job< / label > < / div >
< div id = "print-info" class = "f-col box" >
< div > < label > file name< / label > < input id = "print-filename" size = "20" spellcheck = "false" / > < / div >
< div > < label > file size (bytes)< / label > < input id = "print-filesize" size = "12" disabled = "true" / > < / div >
< div > < label > time estimate (h:m:s)< / label > < input id = "output-time" size = "12" disabled = "true" / > < / div >
< / div >
< / div >
< div id = "print-filament" class = "f-col" >
< div class = "header" > < label > material< / label > < / div >
< div class = "f-col box" >
< div > < label > filament density (g/cm^3)< / label > < input id = "print-density" size = "12" value = "1.25" / > < / div >
< div > < label > filament used (mm)< / label > < input id = "print-filament" size = "12" disabled = "true" / > < / div >
< div > < label > printed weight (g)< / label > < input id = "print-weight" size = "12" disabled = "true" / > < / div >
< / div >
< / div >
2024-09-12 10:11:38 -04:00
< / div >
2025-02-01 18:45:33 -05:00
< div id = "code-preview-head" class = "header" > < label > 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 >
2024-12-10 11:59:33 -05:00
< div class = "header" > < label > 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" >
< div class = "header" > < label > send to bambu< / label > < / div >
< 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 >
< button id = "print-bambu-2" class = "grow" disabled > send + print< / button >
2025-02-01 18:45:33 -05:00
< / div >
2024-09-12 10:11:38 -04:00
< / div >
< div id = "send-to-octohead" class = "header" > < label > octoprint< / label > < / div >
< div id = "send-to-octoprint" class = "f-col box" >
< div class = "grow f-row" >
< div class = "f-col grow" >
< div id = "ophost" > < label > host< / label > < input id = "octo-host" size = "20" placeholder = "http(s)://host:port" / > < / div >
< div id = "opapik" > < label > key< / label > < input id = "octo-apik" size = "20" / > < / div >
< / div >
< button id = "print-octoprint" > send< / button >
< / div >
< div id = "oph1nt" > < label class = "hint" > < a href = "http://docs.octoprint.org/en/master/api/general.html?highlight=cors#cross-origin-requests" target = "_help" > CORS support< / a > must be enabled in API settings< / label > < / div >
< / div >
< div id = "send-to-hosthead" class = "header" > < label > grid:host< / label > < / div >
< div id = "send-to-gridhost" class = "f-col box" >
< div class = "grow f-row" >
< div class = "f-col grow" >
< div > < label > host< / label > < input id = "grid-host" size = "20" placeholder = "http(s)://host:port" / > < / div >
< div id = "gpapik" > < label > api key< / label > < input id = "grid-apik" size = "20" / > < / div >
< div > < label > target< / label > < select id = "grid-target" > < / select > < / div >
< / div >
< button id = "print-gridhost" > send< / button >
< / div >
< div > < label class = "hint" > setup < a href = "https://github.com/GridSpace/grid-host" target = "_help" > grid:host< / a > for your network< / label > < / div >
< / div >
< div id = "send-to-gridhead" class = "header noshow" > < label > grid:local< / label > < / div >
< div id = "send-to-gridspool" class = "f-row box noshow" >
< div class = "grow f-row" >
< div class = "grow a-center j-center" >
< label > target< / label >
< select id = "grid-local" > < / select >
< / div >
< div class = "f-col" >
< button id = "print-gridlocal" > send< / button >
< button id = "admin-gridlocal" > admin< / button >
< / div >
< / div >
< / div >
< / div >
< div id = "mod-x-sla" class = "mod-print mdialog f-col" >
< div class = "header" > < label > export< / label > < / div >
< div id = "print-info" class = "f-col box" >
2024-12-04 13:56:35 -05:00
< div > < label > 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 >
< div class = "header" > < label > download< / label > < / div >
< div class = "f-row box" >
< button id = "print-sla" class = "grow" > download< / button >
< / div >
< / div >
< div id = "mod-x-laser" class = "mod-print mdialog f-col" >
< div class = "header" > < label > export< / label > < / div >
< div id = "print-info" class = "f-col box" >
2024-12-04 13:56:35 -05:00
< div > < label > 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 >
< div class = "header" > < label > download< / label > < / div >
< div class = "f-row box" >
< button id = "print-svg" class = "grow" > svg< / button >
< button id = "print-dxf" class = "grow" > dxf< / button >
< 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
<!-- CAM animation controls and readout -->
2020-11-30 10:59:24 -05:00
< div id = "layer-animate" class = "f-col a-center" > < / div >
< div id = "layer-toolpos" class = "f-row a-center" > < / 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 >