It seems like recent changes broke the model file. Since it is not the first time, I'm in the process of ditching fusion360 from my workflow altogether. I'm learning FreeCAD and will attempt a redesign of the cable winder with that software.
I hope I will be done before February 2025. I'm very sorry for the inconveniences, but I think this change is for the best. FreeCAD in an open-source software, and it deserves to be used more than the very restricted (even for hobbies) and unstable fusion360 software.
– UPDATE February 11th –
I printed the first prototype this weekend and I'm now adjusting the parameters. You can expect the version 7.0 to be released next weekend (February 16th or 17th).
In my quest for the perfect cable winder and organizer, I haven't found what I wanted. So here is a fully parametric print-in-place one.
It features a print-in-place winding mechanism, just like the remixed model, and closes with a fit snap. You can stack up as many cable organizers as you want thanks to its stackable design. The model revolves around the length of the cable you want to wind: if you decide to open up the parametric file, you will see that you can directly input your target length and the model is gonna readjust its height to be able to fit your cable in.
![]() | ![]() |
Figure 1.a | Figure 1.b |
The whole thing can be printed in one time without support. It took 2h30 on my printer using relatively low speed and a layer height of 0.22mm.
The fusion360 model is available and parametric: you can create the cable winder that suits your needs. Here is a list of the main parameters you can play with
Name | Value | Unit | Comment |
cable_diameter | 4 | mm | The section diameter of your cable. It affects the center piece wavy pattern and the size of the holes in the bottom and top piece. |
cable_length | 1500 | mm | The length of the cable you want to wind |
external_diameter | 0 ** | mm | The diameter of the outermost internal wall of the model. The total diameter of the winder will be that plus the thickness of the walls. Can't be 0mm if external_diameter is 0mm. If set to 0mm, enable the driven mode i.e. this parameter will be automatically computed based on the other parameters. |
internal_diameter | 40 | mm | The diameter of the innermost internal wall. The diameter of the winder will be that minus the thickness of the walls. * |
filling_ratio | 0.7 | see The cable volume problem section below | |
height | 12 ** | mm | The internal height. The total height will be that plus the thickness of the bottom and top pieces. Can't be 0mm if external_diameter is 0mm. If set to 0mm, enable the driven mode i.e. this parameter will be automatically computed based on the other parameters. It should be either 0mm, or greater than 8mm. |
rotation_gap | 0.34 | mm | The small space between the center piece and the bottom piece. The smaller the less play but the harder to print. |
clip_pre_tension | 0.15 | mm | Pre tension applied to the clips. The higher the number, the stronger the close. It represents the distance between the normal position and the tensioned one. (see Design decisions>Closing mechanism>Pre-tensioned clips for more info) |
ridge_height | 1.5 | mm | Height of the ridge at the top and bottom of the cable holes. It makes the piece stronger, and reduces the size of the hole so that the cable end does not go through it. |
* You should avoid making the winder smaller, as it already is at it smallest size possible while still allowing for fingers to fit in to rotate the mechanism.
** See "Modelling approach > Different driving modes" section for why it can be a 0.
The model was designed in Fusion360. It consists only of simple operations and it can be split up in 5 sections:
New in v6.11. Thanks to @LineArcLine for the suggestion: Before this revision, the height was automatically computed from the user input in external_diameter. However, it was prone to stupidly thick cable winder that led to an improper winding of the cable since it wasn't spread out evenly throughout the height. Being able to drive the external_diameter from the user input height make just more sense. Nevertheless, I wanted to keep the possibility to drive the height (mainly to avoid losing a feature). Fusion 360 does not support complex parameter forms, so I used conditional formulas to create special case: setting the height or the external_diameter (only one of them) to 0mm will toggle its driven mode. The parameter that have its value at 0mm will be automatically computed with the formula given in “Design decisions > Cable length computation > Final formulas”.
The biggest part of the design was actually fairly simple to design thanks to @LineArcLine advices. The first step is to revolve a single sketch around a central axis. That sketch contains the section of the cable winder that has a few remarkable things. From top to bottom we have:
![]() |
figure 2 |
This is the hot new feature of the version 6.x, and it wasn't the most easy to design. However, with the help of CueBall909, we managed to reach the perfect solution, that does not even require supports. The basic requirements for something to be stack-able is to have a groove on one side, and a ridge on the other. However, because the the top and bottom piece are printed flat-surface down, a ridge on one of the two flat surfaces would have necessitate a ton of supports since it would have been the higher than the flat surface.
Through a suggestion from CueBall909 (and a lot of tests), a ridge was added to the top part of the winder which is the only piece making contact with the bottom piece of a stacked cable organizer (in yellow in figure 3.a). To maintain the stack-ability whatever the rotation of the winder, a small part of the center piece was extruded so that the ridge can even go where the wavy section of the winder was (figure 3.b).
![]() | ![]() |
figure 3.a | figure 3.b |
Stack-ability adds a ridge on top of the winder that sticks out the top surface (you can clearly see it on Figure 2). If you plan to travel or to put the cable winder in a pocket, that ridge can be quite aggressive on your textile. Hence you can find the files for the two versions: stack-able and not stack-able.
During printing, the central piece will be locked forever with the bottom one. This process, often referred as “print-in-place”, ensures that the central piece can rotate freely within the bottom piece without any assembly step!
You can also notice a little trick to make the separation of the central piece easier. Because it is common to have elephant foot on prints, a small chamfer has been added so that even an elephant foot would not fuse the two pieces together.
![]() |
figure 4 |
Instead of a hinge, which requires a low tolerance printer and that can break off easily, it was chosen to use clips that are both strong and easy to remove. They underwent major improvements from version 5.x to version 6.x as they are now streamlined with the body, making them more protected while making the design more modern. They also are no longer 4 equally-spaced clips, but instead 2 groups of 2 clips. This ensure that the cable holes (that are now on the bottom and top piece) are aligned together. Lastly, the split in the middle of each group grant rigidity to the thin cut-out section of the bottom piece.
![]() |
Figure 5 |
That is an excellent question, congrats for having noticed that. The thickness of the wall was constrained by the groove thickness (that allows the closing pins to clip and rest). Indeed, some slicing engine have trouble with lines thinner than the nozzle hole diameter. To counteract that, the thickness of the groove was set to 0.61mm so that every engine would print a (1 line thick) wall for the groove, even if your nozzle is 0.6mm which is fairly common (thanks to CueBall909 for the notice). Besides, the clip by itself needed to be fairly strong hence it's 2mm thick design. Then, the larger the clip's bulge, the firmer the closing. The bulge is actually 0.7mm wide. Finally, there is 0.2mm of space between the cut-out section and the clip so that the clip can bend away.
![]() |
Figure 6 |
As you can see in Figure 7, the male part of the clip goes further than the female part. It is a pre-tension mechanism that can be used to easily adjust the force required to close the winder. The deviation between the normal position (the purple dashed circle) and the tensioned one (the black circle) is adjustable with the “clip_pre_tension” parameter in fusion360. By default, this parameter is set to 0.15mm.
![]() |
Figure 7 |
There are two ways that impacts the force that you need to open and close the winder.
/!\ The force required to open / close the winder depends on A LOT of parameters that are not imputable to the model design, such as:
Its wavy shape allows for minimal cable stress when winded. It features a small chamfer to keep the cable from trying to come out. The two empty spaces can fit two fingers (one in each hole) to wind the cable.
One-side winding
It is possible to only wind one side of the cable. It is actually the raison-d'etre of this design. The open top section of the winder allows one side to stick out from the middle, hence not being winded when the center piece rotates regarding the bottom piece.
The maximum cable bending happens on the winder and the maximal bending radius is approximately half of the internal_diameter
parameter.
The chamfer is small, but enough to keep the cable from trying to push the top piece out.
The idea behind the computation is simple: find the cable winder available volume, and divide it by the cable cross-section to find the maximum cable length that fits. However, they were a few caveats with this method.
the available cable winder volume is the volume of the whole piece (of radius Rₑ and height h) - the volume of the winder (of radius Rᵢ and height h). We have:
Vᵃᵛᵃᶦˡᵃᵇˡᵉ = π × Rₑ² × h - π × Rᵢ² × h = π × h × (Rₑ² - Rᵢ²)
For the cable (of radius Rᶜ and length L), we have:
Vᶜᵃᵇˡᵉ = π × Rᶜ² × L
If we want one to fit in the other, they must be equal, i.e.
Vᶜᵃᵇˡᵉ = Vᵃᵛᵃᶦˡᵃᵇˡᵉ ⇔ Rᶜ² × L = h × (Rₑ² - Rᵢ²)
⇔ L = h × (Rₑ² - Rᵢ²) / Rᶜ²
How it goes in the design process
Unfortunately, fusion360 does not let the designer use the surface area as a variable. Because of that we have no way of precisely knowing the volume that the cable can fit since the inside section is not a square. Despite the exact internal volume possible to compute, the formula would have been wayyyy too big, and it was decided to overshoot the volume by a good margin, in addition to the filling_ratio parameter.
However, you may have noticed that the cable cannot occupy the full volume, and they are voids, or gaps, just like interstitial site in crystallography (see what I'm talking about). Hence a factor noted α of 0.70, which roughly accounts for the volume loss in a simple cubic disposition (theoretically, it's 0.75). We have:
L = h × (Rₑ² - Rᵢ²) / Rᶜ² × α
From the previous formula, we can isolate the height:
h = L × Rᶜ² / (Rₑ² - Rᵢ²) / α
and we can also isolate the external radius:
Rₑ = sqrt(Rᵢ² + (L × Rᶜ²)/(h × α))
We can substitute the radiuses with diameters while keeping the equation true. The formulas are used to drive these two measurements (height and external_diameter) in the model.
The initial motivation was to design a cable winder that can wind up only one side of the cable, to tidy my desk up. Doing so would have allowed me to have the perfect length between the connection and the (hidden) cable winder, while the rest of the cable goes to where it is due. For instance, my keyboard is hooked up to a hub: the cable winder is 5cm away from the hub, and my keyboard is 50cm away from the cable winder.
Version | comments | photo |
1.3 |
| ![]() |
2.4 |
| ![]() |
3.2 |
| ![]() |
4.3 |
| ![]() |
5.4 |
| ![]() |
6.10 | 12/01/2024 Huge thanks to @CueBall909 for all the new ideas and the discussions. I'd like to also thanks @LineArcLine for its better modelling approach.
| ![]() |
6.11 | 21/01/2024 thanks again to @CueBall909 for his discovery on the wall thickness not being printed correctly on some slicing engines.
| No visible changes |
6.12 | 20/04/2024 Thanks to @Frodo_438254 for his help in validating the new design.
| No visible changes |
6.13 | 05/07/2024
| Same as current |
6.14 | 01/12/2024
| current |
The author remixed this model.
Inspired by this model, but redesigned from scratch with a different approach.