Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

Fully Parametric Cable Chain

by Zerginator, published

Fully Parametric Cable Chain by Zerginator Oct 18, 2015

Verified Files

6 Share
Download All Files

Thing Apps Enabled

Open in Customizer Order This Printed View All Apps


Design Tools


A part of these Groups

View All


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

348156Views 52393Downloads Found in 3D Printer Parts


As I did not find a cable chain suiting my needs, I decided to make my own.

I was looking for a fully parametric cable chain, capable of output in CSG.
The Cable Chains I found here were mostly only .stl Surfaces.

Also I wanted to be able to build not only a single Chainlink, but a complete cable chain.
Here you can specify a vector consisting of the angles towards the previous chain links.

In future the will be an additional option to differing link types, to restrict angular movement of the chain.

The Cable Chain is generated though a nested vector.
There is a tupel consisting of the chain link type (at the moment there are only type 1: restricted to 45° movement and type 2: +-45° movement, type 3 generates a nice looking closed but mechanically not necessarily reasonable closed chain, type 4 onwards is just the same as type 3) and the angle of this link towards the previous. e.g. [1,30] is a link with a 30° angle.

These tupels are embedded in a vector. The vector:

ChainDef = [[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,30],[1,30],[1,30],[1,30],[1,30],[1,30],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];

defines the example cable chain shown as screenshot.

The vector:

ChainDef = [[1,0],[1,5],[1,15],[1,15],[1,20],[1,20],[1,20],[1,20],[1,15],[1,15],[1,10],[1,10],[1,10],[1,10],[1,10],[1,10],[1,7],[1,6],[1,5],[1,5],[1,5],[1,5],[1,5],[1,5],[1,4],[1,4],[1,4],[1,4],[1,3],[1,3],[1,0],[1,0]];

defines the version I use in my 3D printer for the xy-axis.

The chain links are not optimized for printing. I made this to be able to quickly add cable chains in a solid geometry format into my FreeCAD Printer Assembly. If you want to print customized chain links, you can of course just set the chain length to a single element and export the .stl:
ChainDef = [[1,0]];
I will add a link type optimized for printing. But maybe it could be of interest for you how to generate parametric chains, as OpenSCAD is a functional language you cannot use "for" loops and variables, for evaluating the input vector, it has to be made in a recursive function.

Please, don't mind the bad formatting of the source with German words in the comments, I just quickly made this in one afternoon, as I needed it as a quick and dirty solution for my 3D printer project, but I thought, maybe it could be of interest to somebody here, so I put it here anyway in this "beta" version.

I will surely update it with a better structured and commented version sometime later.

If you have any questions, feel free to leave a comment.


  • Possibility to restrict allowed angle of movement
  • More 3D printer friendly linktype (e.g. based on: http://www.thingiverse.com/thing:34661)
  • Check if chainprintable version is possible
  • Add Start and End links
  • Clean up Source Code
  • Improve detection of impossible designs ("Error-Cube")

How I Designed This

More from 3D Printer Parts

view more

All Apps

Customizer is the easiest way to take great 3D printable designs and make them your own. Make your OpenSCAD designs infinitely more valuable by empowering the community to customize them.

App Info Launch App
Customizer Thing App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

Treatstock is an online platform that offers decentralized manufacturing services such as 3D printing and CNC machining for clients all over the world. We offer free and instant access to comparati...

App Info Launch App

3D print your favourite design with NinjaPrototype, a professional 3D manufacture with consistent quality and speed.

App Info Launch App
Comments deleted.

I have a mess as well, my fault I made the mistake of printing without reading first, interesting idea!

I split into 4 x 6 array for printing using RH automatic placement. Something went awry and I have quite a mess. Anyways, seems very promising but novices like myself should take heed of the "Work In Progress" status.

You might be interested in this, http://www.thingiverse.com/thing:1785145 (another parametric cable chain, which has been printed and tested)

Parametric Cable Chain
by mrhat

i know im a idiot.. but how do i print a single link?

You can also open the code in OpenSCAD and change the array to only have one link, then render and save.

If you use repetier-host, please load the model. Then you can click the "gear" icon next to Trash box. In the new dialog, Use "Split object" to separate the unit.

Can you release the STL of just a single link, I cannot fit this on my build plate.

So is this fully functional? does it move around similar to a bike chain? I am printing it out now and it looks pretty good, but I was wondering if it does move around.

For printing you should use only single chain elements and then clip them together afterwards. You then get a fully functional chain. I made the possibility to generate 3D models with multiple chain elements originally to simplify integration cable chains into my 3D printer model, not for the purpose of printing.
Nevertheless I am working on option for a "chainprintable" version.

Does anyone have mounts for this? I'm looking for a Nema 17 mount. I will upload my 2020 mount later.

I really like your code. It's pretty clean. One thing I would suggest is a variable for $fn to smooth out circular objects in openscad to pretty it up. Keep up the good work!

OK, descriptions too complicated: Does this chain print out in one piece and is able to move as designed? Will the joints be welded together or free? Or should we just print single links?


at the moment I would not suggest to try to print out more than one piece. The chain is not optimised for chained printing. I will add a version supporting that sometime later.
The minimum requirement would be though to produce a layed out flat version, so 0° angle between all chainpieces.
The chain is able to move as shown, but the option to create a bent chain, as in the example is purely for CAD purposed, not for printout.

Printing it now, it looks good so far Thanks. :)

BOY you have a long way to go.

thats not cool man. just not cool.

What do you mean by that?
This version mainly is for integration of (commercially available) cable chains into CAD assemblies.
Of course you can just output a single chain link for printing.
Though it is not yet optimised for that. This is more for integration of
I will add better printable chain links later, but I am first trying them out on the printer.
Maybe it is also possible to print a chain, there is another openscad cable chain here on thingiverse,
but I haven't tried printing that yet.
A bit more constructive criticism would be helpful.

Its an unpropiat reply without any comment let it go.. Nice work!

forget about him, it's an amazing design, well done!:-)