LuaCAD

Scriptable CAD with Lua. Write parametric 2D and 3D models in Lua and export them to STL, 3MF, OBJ, PLY, or SCAD.

LuaCAD embeds Lua 5.4 in a Rust engine that evaluates CSG operations directly (via csgrs) or generates OpenSCAD code for external rendering.

LuaCAD Studio - Desktop app with 3D viewport and code editor

Why Lua?

Example

LuaCAD:

my_cube = cube { size = { 1, 2, 3 } }

function my_sphere(radius)
  return sphere({ r = radius }):translate(5, 0, 0)
end

model = my_cube + my_sphere(2)

render(model)

Equivalent OpenSCAD:

module my_cube() {
  cube(size=[1,2,3]);
}

module my_sphere(radius) {
  translate([5,0,0]) sphere(r = radius);
}

union() {
  my_cube();
  my_sphere(2);
}

Getting Started

Requires Rust.

git clone https://github.com/ad-si/LuaCAD.git
cd LuaCAD
make install

This installs two binaries:

CLI Usage

luacad convert model.lua output.stl          # Convert to STL
luacad convert model.lua output.3mf          # Convert to 3MF
luacad convert model.lua output.scad         # Export as OpenSCAD
luacad watch model.lua output.stl            # Rebuild on file changes
luacad convert model.lua out.stl --via-openscad  # Use OpenSCAD backend
luacad run model.lua                         # Execute (side-effects only)

Supported Export Formats