I'm trying to model an object to create chainmail to 3D print


I'm having some issues with the twist.


How can I model the object normally or using geometry nodes so it's 3D printable while. Making the number of arms and the arm lengths adjustable?

What I'm trying to get in the end is procedurally generated chainmail for 3D printing.



It's based on this https://github.com/jonbruner/chainmail

See attached blend file:

  • $\begingroup$ You have not asked any questions. What is your question exactly? $\endgroup$ Commented May 23 at 11:27
  • $\begingroup$ How to model the object normally or using geometry nodes so it's 3D printable. "My thought was to model it in geometry nodes to make the number of arms and the arm lengths adjustable but I'm having trouble just modeling it." $\endgroup$
    – Rick T
    Commented May 23 at 11:34
  • $\begingroup$ You should edit the question and put that in there so it's clear and specific. $\endgroup$ Commented May 23 at 11:37
  • $\begingroup$ Ok will do...... $\endgroup$
    – Rick T
    Commented May 23 at 11:37

1 Answer 1


I think plain manual modelling mught be the way to go. To prepare, I aligned the reference to World, Z-up.

First, creating the 5-way pipe junctions at the poles.

enter image description here

  • Lazily, use the shipped add-on Add Mesh: Extra Objects > Pipe Joints. (Cross-Joint, Radius 1, Resolution 8, Lengths 1.5)
  • When aligned in the XY plane, on one side, J connect the corner vertices as shown, and
  • Loop Tools > Circle, radius 1, locking Z. Extrude faces, flatten and delete.
  • Alt D R X 180 rotate an instance of the North pole to the South, and R Z align with the reference.

(At any stage, you can form the core pole by bridging the inner edge-loops, with a few cuts to accommodate the twist.)

enter image description here

Now, create one of the loops, using a curve.

  • Create a Bezier Line, and delete one end, leaving you with a single control point. 'Aligned' with its handles the same length
  • Align that to the X-facing opening on the North pole, flat in Z, using cursor-snapping.
  • Duplicate the control-point to the corresponding opening on the South, rotating in Z to align
  • F connect the control-points, rotating one in Z if necessary.
  • It's important to keep the control-points identical and symmetrical; use 'Individual Origins' to scale them in sync.
  • Once roughly matching a reference loop by scaling, you can use the curve's native Bevel in its Data tab > Geometry panel, radius 1, resolution 2, to match up the generated mesh. You may need to Ctrl T twist the ends to match the openings
  • Now you can Subdivide the curve once to tweak the line of the loop, again with handles 'Aligned' and symmetrical. Shift CtrlNumpad 1 will align your view to the new point, so you only R rotate it in its own plane.

Once one loop matches the reference, you can AltDRZ90 rotate the other 3 instances into place.

enter image description here

Once done, you can convert all to mesh (without any temporary modifiers you may have used), CtrlJ join into one, M Merge > by Distance. This version then modifier-Bevels the creases at the poles by weight, and Subdivides. There's a Displace to tweak the thicknesses. After all that, a little Geometry Nodes group is used to clamp the Z, flattening at the poles:

enter image description here

This is all a bit long-winded.. but it is just routine, keeping a careful eye on keeping various moves in sync. for precision.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .