diff --git a/docs/docs/gridbot/bom.md b/docs/docs/gridbot/bom.md new file mode 100644 index 00000000..f5086b52 --- /dev/null +++ b/docs/docs/gridbot/bom.md @@ -0,0 +1,92 @@ +# Parts List + + + +| **Quantity** | **Name** | **Description** | **Product Link** | +| ------------ | ------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | upper xy belt | | [https://www.amazon.com/Printing-FYSETC-Fiberglass-Rostock-Printers/dp/B07CDDPCM8](https://www.amazon.com/Printing-FYSETC-Fiberglass-Rostock-Printers/dp/B07CDDPCM8) | +| 1 | lower xy belt | | [https://www.amazon.com/Printing-FYSETC-Fiberglass-Rostock-Printers/dp/B07CDDPCM8](https://www.amazon.com/Printing-FYSETC-Fiberglass-Rostock-Printers/dp/B07CDDPCM8) | +| 1 | z belt | 1140-1160 mm | [https://www.amazon.com/gp/product/B018HN8576](https://www.amazon.com/gp/product/B018HN8576) | +| 1 | 24v power supply | | [https://www.amazon.com/EAGWELL-Universal-Regulated-Switching-Computer/dp/B01IOK5FM0](https://www.amazon.com/EAGWELL-Universal-Regulated-Switching-Computer/dp/B01IOK5FM0) | +| 1 | SKR V1.3 | | [https://www.amazon.com/gp/product/B07Z3FZGJ1](https://www.amazon.com/gp/product/B07Z3FZGJ1) | +| 2 | cross bar | | [https://hobbyking.com/en\_us/aluminum-square-tube-diy-multi-rotor-12-8x12-8x600mm-5inch-black.html](https://hobbyking.com/en\_us/aluminum-square-tube-diy-multi-rotor-12-8x12-8x600mm-5inch-black.html) | +| 1 | hot end mount | 3d print solid | | +| 1 | bltouch mount | 3d print solid | | +| 3 | level bracket | 3d print solid | | +| 1 | fan mount | 3d print | | +| 1 | 24v-5v converter | | [https://www.amazon.com/gp/product/B01299MVD8](https://www.amazon.com/gp/product/B01299MVD8) | +| 1 | cover top | laser cut 3mm | | +| 2 | cross bar spacer | laser cut 3mm | | +| 1 | inner cover | laser cut 3mm | | +| 1 | outer cover | laser cut 3mm | | +| 12 | 450mm 1010 | | [https://us.misumi-ec.com/vona2/detail/110302683830/?HissuCode=HFSB5-2020-450](https://us.misumi-ec.com/vona2/detail/110302683830/?HissuCode=HFSB5-2020-450) | +| 4 | 400mm x 8mm shaft | | [https://www.amazon.com/gp/product/B07DPGD69D](https://www.amazon.com/gp/product/B07DPGD69D) | +| 2 | 400mm x 8mm lead screw | | [https://www.amazon.com/gp/product/B01HBK843G](https://www.amazon.com/gp/product/B01HBK843G) | +| 2 | 688-2RS bearing | | [https://www.amazon.com/gp/product/B00ZVF8EMU](https://www.amazon.com/gp/product/B00ZVF8EMU) | +| 1 | motor mount right | 3d print solid | | +| 1 | motor mount left | 3d print solid | | +| 4 | nema17 | | [https://www.amazon.com/gp/product/B06Y4NYJWN](https://www.amazon.com/gp/product/B06Y4NYJWN) | +| 10 | gt2 idler | | [https://www.amazon.com/gp/product/B07L9QDVC8](https://www.amazon.com/gp/product/B07L9QDVC8) | +| 3 | gt2 pulley 5mm | | [https://www.amazon.com/gp/product/B01IMR6OR0](https://www.amazon.com/gp/product/B01IMR6OR0) | +| 2 | gt2 pulley 8mm | | [https://www.amazon.com/gp/product/B019GIJ296](https://www.amazon.com/gp/product/B019GIJ296) | +| 1 | bed surface | | | +| 1 | bed heater | | | +| 4 | LMK8LUU | | [https://www.amazon.com/uxcell-Flange-Linear-Bearings-Length/dp/B07H93T2YK](https://www.amazon.com/uxcell-Flange-Linear-Bearings-Length/dp/B07H93T2YK) | +| 1 | bed cork | | [https://www.amazon.com/gp/product/B01FVWIU76](https://www.amazon.com/gp/product/B01FVWIU76) | +| 1 | E3D V6 | | [https://gulfcoast-robotics.com/products/24v-v6-hotend-1-75mm-0-4mm-for-bowden-extruder-for-reprap-3d-printer-kossel-mini?variant=7205394219052](https://gulfcoast-robotics.com/products/24v-v6-hotend-1-75mm-0-4mm-for-bowden-extruder-for-reprap-3d-printer-kossel-mini?variant=7205394219052) | +| 1 | extruder mount | 3d print | | +| 2 | lead screw guide | | included w/ lead screw | +| 2 | z middle 1 | laser cut 6mm | | +| 2 | z middle 2 | laser cut 6mm | | +| 1 | z bottom left | laser cut 6mm | | +| 2 | z top | laser cut 6mm | | +| 2 | z bottom under | laser cut 6mm | | +| 1 | z bottom right | laser cut 6mm | | +| 2 | pi touch stand | 3d print solid | | +| 1 | tool holder | 3d print | | +| 1 | BL Touch V3 | | [https://www.amazon.com/dp/B07FR2LLZP](https://www.amazon.com/dp/B07FR2LLZP) | +| 2 | corner idler upper | laser cut 3mm | | +| 1 | corner idler lower camera | laser cut 3mm | | +| 2 | corner y stop | laser cut 3mm | | +| 1 | corner idler lower | laser cut 3mm | | +| 8 | corner plain thin | laser cut 3mm or 6mm | | +| 6 | corner foot | laser cut 6mm | | +| 6 | 30mm spacer | 3d print solid | | +| 1 | touch pi | | [https://www.element14.com/community/docs/DOC-78156/l/raspberry-pi-7-touchscreen-display](https://www.element14.com/community/docs/DOC-78156/l/raspberry-pi-7-touchscreen-display) | +| 1 | x axis mount mirror | | | +| 1 | x axis mount | 3d print solid | | +| 1 | camera mount | 3d print SLA or FDM | | +| 1 | 60mm fan | | [https://www.amazon.com/gp/product/B07R3WCKCX](https://www.amazon.com/gp/product/B07R3WCKCX) | +| 2 | toggle switch | | | +| 10 | washer 5mm | | | +| 10 | nut 5mm | | | +| 23 | nut 3mm | | | +| 6 | lock nut 5mm | | | +| 3 | level knob | laser cut 3mm or 6mm | | +| 3 | 5mm button head | 35mm | | +| 77 | 5mm button head | 8mm | | +| 4 | 5mm button head | 55mm | | +| 2 | 5mm button head | 25mm | | +| 8 | 5mm button head | 16mm | | +| 30 | 5mm button head | 10mm | | +| 2 | 5mm socket head | 22mm | | +| 6 | 5mm socket head | 40mm | | +| 2 | 5mm button head | 14mm | | +| 6 | 4mm button head | 8mm | | +| 22 | 3mm button head | 8mm | | +| 4 | 3mm button head | 18mm | | +| 10 | 3mm button head | 16mm | | +| 2 | 3mm button head | 40mm | | +| 18 | 3mm button head | 6mm | | +| 7 | 3mm button head | 10mm | | +| 4 | 3mm button head | 14mm | | +| 3 | mgn12 rail | | [https://www.amazon.com/gp/product/B0762MKQFD](https://www.amazon.com/gp/product/B0762MKQFD) | +| 22 | 1010 angle bracket | | [https://www.amazon.com/gp/product/B07GGLYX9V](https://www.amazon.com/gp/product/B07GGLYX9V) | +| 1 | spool arm spacer | laser cut 6mm | | +| 1 | spool arm | laser cut 6mm | | +| 1 | spool holder | 3d print solid | | +| 1 | spool | | | +| 1 | camera bracket | 3d print | | +| 2 | bed retainer corner | laser cut 3mm | | +| 1 | bed retainer side | laser cut 3mm | | +| 3 | bed level clip | | | diff --git a/docs/docs/gridbot/index.md b/docs/docs/gridbot/index.md new file mode 100644 index 00000000..b8cd6a71 --- /dev/null +++ b/docs/docs/gridbot/index.md @@ -0,0 +1,19 @@ +--- +description: An Open Model, Open Source, Core-XY, FDM 3D Printer +--- + +# GridBot + +The result of many years of refinement, this 3D printer offers a light-weight, open, yet also rigid design. The clean look is achieved by keeping components like motors and rails inside the frame. This allows for easier enclosure, should that be desirable. + +The [CAD model](https://cad.onshape.com/documents/64a8b0664bd09cbffb0e0d17/w/044a002e53008b3bc2a845ec/e/9b8b7abe5b303b24f2f26d14) is shared publicly in Onshape. + +An [updated design](https://cad.onshape.com/documents/d0514606a660a802eb16304a/w/43a797f28bcc004e3e7e7e17/e/61abf70c46004ffbc0134231) is in the works. Some photos in the [wiki](https://github.com/GridSpace/grid-bot/wiki). + +The [control software](https://github.com/GridSpace/grid-bot) is open source on GitHub. It is a simple GCode sender designed for the Pi 7" touch screen. Better supported options like [OctoPrint](https://octoprint.org/) may be a wise choice unless you are keen to help with development and debugging. + +A Beta for a [new design](https://cad.onshape.com/documents/d0514606a660a802eb16304a/w/43a797f28bcc004e3e7e7e17/e/61abf70c46004ffbc0134231) is also available. Check [forum.grid.space](https://forum.grid.space) for progress on this and other builds. + + + +![](/img/GridBot-Two-Right.png) diff --git a/docs/docs/index.md b/docs/docs/index.md new file mode 100644 index 00000000..5ca327fa --- /dev/null +++ b/docs/docs/index.md @@ -0,0 +1,29 @@ +--- +description: >- + Grid.Space provides free, open-source, open-design applications and hardware + for makers +title: Overview +slug: / +--- + +# About + +## Current + +[Kiri:Moto](./kiri-moto/index.md) is a unique browser-based slicer for 3D printing and a tool-path generator for CNC mills and laser cutters. It is completely **free** and **open-source** with a focus on **privacy** and **ease-of-use**. It is actively being developed and updated. + +[GridBot](./gridbot/index.md) is an open-model, open-source, 3D printer for DIY enthusiasts. + +## Future + +GridBelt: an open-model belt-based 3D printer for continuous printing. + +MetaMoto: this block-based modeling tool hasn't received updates in years. New WASM [ports](https://github.com/donalffons/opencascade.js) of the OpenCascade engine will be utilized in an upcoming refresh to this tool and also allow the addition of exciting new functionality. + +## Target + +High-quality, free, open, secure, and privacy-focused tools are critical to growing current and future generations of makers. These tools should work at the educational, STEM, and STEAM entry points and scale up to prosumer features. + +## Engagement + +These tools and projects are useful directly and immediately, but can also serve as teaching tools for design and coding. Any help with feature development, language translations, bug reporting, and more is welcome. diff --git a/docs/docs/kiri-moto/apis.md b/docs/docs/kiri-moto/apis.md new file mode 100644 index 00000000..ea5d5836 --- /dev/null +++ b/docs/docs/kiri-moto/apis.md @@ -0,0 +1,129 @@ +--- +description: Various ways to access Kiri:Moto's internals (2.6 and newer versions only) +--- + +# API, CLI, Embedding + +## Javascript Slicer Engine + +The latest slicing engine code is served live at `https://grid.space/code/engine.js` + +This can be embedded in your page then accessed with the following API calls. An example page is [here](https://grid.space/kiri/engine.html). + +| function | description | +| ---------------------- | ------------------------------------------------------------------------------------------------------- | +| load(_url_) | load an [STL](https://en.wikipedia.org/wiki/STL\_\(file\_format\)) referred to by _url_ | +| clear() | remove all objects from workspace | +| parse(_data_) | parse the text or binary contents of an [STL](https://en.wikipedia.org/wiki/STL\_\(file\_format\)) file | +| setMode(_mode_) | where _mode_ comes from:`[ "CAM", "FDM", "LASER", "SLA" ]` | +| setListener(_fn_) | a function to receive engine progress messages | +| setDevice(_options_) | change default Device options | +| setProcess(options) | change default Process options | +| setController(options) | change default Core options | +| moveTo(_x, y, z_) | absolute move the origin of the loaded object | +| move(_x, y, z_) | relative move the origin of the loaded object | +| scale(_x, y, z_) | scale axes of the loaded object | +| rotate(_x, y, z_) | relative rotate axes of loaded object (in radians) | +| slice() | async slice of loaded object | +| prepare() | async path routing of slice data | +| export() | async gcode generation from routed paths | + +## Command Line API + +The slicer engine is also available as a command-line utility + +``` +node src/kiri-run/cli --help + +cli + --verbose | enable verbose logging + --dir=[dir] | root directory for file paths (default: '.') + --model=[file] | model file to load (or last parameter) + --source=[file] | source file list (defaults to kiri engine) + --device=[file] | device definition file (json) + --process=[file] | process definition file (json) + --controller=[file] | controller definition file (json) + --output=[file] | gcode output to file or '-' for stdout + --position=x,y,z | move loaded model to position x,y,z + --rotate=x,y,z | rotate loaded model x,y,z radians + --scale=x,y,z | scale loaded model in x,y,z + --move=x,y,z | move loaded model x,y,z millimeters +``` + +Example [Device](https://github.com/GridSpace/grid-apps/blob/master/src/cli/kiri-fdm-device.json) and [Process](https://github.com/GridSpace/grid-apps/blob/master/src/cli/kiri-fdm-process.json) settings which are defined in [init.js](https://github.com/GridSpace/grid-apps/blob/master/src/kiri/conf.js) around line `250` + +JSON dictionaries can be used for reference from the [CLI package](https://github.com/GridSpace/grid-apps/tree/master/src/cli) + +## Embedding Kiri:Moto with an IFrame + +Kiri:Moto is designed to be embedded in a page using an IFrame. The look and feel and other controls are available for the loaded page using a messaging API. An example page is [here](https://grid.space/kiri/frame.html). + +| function | description | +| --------------------------- | ------------------------------------------------------------------------------------------------------- | +| setFrame(_id\_obj_) | id or object of IFrame with Kiri:Moto loaded | +| load(_url_) | load an [STL](https://en.wikipedia.org/wiki/STL\_\(file\_format\)) referred to by _url_ | +| clear() | remove all objects from workspace | +| parse(_data_) | parse the text or binary contents of an [STL](https://en.wikipedia.org/wiki/STL\_\(file\_format\)) file | +| setMode(_mode_) | where _mode_ comes from:`[ "CAM", "FDM", "LASER", "SLA" ]` | +| setDevice(_options_) | change default Device options | +| setProcess(options) | change default Process options | +| setController(options) | change default Core options | +| slice() | async slice of loaded object | +| prepare() | async path routing of slice data | +| export() | async gcode generation from routed paths | +| onmessage(_fn_) | function will receive all IFrame messages | +| onevent(_event, data_) | function will receive named messages | +| emit(_event, data_) | send named event with data payload | +| alert(_msg, time_) | show alert message with optional time in seconds | +| process(_percent, message_) | set progress bar (0.0 to 1.0) with optional message | + +## Events + +| Key | Output | Description | +| ---------------- | ------ | ---------------------------------------------- | +| animate | | CNC Animation Started | +| boolean.update | | Boolean checkbox values sync'd | +| code.load | | GCode or SVG code is being loaded / parsed | +| code.loaded | | GCode / SVG code parsing complete | +| device.set | | A new machine / device was selected | +| export | | GCode / SVG export dialog is open | +| help.show | | A Help dialog is open | +| init-done | | App is fully initialized | +| init.one | | App is starting to initialize | +| init.two | | App is binding UI elements | +| key.esc | | \[ESC] key was pressed | +| keypress | | A non-control or meta key was pressed | +| load.lib | | A script extension was loaded | +| modal.show | | A modal dialog is showing | +| mode.set | | App mode changed: `FDM, CNC, Laser, SLA` | +| mouse.hover | | Mouse is hovering over a feature of interest | +| mouse.hover.down | | Mouse down on a feature of interest | +| mouse.hover.up | | Mouse up on a feature of interest | +| platform.layout | | Platform auto-layout was performed | +| preview.begin | | Preview Mode calculations started | +| preview.end | | Preview Mode calculations complete | +| preview.error | | Preview Mode calculations encountered an error | +| print | | Legacy: same as `preview.end` | +| range.updates | | FDM Range records were changed | +| reload | | App page will reload in 100ms | +| resize | | App page was resized | +| selection.drag | | Generated during object drag | +| selection.move | | After object drag completes | +| selection.rotate | | Selected objects were rotated | +| selection.scale | | Selected objects were scaled | +| settings | | Settings object changed | +| settings.load | | Settings object was replaced | +| settings.saved | | Settings object was saved | +| slice | | Deprecated | +| slice.begin | | Slicing calculations started | +| slice.end | | Slicing calculations complete | +| slice.error | | Slicing calculations encountered and error | +| slider.label | | Slider labels changed | +| slider.pos | | Slider position changed | +| slider.set | | Slider values changed | +| view.set | | View mode changed: `slice, preview, animate` | +| widget.add | | An object was added to the workspace | +| widget.delete | | An object was deleted from the workspace | +| widget.deselect | | An object was de-selected | +| widget.rotate | | An object was rotated | +| widget.select | | An object was selected | diff --git a/docs/docs/kiri-moto/controls.md b/docs/docs/kiri-moto/controls.md new file mode 100644 index 00000000..517f84ac --- /dev/null +++ b/docs/docs/kiri-moto/controls.md @@ -0,0 +1,61 @@ +--- +description: Keyboard Shortcuts and Mouse Controls +--- + +# Controls + +| Key | Action | Notes | +| ---------------- | ----------------------------------------- | --------------------------------------- | +| e | Device Dialog | Select and customize devices | +| o | CNC Tool Dialog | CNC mode only | +| c | Grid.Local Dialog | Find GridBot devices on your network | +| q | Preference Dialog | Change application behaviors | +| l | Work Profile Dialog | Load, Save, Rename work profiles | +| | | | +| a | Arrange | Switch to layout view from other views | +| | | or perform an automatic layout when | +| | | already in layout view | +| s | Slice Object | Slice workspace objects | +| p | Preview Paths | Do route planning for sliced objects | +| g | CNC Animation | Enter milling animation mode | +| x | Export Paths as GCode, SVG, DXF | Produce downloadable files | +| | | | +| i | File Import Dialog | | +| r | Recent Files Dialog | | +| | | | +| h | Home View | Default 45 degree view of objects | +| t | Top View | Top-down view of objects | +| f | Front View | Direct side-view (front) | +| z | Reset View | Default zoom and Home | +| < > | Cycle Side Views | Front, Right, Back, Left | +| v | Focus on Selection (arrange mode) | Camera points to object center | +| v | Toggle Single Slice View (preview mode) | Toggle single vs range of slices | +| | | | +| \~,1-9,0 | Select layer in 10% increments | Slice and Preview modes | +| | | | +| d | Duplicate Selected Objects | Create a copy of selected objects | +| m | Mirror Selected Objects | Mirror vertices of selected objects | +| \[delete] | Delete Selected Objects | Remove selected object from workspace | +| \[arrow] | Rotate 90 degrees | Rotate selected object | +| \[shift + arrow] | Rotate 5 degrees | Rotate selected object | +| \[ctrl + a] | Select All Objects | Select all objects | +| | | | +| \[shit + click] | Toggle Selection | Select or Deselect a single object | +| \[shift + wheel] | Cycle through layers (preview mode) | Use mouse wheel as range slider | +| \[meta + drag] | Pan View | Move focus of camera | +| \[right + drag] | Pan View | | +| \[left + drag] | Rotate | Move camera around a focal point | +| \[mouse wheel] | Zoom | Move camera closer / farther from focus | +| \[middle + drag] | Zoom | | +| | | | +| \[ctrl + click] | Align face of selected object to platform | Rotate object face toward work surface | +| \[meta + click] | Align face of selected object to platform | | +| | | | +| \[shift + z] | Reset all preferences to stock | Reload page afterward | +| | | | +| **Mouse** | **FDM Support Controls** | **Version Notes** | +| \[left click] | Toggle add / remove column | | +| \[ctrl + drag] | Erase support columns | 2.7+ | +| \[cmd + drag] | Erase support columns | 2.7+ | +| \[opt + drag] | Draw on support columns | 2.7+ | +| \[alt + drag] | Draw on support columns | 2.7+ | diff --git a/docs/docs/kiri-moto/faq.md b/docs/docs/kiri-moto/faq.md new file mode 100644 index 00000000..67cfa1ee --- /dev/null +++ b/docs/docs/kiri-moto/faq.md @@ -0,0 +1,45 @@ +--- +description: Frequently Asked Questions +--- + +# FAQ + +## Is Kiri:Moto free? Open Source? + +Entirely. + +The source code is on [GitHub](https://github.com/GridSpace/grid-apps) if you want to install and run it yourself. It is available under the [MIT](https://en.wikipedia.org/wiki/MIT\_License) license, which is one of the most liberal in terms of allowing you to do what you want with the code without restriction. + +Multiple live [versions](https://grid.space/choose) (including current development branches) are served free of charge and free of ads on [Grid.Space](https://grid.space/kiri/). + +## How does it compare to other slicers? + +It has similar capabilities to other 3D printing slicers like Cura, Simplify3D, and PrusaSlicer. + +It is very different in several important ways: + +* There is no software to install or maintain. It's just a web page. +* As a web app, it runs in a security sandbox and cannot access data on your hard drive +* It offers several modes of operation for most of the common maker tools, like CNC mills +* It is updated quite frequently (several times a week) with bug fixes and new features + +## What language is it written in? + +It is almost entirely Javascript. There are a few minor modules compiled into WASM for performance. + +## What file types are supported? + +[STL](https://en.wikipedia.org/wiki/STL\_\(file\_format\)), [OBJ](https://en.wikipedia.org/wiki/Wavefront\_.obj\_file), and [3MF](https://github.com/3MFConsortium/spec\_core/blob/master/3MF%20Core%20Specification.md) files are supported for 3D part import. [SVG](https://en.wikipedia.org/wiki/Scalable\_Vector\_Graphics) files import and auto-convert into 3D models. [PNG](https://en.wikipedia.org/wiki/Portable\_Network\_Graphics) files are supported for 2D image to 3D model conversion. + +## What if my printer isn't supported? + +You can either find a device close to yours and "customize" it in the device dialog. Or you can import a PrusaSlicer .ini file and it will auto-convert into Device + Profile settings. Caveat: macro logic is not automatically converted. + +## How can I get involved? + +Start with the [forum](https://forum.grid.space/) discussions. If you want to get involved with Kiri:Moto development, download the [code](https://github.com/GridSpace/grid-apps) and join the Discord [server](https://discord.com/invite/suyCCgr). + +## Where does the name come from? + +Kiri comes from Kiri-e, which is the Japanese art of paper-cutting. Moto is short for "modeling tool". + diff --git a/docs/docs/kiri-moto/gcode-macros.md b/docs/docs/kiri-moto/gcode-macros.md new file mode 100644 index 00000000..8d8c75fa --- /dev/null +++ b/docs/docs/kiri-moto/gcode-macros.md @@ -0,0 +1,108 @@ +--- +description: Variable Substitutions and Expressions in GCode Macros +--- + +# GCode Macros + +**FDM (3D Printing) variable substitutions** + +_All Modes "pre" and "post" (header/footer)_ + +- \{top\} = offset in mm of bed top Y axis +- \{left\} = offset in mm of bed left X axis +- \{right\} = offset in mm of bed right X axis +- \{bottom\} = offset in mm of bed bottom Y axis + +_All Modes "post" (footer)_ + +- \{time\} = job run time (printing/milling) in seconds (fractional) +- \{print-time\} = alias for \{time\} ... deprecated after 2.8 +- \{print_time\} = alias for \{time\} ... 2.9 and beyond + +_3D printing / FDM mode only_ + +"feature" macro only (as of 3.4) + +- \{feature\} = feature region of the print (brims, infill, etc) +- \{minx|miny|maxx|maxy\} = position in mm of extents of the print area + +"pre", "post", and other macros + +- \{temp\} = hot end temperature +- \{bed_temp\} = bed temperature +- \{fan_speed\} = active cooling fan speed (usually 0-255) +- \{material\} = length in mm of material (filament) used +- \{layers\} = total # of layers +- \{layer\} = current layer number +- \{height\} = current layer height in mm +- \{range(_from_,_to_)\} = evaluated using \{layer\} and \{layers\} +- \{pos_x\} = last output X position +- \{pos_y\} = last output Y position +- \{pos_z\} = last output Z position +- \{progress\} = 0-100% state of print output +- \{tool\} | \{nozzle\} = current tool in use +- \{tool_count\} = number of tools used in print +- \{tool_used\__n_\} = whether tool # _n_ is used in print +- \{z_max\} = max build height in mm +- \{z\} = current z position +- \{e\} = amount of filament extruded + +_Logical Code Flow (IF / ELIF / ELSE / END)_ + +``` +;; IF { layer >= 10 && layer <= 20 } +;; ..... inside 10-20 layer={layer} +;; ELIF { layer >= 15 && layer <= 25 } +;; ..... inside 15-25 layer={layer} +;; ELSE +;; ..... did not match previous tests layer={layer} +;; END +``` + +_PREAMBLE control (v3.4+) allows for intro comment and config list to be re-positioned after the header or disabled. This was introduced to allow GCode output to work with Ultimaker._ + +_`;; PREAMBLE OFF`_ + +_`;; PREAMBLE END`_ + +_Axis Remapping (v3.5+) allows for over-riding the default axis names. Useful for swapping axes and changing output for specific firmware targets. The format of the map is a JSON object._ + +_`;; AXISMAP {"X":"Y", "Y":"Z", "E":"E1"}`_ + +#### CAM Header Directives + +Comments Rewrite (v3.8+) converts `;` comments into `()` parenthesis format + +_`;; COMMENT_REWRITE_PARENS`_ + +Minimize the size of GCode output (v3.8+) + +_`;; COMPACT-OUTPUT`_ + +Set decimal precision (n = integer) (v3.8+) + +_`;; DECIMALS = n`_ + +**CAM variable substitutions** + +- \{tool\} = CAM tool # +- \{tool_name\} = CAM tool name +- \{time\} = dwell time in seconds +- \{time_ms\} = dwell time in milliseconds +- \{time_sec\} = dwell time in seconds +- \{speed\} = spindle speed +- \{spindle\}, \{rpm\} = spindle speed (v2.7+) +- \{feed\} = last output feed rate +- \{pos_x\} = last output X position +- \{pos_y\} = last output Y position +- \{pos_z\} = last output Z position + +_Axis Scaling (v3.7+) allows for a factor to be applied to X,Y,Z coordinates. Useful for some machines like the Roland MDX-40A that uses an unusual coordinate space. Default axis scale is `1`_ + +_`;; SCALE { "X":100, "Y":100, "Z":100 }`_ + +**CAM & FDM : simple algebraic expression support** + +- Text inside `{}` is evaluated algebraically with access to JS classes and methods +- `{Math.min(layer/layers, 0.5) + 1}` +- `{token+n} {token-n}` diff --git a/docs/docs/kiri-moto/index.md b/docs/docs/kiri-moto/index.md new file mode 100644 index 00000000..7bd3fc4c --- /dev/null +++ b/docs/docs/kiri-moto/index.md @@ -0,0 +1,32 @@ +--- +description: >- + A Browser-Based Slicer for 3D FDM and SLA printing, CNC Milling, and Laser + cutting +--- + +# Kiri:Moto + +Available as a free, web-based application, [Kiri:Moto](https://grid.space/kiri/) offers a unique combination of maker-tools in a single, clean, fast interface. For an introduction or overview, check out [this video](https://youtu.be/08795Sj22QE). + +Kiri:Moto is focused on privacy, performance, and ease-of-use. + +Kiri:Moto has been in continuous development since 2013. It typically gets new development releases a few times a week and major releases every 4-8 weeks. + +Please consider supporting this project with a [donation](https://paypal.me/gridspace3d?locale.x=en\_US). + +## Privacy + +Kiri:Moto is served free of ads, trackers, and any collection of personal data ([PII](https://en.wikipedia.org/wiki/Personal\_data)). Don't trust that? You can also install and run it yourself from [source](https://github.com/GridSpace/grid-apps). + +Because Kiri:Moto runs in a browser's security sandbox, it does not have access to the personal and private data on your local hard drive the way installed desktop software does. + +Kiri:Moto does all processing in the browser. None of your data is sent to or stored in the cloud. + +## Performance + +Kiri:Moto is a compact, fast-loading page free of bloat. This is achieved by minimizing external package dependencies. With a few notable exceptions, most of the code-based is written entirely from-scratch. + +## Ease of Use + +Creating an interface that is usable for new to advanced users can be a challenge. Kiri:Moto takes a strong editorial stance on complexity. Much of the software in the maker universe is riddled with parameters and controls that are duplicative and work at cross-purposes. + diff --git a/docs/docs/kiri-moto/integrations.md b/docs/docs/kiri-moto/integrations.md new file mode 100644 index 00000000..64147ec9 --- /dev/null +++ b/docs/docs/kiri-moto/integrations.md @@ -0,0 +1,33 @@ +--- +description: >- + Kiri:Moto is designed to be embedded in or accessible through other web-based + applications +--- + +# Integrations + +## OctoPrint + +Use the [GridSpace OctoPrint](https://plugins.octoprint.org/plugins/gridspace/) plugin to spool jobs directly from Kiri:Moto to any printer on your local network + +## Onshape + +Kiri:Moto is available inside of [Onshape](https://onshape.com/) as a web-app extension. Once [installed](https://www.youtube.com/watch?v=AbbZjj5FMGE) through Onshape's App store, Kiri:Moto can be added as a tab (just like a Part Studio) inside of any document in which you have edit capabilities. In this mode, Kiri:Moto's import function is replaced to bring up Onshape's part dialog. This makes it easy to load parts directly for slicing without first having to export them. + +## Lychee Slicer + +Kiri:Moto's FDM engine is used to power the FDM mode of Mango 3D's [Lychee Slicer](https://lychee.mango3d.io/) + +## SimplyPrint.io + +Kiri:Moto is the slicing engine behind [SimplyPrint's](https://simplyprint.io/) web-based printer management system. + +## Sienci's CAMLab + +[CAMLab](http://camlab.sienci.com/camlab) is a fork of an earlier version of Kiri:Moto. + +## Thingiverse + +Like Onshape, Kiri:Moto is integrated as a native [Thing-app](https://www.thingiverse.com/apps/kirimoto) into Thingiverse. As a user of Thingiverse, you can elect to have Kiri:Moto show up as a "way to open" a Thing file. This provides the convenience of directly accessing, slicing, and printing parts on Thingiverse without first having to download them and then re-import them into a slicer. + +Unfortunately, as of this writing, Thingiverse Thing Apps are broken (again) diff --git a/docs/docs/kiri-moto/interface.md b/docs/docs/kiri-moto/interface.md new file mode 100644 index 00000000..efe98a16 --- /dev/null +++ b/docs/docs/kiri-moto/interface.md @@ -0,0 +1,30 @@ +--- +description: A tour of Kiri:Moto's web-based interface +--- + +# Interface + +Kiri:Moto's interface is designed for maximum access to the workspace and to present only the options that are necessary and relevant to the current action. + +The left menus control workspace, work mode, and objects while. + +The right menus control the behavior and settings for slicing, path routing, and path to code exports. + +[OBJ](https://www.cs.cmu.edu/\~mbz/personal/graphics/obj.html), [STL](https://en.wikipedia.org/wiki/STL\_\(file\_format\)), and [3MF](https://docs.fileformat.com/3d/3mf/) files import natively. [SVG](https://en.wikipedia.org/wiki/Scalable\_Vector\_Graphics), [JPG](https://en.wikipedia.org/wiki/JPEG\_File\_Interchange\_Format), and [PNG](https://en.wikipedia.org/wiki/Portable\_Network\_Graphics) are auto-extruded into a 3D parts. + +![A minimalist approach](/img/kiri-moto.png) + +In CNC mode, there is an additional storyboard menu at the bottom where you can plan and re-order milling operations. + +![](/img/kiri-moto-cnc.png) + +The Setup menu offers access to Device selection and customization. + +![Device Dialog](/img/device-dialog.png) + +Application preferences are mode-dependent. For example, CNC preferences show animation controls. + +![CNC Mode Preferences](/img/preferences-cam.png) + +![FDM Mode Preferences](/img/preferences-fdm.png) + diff --git a/docs/docs/kiri-moto/localization.md b/docs/docs/kiri-moto/localization.md new file mode 100644 index 00000000..53011d13 --- /dev/null +++ b/docs/docs/kiri-moto/localization.md @@ -0,0 +1,18 @@ +--- +description: Kiri:Moto supports localization through a single easy-to-extend dictionary +--- + +# Localization + +If you are interested in adding a new language to Kiri:Moto's interface, follow the directions on this page to setup a local dev environment: + +[https://github.com/GridSpace/grid-apps](https://github.com/GridSpace/grid-apps) + +Then create a copy of the [`web/kiri/lang/en.js`](https://github.com/GridSpace/grid-apps/blob/master/web/kiri/lang/en.js) file with the new file using either a two-letter or compound language-country code (like `en-us.js`) and put it in the same `lang` directory. + +Replace all values with correct localized values and submit a [pull request](https://github.com/GridSpace/grid-apps/pulls) to have it included in the official Kiri:Moto code-base. + +If you have the time, please consider also localizing `web/kiri/lang/en-help.html` + +Test your language by appending `?ln:XX` to your local URL where `XX` is the name of your language file _without_ the `.js` extension. + diff --git a/docs/docs/kiri-moto/octoprint.md b/docs/docs/kiri-moto/octoprint.md new file mode 100644 index 00000000..dc4b2ae1 --- /dev/null +++ b/docs/docs/kiri-moto/octoprint.md @@ -0,0 +1,27 @@ +--- +description: There are two primary ways to send jobs from Kiri:Moto to OctoPrint +--- + +# OctoPrint + +## Grid.Space OctoPrint Plugin + +Available through the OctoPrint plugin interface and on [GitHub](https://github.com/GridSpace/OctoPrint-GridSpace), this plugin allow zero-configuration printing to any local OctoPrint server directly from Kiri:Moto. Grid:Local must be selected under Preferences for local servers to show up in the export dialog. + +![](/img/gridlocal.png) + +The `send` button will spool a print directly to OctoPrint where it will sit under local `Files`. The `admin` button will open a browser window to the OctoPrint interface. + +![](/img/gridsend.png) + + + +## Local Sending + +OctoPrint has a web api endpoint that can be configured on `Export` when enabled. + +![](/img/octoprint.png) + +This will result in the following dialog section to appear in the export dialog. + +![](/img/opexport.png) diff --git a/docs/docs/kiri-moto/shared-profiles.md b/docs/docs/kiri-moto/shared-profiles.md new file mode 100644 index 00000000..bd2970aa --- /dev/null +++ b/docs/docs/kiri-moto/shared-profiles.md @@ -0,0 +1,27 @@ +--- +description: For Classrooms and Shared Workstations, Maintain Consistent Setups +--- + +# Shared Profiles + +[Kiri:Moto](https://grid.space/kiri/) stores all settings in our browser's local cache. There are times when you want to share settings between computers or setup a master config that is shared in classroom settings. In order to facilitate this, Kiri:Moto provides two hot keys and a URL short-cut for loading a default configuration at the time the application page loads. + +* `U` key (uppercase) to get a unique settings key +* `u` key (lowercase) to restore a setting with a given key +* append `#key` to Kiri's URL to load the app with a given key + +Using the last method, you can create a master settings configuration then give our or link to Kiri with an url that looks like: + +[https://grid.space/kiri/#setting/ver](https://grid.space/kiri/#setting/ver) + +where `setting/ver` comes from the unique settings dialog. You may notice that when you use the `U` hot-key, Kiri's URL changes in your browser to reflect the settings key. + +## Remote Load + +`https://grid.space/kiri/?wrk:[domain]/[path]` + +the content _must_ be delivered over https and CORS header `Access-Control-Allow-Origin` must be set to `grid.space` or `*` + +## Onshape + +When using Kiri:Moto inside of Onshape, Kiri's settings are automatically persisted on the server and associated with your Onshape User ID. That way when you access Kiri in Onshape from another computer, your settings are automatically imported. diff --git a/docs/docs/mesh-tool.md b/docs/docs/mesh-tool.md new file mode 100644 index 00000000..2789a248 --- /dev/null +++ b/docs/docs/mesh-tool.md @@ -0,0 +1,39 @@ +--- +description: A 3D Mesh Repair and Editing Tool, and 2D Sketch Tool in one +--- + +# Mesh:Tool + +## About + +[Mesh:Tool](https://grid.space/mesh) is an intentionally simplified tool designed to address the most common cases of mesh editing and repair. It is under active development with new features daily or weekly. This means the docs can get out of date quickly. + +Mesh:Tool is part of the [Grid.Apps GitHub Repo](https://github.com/GridSpace/grid-apps) and is Open Source under the [MIT License](https://en.wikipedia.org/wiki/MIT\_License). It runs entirely in browser, is not connected to the cloud, and does not collect or share any model data. [Desktop builds](https://github.com/GridSpace/grid-apps/releases) are available whiel start in the Slicer view. Use the central drop-menu to switch to Mesh:Tool. + +Browse the Mesh:Tool [video playlist](https://www.youtube.com/playlist?list=PLRoVgyRoWZps84Scj5wQ2LYK-wMu-7r0L) on YouTube + +Join a discussion on the [Grid.Space Discord Server](https://discord.com/invite/E6QEjWpD8g) or [Forums](https://forum.grid.space/) + +## Getting Started + +It's as simple as dropping models onto the workspace or clicking the import button. Models dropped or imported together will be grouped together. Supported types: STL, OBJ, SVG, Gerber + +## 3D and 2D Editing + +There are two primary modes of operation: 3D Mesh and 2D Sketch. Use the Mode menu to select or clicking on an object or sketch will automatically change modes. + +3D Meshes can be booleaned and faces reparied. Importing 2D file formats when in Object mode will result in auto-extrusion. + +2D Sketch entities can be drawn directly or come from imports of SVG or Gerber files. Select a sketch to import 2D file components. Sketches or selections can be extruded parametrically. + +## Keyboard / Mouse Shortcuts + +
Selection
[Delete]Delete Selection
EExtrude Sketch or Sketch Selection
IImport File(s)
MMerge Selection into a Single Model
SEnter Split Mode (click splits on selected plane)
VFocus Camera on Center of Selection
XExport Selection as OBJ or STL
Shift + AAnalyze Selection Geometries
Shift + DDuplicate Selection
Shift + SToggle Selection Visibility
Shift + GGroup or Re-Group
Rotation
Left and Right ArrowsRotate around Z
Up and Down ArrowsRotate around Y
[Shift] + Left/RightRotate around X
View
HHome view
TTop down view
ZReset Viewport
[Meta] + ClickSet Camera Focus
Mouse Wheel or 2 Finger dollyZoom In / Out
Move
FFloor: Put Model Bottoms on Grid
CCenter Selection on Grid
[Ctrl] + ClickLay Flat: Rotate Clicked Face Toward Grid
[Shift] + DragMove Selection in the X/Y Plane
Workspace
BToggle Selection Bounding Box
GToggle Grid Lines
LToggle Log Message Display
NToggle Normals Visualization
QOpen Preferences Dialog
WToggle Wireframe Visualization
+ +## Screenshots + +![]() + +![]() + +![]() diff --git a/docs/static/img/GridBot-Two-Right.png b/docs/static/img/GridBot-Two-Right.png new file mode 100644 index 00000000..99e0cec6 Binary files /dev/null and b/docs/static/img/GridBot-Two-Right.png differ diff --git a/docs/static/img/Screen Shot 2022-01-11 at 11.22.35 PM (1).png b/docs/static/img/Screen Shot 2022-01-11 at 11.22.35 PM (1).png new file mode 100644 index 00000000..dc6d2994 Binary files /dev/null and b/docs/static/img/Screen Shot 2022-01-11 at 11.22.35 PM (1).png differ diff --git a/docs/static/img/Screen Shot 2022-01-11 at 11.22.35 PM.png b/docs/static/img/Screen Shot 2022-01-11 at 11.22.35 PM.png new file mode 100644 index 00000000..dc6d2994 Binary files /dev/null and b/docs/static/img/Screen Shot 2022-01-11 at 11.22.35 PM.png differ diff --git a/docs/static/img/Screenshot 2024-07-30 at 11.27.49 AM.png b/docs/static/img/Screenshot 2024-07-30 at 11.27.49 AM.png new file mode 100644 index 00000000..208ccfd7 Binary files /dev/null and b/docs/static/img/Screenshot 2024-07-30 at 11.27.49 AM.png differ diff --git a/docs/static/img/device-dialog.png b/docs/static/img/device-dialog.png new file mode 100644 index 00000000..d282d2c0 Binary files /dev/null and b/docs/static/img/device-dialog.png differ diff --git a/docs/static/img/gridlocal.png b/docs/static/img/gridlocal.png new file mode 100644 index 00000000..08765534 Binary files /dev/null and b/docs/static/img/gridlocal.png differ diff --git a/docs/static/img/gridsend.png b/docs/static/img/gridsend.png new file mode 100644 index 00000000..80c25af5 Binary files /dev/null and b/docs/static/img/gridsend.png differ diff --git a/docs/static/img/kiri-moto-cnc.png b/docs/static/img/kiri-moto-cnc.png new file mode 100644 index 00000000..fa2461f0 Binary files /dev/null and b/docs/static/img/kiri-moto-cnc.png differ diff --git a/docs/static/img/kiri-moto.png b/docs/static/img/kiri-moto.png new file mode 100644 index 00000000..d32ff41a Binary files /dev/null and b/docs/static/img/kiri-moto.png differ diff --git a/docs/static/img/meshtool vid hero.png b/docs/static/img/meshtool vid hero.png new file mode 100644 index 00000000..4dcf01ed Binary files /dev/null and b/docs/static/img/meshtool vid hero.png differ diff --git a/docs/static/img/meshtool.png b/docs/static/img/meshtool.png new file mode 100644 index 00000000..72fc0da1 Binary files /dev/null and b/docs/static/img/meshtool.png differ diff --git a/docs/static/img/octoprint.png b/docs/static/img/octoprint.png new file mode 100644 index 00000000..5d5b7fdc Binary files /dev/null and b/docs/static/img/octoprint.png differ diff --git a/docs/static/img/opexport.png b/docs/static/img/opexport.png new file mode 100644 index 00000000..764d516c Binary files /dev/null and b/docs/static/img/opexport.png differ diff --git a/docs/static/img/preferences-cam.png b/docs/static/img/preferences-cam.png new file mode 100644 index 00000000..d0236bf3 Binary files /dev/null and b/docs/static/img/preferences-cam.png differ diff --git a/docs/static/img/preferences-fdm.png b/docs/static/img/preferences-fdm.png new file mode 100644 index 00000000..fb521b82 Binary files /dev/null and b/docs/static/img/preferences-fdm.png differ