Use Lua as an IR language to generate G-Codes. Provides GUI and minimal geometry kernel in C.
- serpent.lua for data serialization
- create C API for Lua 1a. [ ] configure build system
- create geometry kernel in C API
- flesh out luaCAM
- create GUI
- solidify api before integrating into LinuxCNC
- First class support for LinuxCNC and RS274NGC
- Provides unit "tuple" to ensure units are always correct, i.e. {12.34, unit["mm"]}
- The control defintion for a machine allows you to use non-traditional languages like OpenSBP or TPL
- Inline comment formatting
- Static analysis tools for G-Code using Machinespec files
- Machdef files allows you to fully utilize and maintain the safety of your machines
- Toolpaths are designed to maintain constant velocity and chipload
LuaCAM is designed to replace traditional CAM systems and workflows for a more efficient design. It treats CNC programs like software development. Tools are categorized by the machining strategy they support. Tools can only support one machining strategy.
Here's a quick overview of the provided GUI editor.
- Workspaces for Toolpath, Tool, and Machine
- Builtin LSP, with OTB support for NeoVim
- Builtin machine, tool, & fixture configurators
- Toolpath workspace directly tests and validates the output GCodes using the control definition
- Machine simulation accurately simulates feedrate of machine
- Extends ldoc to support image/icon popups
- "*.lon" = lua object notation, a lua module that must return a single table
- "*.3dpath" = lua file with special environment to represent LuaCAM's geometry.path object
- "*.toolpath" = extends the 3dpath file format to specifically represent toolpaths, similar to tpl
- "*.machdef" = file format to define a machine's kinematics
- "*.ctrldef" = file format to define a machine's controller
- "*.tools." = a tool library saved in a plain text format; fmt = ("lua"|"lon"|"txt"|"csv"|"xml")
- "*.tooldb" = a tool library saved in a binary database file, preferably SQLite