Skip to content


3D model description

(EDIT 5/17/2012: License changed to CC SA (was CC SA NC))

Printed Parametric Chainmail

I've been wanting to try this for a while. This is a sheet of interlocking rings, printed in place. The rings are basically square, with cut off corners. Two sets of diagonals cross each other at different heights, with four posts at the corners. Well, it makes sense when you see the pictures!

This is the first thing I've designed in OpenSCAD, so the code is probably pretty sloppy. The major parameters that can be changed are the layer thickness and line width, along with ring size and number.

I searched for "chainmail" on Thingiverse and the only result was a post by Vik on the Interlocking Rings thing: "Next, chainmail. Right?" So I hope you like this, Vik!

3D printing settings


  1. Change parameters in OpenSCAD file and export a single ring as STL, OR use included Chainmail 1x1.stl file. It uses default parameters of .25mm layer thickness and .5mm line width.

  2. Use multiply plugin in skeinforge, 4x4 or 8x8 are good places to start, 16x16 will fit on a Makerbot but is more difficult

  3. If you are printing raftless, the bed needs to be very flat and level

  4. Remove from bed by scraping from edges

Alternately, you can try exporting the grid as an STL first, but watch out for the travel moves between extrusions.

Long version:

This is actually a pretty ridiculous thing to print. A stepper extruder is probably required, sorry. I ran into a few problems along the way and it took me some time to get it to print right.

The first issue was patterning the rings to make a sheet. After I had one ring designed in OpenSCAD, it was easy to add some code with parameters to create a grid. I tweaked the spacing using a 4x4 grid with no trouble. However, when I went to 16x16, it took a full 2 hours to compile and render! Since this is the first time I've used OpenSCAD, maybe an expert can tell me if there is something I can do to speed things up.

I had skeinforge process my 16x16 STL which went quickly, since it is only 6 layers. I proceeded to print and was dismayed to see the print head zooming around the printing area, seemingly at random. It had done a remarkably poor job at calculating the travel paths between the print roads. In most cases this wouldn't matter, but the first two layers of the chainmail consist of a huge number (512 for 16x16!) of tiny bean shaped extrusions. Every time the extruder passes over a piece that has already been printed, there is a chance that it will be ripped up, which ended up happening frequently and ruining the print. This might just be an issue with the old version of skeinforge I'm using; other versions might work better.

The solution I found was to use the multiply plugin in skeinforge to create the grid. With the default parameters as used in the STL file (.5mm layer thickness, 2.0 perimeter width/thickness), I found that a setting of -4 worked well for Separation over Perimeter Width. The print order still isn't optimal but it's a huge improvement.

I printed raftless, at low speed. The print bed needs to be very flat and level, especially for bigger pieces. It took me a few tries to get the ideal thickness on the first layer. I also dropped the flow rate by 10%.

I removed the chainmail sheet using a sharp razor blade, very slowly working in from the edges. You can fold the loose edge over to make it a little easier. To join multiple sheets, you will probably have to painstakingly cut a row of rings and then glue them back together. I haven't gotten to that point yet.

For reference, I printed this on a RapMan 3.0 using Ultimachine PLA.


Chainmail 1x1: 7.8mm x 7.8mm x 1.5mm (single ring)

Chainmail 4x4: 23.85mm x 23.85mm x 1.5mm

Chainmail 8x8: 88.05mm x 88.05mm x 1.5mm

The final stretched sheet dimensions will be slightly greater, due to gaps needed for printing.

So far, my best print is the black one shown in the first picture. 255 out of 256 rings are intact!

  • 3D model format: STL





Add a comment