Print-in-place chainmail generator
Forty-one identical links print flat in one pass and come off the plate as a sheet that bends like cloth. Each link is a square ring: two bars on the bed, two raised bars joined by corner posts. A second lattice, offset diagonally, threads each link's corners through its neighbours' openings, so a raised bar always crosses over a low one with a running gap. The generator solves the diagonal offset from your link size, bar and gap, checks that nothing touches at rest and that the links cannot separate, and animates the sheet draping over a roll.

Ask for the sizes you want to tweak, e.g. “make the width adjustable”.
Specs at the default size
Measured from the actual build on a Bambu Lab A1 in PLA. Every number updates live when you drag a slider above.
- Overall size
- 71 × 71 × 5 mm
- Parts
- 41
- Filament
- 13 g
- Print time
- 3 h 20 min
- Build plates
- 1
- Supports
- None needed
Engineering checks
- Diagonal offset leaves every gapoffset 7.22 mm within 6.75-7.70 mm; 0.5 mm running gap
- Neighbours never touch at restdiagonal and same-lattice neighbours checked
- Links are interlockedlifting or dropping a link 1.0 mm hits its neighbour (3.46 mm³): the sheet cannot come apart
- Links survive coming off the bed8.3 MPa in a 2.4 x 2 mm bar under a 5 N pry; PLA allows 16.7 (the first 1.6 x 1.2 mm bars reached ~27 and broke)
- Every link starts on the bedlow bars and corner posts print on the plate; raised bars bridge 8.2 mm between posts
Adjustable sizes
| Setting | Default | Range |
|---|---|---|
| Link size | 13 mm | 11–18 mm |
| Bar width | 2.4 mm | 2–3.2 mm |
| Running gap | 0.5 mm | 0.35–0.8 mm |
| Drape radius shown | 25 mm | 20–200 mm |
Parts list
| Part | Qty | Size (mm) | Filament | Time |
|---|---|---|---|---|
| link 1 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 2 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 3 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 4 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 5 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 6 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 7 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 8 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 9 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 10 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 11 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 12 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 13 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 14 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 15 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 16 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 17 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 18 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 19 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 20 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 21 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 22 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 23 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 24 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 25 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 26 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 27 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 28 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 29 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 30 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 31 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 32 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 33 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 34 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 35 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 36 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 37 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 38 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 39 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 40 | 1 | 13 × 13 × 5 | 0 g | 5 min |
| link 41 | 1 | 13 × 13 × 5 | 0 g | 5 min |
How to make it
- Start at the default 13 mm link, 2.4 mm bars and 0.5 mm gap: sturdy enough to pry off the plate.
- Drag the drape radius to see how tightly the sheet can curl; the motion check confirms every crossing stays clear.
- Print flat as one object, then flex the sheet in both directions to free every link.
Print tips
- The raised bars bridge between corner posts: keep bridging cooling on and print at 0.2 mm layers.
- PLA gives a crisp rattle; PETG links feel softer.
FAQ
Can it come apart?
No. The check lifts and drops a link 0.7 mm and confirms it hits its neighbour, so the sheet stays interlocked.
How tightly does it bend?
At the default link and gap, the drape stays clear down to a 20 mm radius; at 18 mm neighbouring links meet. Larger gaps bend tighter.
Will it survive coming off the plate?
The bars are 2.4 x 2 mm and checked against a 5 N pry on a single bar. Our first version used 1.6 x 1.2 mm bars and they snapped coming off the plate, so the generator now checks for it. Use a thin spatula and lift from one corner.
Comments