Lamina takes a mesh (STL, OBJ, 3MF, PLY, OFF or GLB, and STEP when you run it locally).
Five ways to build a model
- Stacked: parallel layers, touching or spaced apart, held by dowels, pegs or tabbed spacers
- Interlocked: two slotted families, the classic egg crate or waffle
- Radial: half slices fanned around an axis and locked by rings. Several axes too, one fan per lobe, tied together by a spine
- Curve: ribs square to a curve through the model, with branches down legs and arms
- Folded: the surface unfolded into papercraft panels, with 13 joint types (tabs, laces, rivets, gears, puzzle pieces and more)
The part that took longest: checking it before you cut
Slicing turned out to be the easy half. Every plan is checked as a physical assembly: each region of each slice has to reach the main body through a slot, a connector or glued contact, so an ear held only by slices that never touch the head gets reported instead of falling off your bench. Parts too thin, slots that cut a part in two, holes too close to an edge and parts bigger than your sheet are flagged too, most with a one click fix. Auto-fix adds crossing slices where nothing holds a piece. The first version then removed whatever still floated, which on a horse meant the whole top layer, ears included. A tool should never delete part of your sculpture, so now a piece nothing can hold stays on the plan with its error and the fixes to choose from.
Slot depth is worked out per crossing: the line where two slices meet is cast against the mesh, and every stretch of it that runs through material gets its own slot, so a torus crossing gets two.
Getting it onto a machine
Outline nesting with no-fit polygons (after Deepnest), engraved labels with leader lines, kerf compensation, a slot offset for fit, dog bone and T-bone relief for routers, and SVG, DXF, PDF or EPS with cut, score and engrave on separate layers. A fit test cuts five small joints at different slot offsets so you can dial in your machine and material first, and a prototype set lets you 3D print a scaled version before you commit a sheet of steel.
How it is built
All the geometry is Python: trimesh sections into shapely polygons, and the browser only draws the result. The same code runs under FastAPI on your own machine or entirely in the browser through Pyodide, which is why the online version uploads nothing. A construction technique is one file of about 50 lines, so adding a sixth is mostly writing the idea down. AGPL, so nobody can close it, me included.
A lot of the code was written with AI assistance, directed and reviewed by me. The README says more about that and why I made that trade.
It is very new and made by one person, so there are certainly bugs I have not met yet. If a model comes out wrong, I would love to hear about it, and I would love even more to see what you make with it.