Parametrizable cable holder
prusaprinters
<p>I've used to have a lot tangled cables behind my computer, at my router, behind the TV, all of them of different diameters. To unplug one of them or to find out where the other end leads, used to be a nightmare (and a training in profanity). So, I decided I need to do something with it. But when I was unable to find anything to help me solve this problem, I've created this cable holder that should meet everybody's needs.</p><p>It is a parametrizable template for printing a cable holder capable of managing and organizing <strong>cables of both uniform and different diameters / thicknesses.</strong> Cables are just "clicked" into its slots and hold. This template can also generate holders with several floors / levels that allow to stack cables one on top of another.</p><p>Either print one of the predefined models, or adjust a few parameters in the attached <code>.scad</code> file to generate a holder specifically adjusted to you needs - all in a matter of several minutes. (In fact, it usually takes me less than 5 minutes from the moment I realize I need a holder to tweak a couple of parameters, generate & slice it, and send it to the printer.)</p><h4>Printing instructions</h4><p>There are <strong>several predefined holders</strong> that should meet most of the people's needs and are ready to print. Just select the number of cables you want to put in the holder and measure their thickness with a calliper. These holders can fit thicker USB cables, ethernet, HDMI, and electrical cables, … basically any cable you can think of.</p><p>Since this holder fits into a category “install & forget” (and it is quite often mounted outside of the plain sight), there is no need to go crazy with the printer settings or level of details. Personally, I keep using a predefined <strong>0.25mm DRAFT</strong> print setting with <strong>20% infill</strong> and <strong>no supports</strong> on my <i>Průša MINI+</i> and it works just fine.</p><p>Most of the cable holders can be printed in <strong>under 20 minutes</strong> with the shortest time of 8 minutes. The print time and amount of used material shown at the top of this page is for the most common 5mm cable holder (suitable for most ethernet cables) with 5 cable slots.</p><p>You can print the holder with both <strong>PLA</strong> and <strong>PETG</strong>, although PETG is better since it is more flexible which simplifies inserting the cables.</p><p>The mounting pad is designed for a screw with a conic head. Use it to mount the holder to a wall. Alternatively, you can nail it through the nail holes that are in each cable slot.</p><p><strong>Happy printing & mounting!</strong></p><p> </p><p><i><strong>Note:</strong> I've spend several hundred hours (and enjoyed every single second of it :-) and printed dozens of prototypes so you can design and print yours in a couple of minutes. If you want to support me and my work, please consider a small donation. If you want to stay updated about future models, follow me on </i><a href="https://twitter.com/TheExceeeder"><i>Twitter</i></a><i>.</i></p><p> </p><h4>Haven't found a holder suited for your needs?</h4><p>If you want to print a different cable holder (e.g., with a different number of slots, or capable of holding cables with different thickness, such as ethernet and usb cables), you can easily create one with the OpenSCAD script. Details on how to easily do it are below.</p><h3> </h3><h3>Generating a custom cable holder via OpenSCAD script</h3><h4><strong>Instructions</strong></h4><ol><li>Download the <code>.scad</code> file.</li><li>Open it in <a href="https://openscad.org/index.html">OpenSCAD</a> editor and change parameters you need. <strong>In most cases, you just need to change the following parameters:</strong> <code>Number of slots</code>, <code>Floors</code>, and <code>Cable Thickness</code>; or alternatively only <code>Variable cable thicknesses</code>.<ul><li>Depending on your preferred mounting style, you may also want to adjust some other parameters. See <i>Parameters</i> and <i>Mounting options</i> sections for more details.</li><li>Make sure you are using <strong>OpenSCAD's Customizer</strong> (can be found in <i>Window → Customizer</i> in the top toolbar). With Customizer, you can easily adjust holder parameters and immediately see their impact on the model.</li></ul></li><li>Render your holder (press <code>F6</code> on your keyboard) and then save rendered holder as an STL file (<code>F7</code>).</li><li>Load it into your slicer app, slice it, and send it to the printer. Enjoy!</li></ol><p>Alternatively, you can also use <strong>Thingverse's Customizer</strong>. Just look for an <i>Open in Customizer</i> button on this holder's Thingverse webpage, change the parameters you need and export the holder as an STL file. Then continue with step #4 in the instructions above.</p><p>For more information on the recommended slicer & printer settings, see <i>Printing instructions </i>section.</p><p>If you are experiencing problems with your generated or printed model, check FAQ section.</p><p> </p><h4>Parameters</h4><p>You can adjust several parameters to get the exact holder you need. In <i>Customizer</i> (see <i>Instructions </i>for more info how to use it in your OpenSCAD installation), they are organized into several categories:</p><p><i>Note: If you want to change parameters in the </i><strong>source code</strong><i> instead of in the Customizer, you can find them in </i><code><i>Parameters</i></code><i> section at the very top of the scad file. Their names are the same as the names below with the only difference being that instead of spaces they have underscores (e.g. </i><code><i>Cable thickness</i></code><i> described in this document corresponds to </i><code><i>Cable_thickness</i></code><i> variable in the source code.</i></p><h5>Cable holder main parameters</h5><p>These are the main and in most cases the only parameters the majority of the people will ever need to adjust to create the cable holder they need.</p><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/a2a71835-607f-4db2-bcfc-4f7493b723cb/annotated_cable_holder_parts.png#%7B%22uuid%22%3A%22217edfe7-9257-4fae-876e-86a031dc16f4%22%2C%22w%22%3A2000%2C%22h%22%3A1065%7D"></p><ul><li><code>Number of slots</code> - determines how many cables there will be in a single floor (next to each other). This value is ignored if <code><i>Variable cable thicknesses</i></code> is used instead.</li><li><code>Floors</code> - determines how many cables will be stacked on top each other. More than 3 levels are not recommended as the towers tend to crack at their connection to the base. This value is ignored if <code><i>Variable cable thicknesses</i></code> is used instead.</li><li><code>Cable thickness</code> - the size (thickness) of holder cables, if all the cables are of the same thickness. If they are not, use <code><i>Variable cable thicknesses</i></code> instead.</li><li><code>Variable cable thicknesses</code> - allows you to specify a different cable thickness for each individual slot. Just enter the individual values as a vector (e.g. <code>[8,8,15,20,8]</code>); the number of slots will be derived automatically from that. <i>Note, that if this parameter contains any value (except of </i><code><i>[]</i></code><i>), the parameters </i><code><i>Cable thickness</i></code><i>, </i><code><i>Number of slots</i></code><i>, and </i><code><i>Floors</i></code><i> will be ignored</i>.</li><li><code>Left mounting pad</code> - renders a pad for attaching the holder to a wall via a screw.</li><li><code>Right mounting pad</code> - renders a pad for attaching the holder to a wall via a screw.</li><li><code>Top mounting pad</code> - renders a pad for attaching the holder to a wall via a screw.</li><li><code>Bottom mounting pad</code> - renders a pad for attaching the holder to a wall via a screw.</li><li><code>Dowels</code> - renders 2 simple dowels to help to put the holder into a wall. The dowels are rendered below the second tower from beginning, and the second tower from the end.</li><li><code>Dowel only in center</code> - renders only a single dowel in the centre of the holder. Works only when <code><i>Dowels</i></code> is checked as well.</li><li><code>Units</code> - units of all dimensional parameters (except for <code><i>Tower top overlap</i></code> - see its description for the reason why). In Customizer, there are 2 predefined options - millimetres or inches. You can use your own units easily by providing a conversion from your unit to millimetres (e.g. put 25.4 here to have all dimensions above in inches) in the source code. The default value is millimetres (<code>1</code> in the source code).</li></ul><h5>Mounting pads</h5><p>Serve for screwing the holder to a wall (for all mounting options, see the <i>Mounting options </i>section). You can choose what side(s) do you want the pad(s) to be in <i>Main parameters</i> section. Once to have at least one pad enabled there, the following settings apply.</p><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/76708022-b2b5-4d69-ae07-e03737ac0cc9/annotated_screw_hole_parts.png#%7B%22uuid%22%3A%2286c5cf95-dbd2-4b45-90d1-d71842086642%22%2C%22w%22%3A1224%2C%22h%22%3A693%7D"></p><p>The most common change to this settings you'll want to do will be adjusting the screw holes for the screws you will be using. This can be done by changing these parameters:</p><ul><li><code>Screw head diameter</code> - widest diameter of the screw head (in case of a hexagonal head, measure it from "corner" to "corner", not from side to side).</li><li><code>Screw head height</code> - dimension from top of the screw head to where the body starts.</li><li><code>Has conic head</code> - if head is wider on the top than on the botton (e.g. with flat or oval heads), it is conic; in any other case, it is not. See the figure above for conic (on the left) and non-conic (on the right) heads.</li><li><code>Screw body diameter</code> - diameter of the main body of the screw (without the head).</li></ul><p><i>Note: This model aligns top of screw head with the top of the pad. There is a countermeasure for situations where a non-conic screw head height is bigger than the pad thickness - if this happens, the non-conic screw head height is adjusted in a way that at least 0.5mm is still beneath it. So with a non-conic head, you'll never be able to make a hole of the size of screw head diameter that goes through the whole pad (making the screw hole unusable).</i></p><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/241cf07c-ada7-4624-af31-25bc679e9844/annotated_pads_parts.png#%7B%22uuid%22%3A%22778486d7-1078-49a7-90a8-d39b1cf8cb90%22%2C%22w%22%3A2000%2C%22h%22%3A981%7D"></p><p> In some cases, you'll also want to change the shape and position of the pads themselves. For that, use the following parameters:</p><ul><li><code>Padding</code> - extra space around the screw hole. Applies to <strong>all</strong> pads.</li><li><code>Adjust sideways pads width</code> - adjusts the default width of the base of sideways pads which is equal to the <code><i>Base width</i></code>. Increasing this parameter makes pad connection to the base wider, decreasing it makes the connection narrower.</li><li><code>Sideways pads offset along</code> - moves mounting pad left-right along the cable holder. If you have both left and right sideways pads enabled, they move each to an opposite direction.</li><li><code>Sideways pads distance from base</code> - adjusts the distance of the left and right pads' screw holes <strong>and padding</strong> from the base (positive values - farther away from the base; negative values - closer to the base).</li><li><code>Top and bottom pads distance from base</code> - adjusts the distance of the top and bottom pads' screw holes <strong>and padding</strong> from the base (positive values - farther away from the base; negative values - closer to the base).</li></ul><h5>Dowel parameters</h5><p>Adjusting the dowel(s) is pretty straight-forward. Just specify desired dimensions and offset.</p><p><i>Note: These dowels are not intended for screws; their primary intent is to hold the cable holder in a wall just by friction. They should be only used if you don't want pads for some reason. In any other case, I recommend using pads instead.</i></p><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/9275c311-f5ea-471f-a6d0-a260314268c3/annotated_dowel_parts.png#%7B%22uuid%22%3A%22eba28f20-fd9a-4ec6-812d-d5011fb1c358%22%2C%22w%22%3A833%2C%22h%22%3A726%7D"></p><ul><li>- <code>Dowel diameter</code> - diameter of a hole in the wall where you'll want to put the cable_holder (diameter of the drill you used to make that hole).</li><li>- <code>Dowel length</code> - depth of your hole in the wall.</li><li>- <code>Dowel_offset</code> - allows you to move the dowel(s) left/right along the base. In case of 2 dowels, this parameter will move them closer (negative value) or farther away (positive value).</li></ul><h5>Additional cable holder parameters</h5><p>There are some extra parameters you can adjust. However, unless you are experiencing specific problems with your print (in that case, go to <i>FAQ </i>section), feel free to ignore this whole section.</p><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/ebd93350-ff5f-427a-ad68-38db1ba1f6fb/annotated_additional_parameters.png#%7B%22uuid%22%3A%2215df78b4-f83e-453d-9c8f-722f4f50ff2c%22%2C%22w%22%3A2000%2C%22h%22%3A976%7D"></p><figure class="image"><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/ff605c32-ac81-4520-bf94-15b032ae3e91/annotated_both_sided_top_lock.png#%7B%22uuid%22%3A%2207b2c254-618c-48af-8f3f-50c38e997f80%22%2C%22w%22%3A1430%2C%22h%22%3A703%7D"></figure><ul><li><code>Base thickness</code> - thickness/height of the base of the holder. The default value works well also for almost any holders (tested with a holder with 16 slots on a single floor).</li><li><code>Base width</code> - width of the base of the holder and (derived) also one of towers' dimensions.</li><li><code>Cable lock overlap</code> - determines how much will the cable locks "hang" from <strong>each side</strong> of the Tower, effectivelly locking the cable in between two cable locks. This value is tied to <code><i>Cable lock overlap units</i></code> - see that one for more information.</li><li><code>Cable lock overlap units</code> - choose between relative and absolute units for <code><i>Cable lock overlap</i></code> above.<ul><li>Relative is in percents and the overlap is calculated as the percentage of the cable thickness in that particular slot. E.g., if overlap is 10% and cable thickness in a slot is 8mm, the cable lock overlap for this particular slot will be 0.8mm <strong>on each side</strong>. Relative is recommended as it adjusts automatically when size of the holder is changed; and it is basically a have-to when when you are using <code><i>Variable cable thicknesses</i></code> (since each slot may be of a different size and an absolute units would cause some locks to be too loose while others to be too tight).</li><li>Absolute units option has a fixed size of <strong>all</strong> cable locks within the holder, no matter their size. It is good for simple holders with all the cables of the same thickness, if you want a specific value. Otherwise, I recommend using relative option. Absolute units is <strong>always in millimetres</strong> and not affected by setting <code>Units</code> to inchesas, as if it was in inches as well, that would completely mess up the model (as two neigbouring cable locks would be way to wide and would overlap in most of the cases).</li></ul></li><li><code>Both_sided_top_lock</code> - valid only when a cable holder with <code><i>Variable cable thickness</i></code> is being generated; it switches between 2 different tower tops for those towers whose one side's top is not being used for holding a cable. Click on it to see its effect, or look at the figure above.</li><li><code>Tower width</code> - maximum width of the Tower holding the cable. Default value is sufficient for the most of the cables.</li><li><code>Nail hole size</code> - diameter of the nail nail hole in each cable slot; putting a value equal to (or less than) <code>0</code> will remove the nail holes.</li></ul><h5> Rendering quality<br> </h5><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/e2e2a2d2-ad62-49c6-9069-28b16d99e695/annotated_rendering_quality.png#%7B%22uuid%22%3A%22e906476b-c808-4860-9ebb-8d3da8f9a65f%22%2C%22w%22%3A1579%2C%22h%22%3A411%7D"></p><p>There are 2 types of renderings quality:</p><ul><li><code>Preview quality</code> - level of details of the preview shown every time when you change a parameter. If there is a long delay between a parameter change and update of the preview, consider reducing the quality. This <strong>does not</strong> have effect on quality of exported model.</li><li><code>Export quality</code> - level of details of the <strong>exported</strong> model. Default value should provide good enough results. Each level up in this setting <strong>significantly</strong> increases the export model rendering time.</li></ul><p>As the figure above shows, medium rendering quality will be sufficient for most of the cases while generating the final model rather quickly.</p><p> </p><h4><br>Mounting options</h4><p>The cable holder comes with several mounting options:</p><ul><li> <i>Nail holes</i> - there are nail holes in each slot allowing a quick nailing to e.g. a wooden wall. However, you'll need an extra tool to nail the nail completely as your hammer won't fit in between the towers. Do not use this as your only mounting option - when removing a cable, the nails usually don't hold and are pulled out along with the cable (unless you have a large holder holding 8+ cables). You can adjust the size of nail holes in <i>Additional cable holder parameters </i>section.</li><li><i>Mounting pads</i> - athough optional, these highly recommended mounting pads can be generated along all 4 sides of the holder. They are meant as the main mounting option (use your own dowel when mounting to a concrete/brick wall; or a screw with a nut when mounting to either a metal or any thin plate). You can enable them in <i>Main parameters </i>section, and adjust them for your particular needs in <i>Mounting pads </i>section.<ul><li>One advice though - do not screw the screws too tightly to the pads especially when using the <code><i>Has conic head</i></code> parameter - the material around the screwhead is thinner and may crack. If you are using only a single pad as your only mounting option, hold the cable holder when removing cables from it to prevent it from cracking or breaking.</li></ul></li><li><i>Dowel</i> - you can add eithe one or two dowels to help you mount the cable holder into a concrete/brick wall. Bear in mind that this dowel is not for a screw - they serve more like anchors than standard dowels. If you have a thick plaster, you can "nail" the holder in there using a small dowel. In general, I recommend using other mounting options, unless you absolutelly cannot go with them. You can enable dowels in <i>Main parameters </i>section, and adjust them in <i>Dowels</i> section.</li><li><i>Glue</i> - if the mounting surface allows it, gluing the holder is always a good idea. On some surfaces (e.g., plastic, metal, wood), this can be used as the only mounting option with good results.</li><li><i>Double-sided tape</i> - similar to <i>Glue</i> option. Additionally, a weak tape can be used also on plaster.</li></ul><p>Depending on where you want to mount your printed cable holder, choose one or a combination of the mounting options. The table below shows what options are good for the most common mounting surfaces.</p><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/91fba831-be9e-468e-9c6f-3a4b41b442a1/table.png#%7B%22uuid%22%3A%2257c7bde5-5bad-4532-a55c-fd7ad3bf509e%22%2C%22w%22%3A1159%2C%22h%22%3A265%7D"><br>* <i>Depending on the thickness of the plaster, this can be either easy or a hell.</i></p><p>** <i>In some cases (e.g., when going for a combination of nails & the tape), a weak double-sided tape can be great as it sticks the holder to the wall and allows you to nail it quite easily. </i></p><p>*** <i>Use screws with nuts.</i></p><p> </p><h4>FAQ</h4><p>The most common problems are enlisted in here. If you don't find an answer to your question here comment below or <a href="https://gitlab.com/the-exceeder/3d-printing/cable-holder/-/issues">submit an issue on project's GitLab</a>.</p><p><i>Note:</i> All parameter names used here are names from the Customizer menu. If you are looking at the source code, just replace spaces with underscores (e.g. <code>My variable</code> with <code>My_variable</code>) to get the correct variable name.</p><ul><li><strong>Screws in mounting pads are too close to the towers what makes them difficult to screw. </strong><ul><li>Go to <code><strong>Mounting pads</strong></code> section and adjust either <code>Sideways pads distance from base</code> or <code>Top and bottom_pads distance from base</code> parameter depending on what pads you are using.</li></ul></li><li><strong>I want to use a different screws on mounting pads than the default ones.</strong><ul><li>No problem, just go to <code>Mounting pads</code> section and set screw dimensions and type of its head.</li></ul></li><li><strong>Once set, I cannot delete the values in </strong><code><strong>Variable cable thicknesses</strong></code><strong> vector in Customizer.</strong><ul><li>This is an OpenSCAD bug. Right now, you have 4 options (note that the first two options will <strong>reset</strong> all you Customizer values to the default ones)<ol><li>Close and reopen the OpenSCAD.</li><li>Click the <i>Reset</i> button in top-right corner of the customizer.</li><li>Set all the cable thicknesses individually inside the <code>Variable cable thicknesses</code> (this will limit you to holders with only a single floor, but all the other settings will work as usual)</li><li>Display the source code (<i>Window → Editor</i> in OpenSCAD's top toolbar), comment a line with this variable definition (add <code>//</code> at the beginning of the line), save the file (visualization will break), uncomment it (delete previously inserted <code>//</code>) and save it again. This will reset this variable to its default state while keeping the others unchanged. Overly complicated, but hey - it works.</li></ol></li></ul></li><li><strong>Tower broke while inserting cables.</strong><ul><li>This happens if you try to fit too thick a cable into too small a hole. Make sure the cable slots match the cable diameters. Alternatively, this may happen if you have too many floors - in that case, there may be too large pressure put on a tower when inserting a cable to the first or second floor. Use <strong>PETG </strong>instead of <strong>PLA </strong>since it is a more flexible material. If it won't help, either remove some floors (and increase the number of slots in a single floor), or make more robust towers by adjusting either <code>Base width</code> or <code>Tower width</code>, both in <code><strong>Additional cable holder parameters </strong></code>section.</li></ul></li><li><strong>Cable keeps falling out of the holder. </strong><ul><li>Decrease cable thickness either in <code>Cable thickness</code> or in <code>Variable cable thicknesses</code> parameters in <code><strong>Main parameters</strong></code><strong> </strong>section. Alternativelly, cable locks may be too small for your cable diameter. Make them (slightly) bigger by increasing <code>Cable lock overlap</code> in <code><strong>Additional cable holder parameters</strong></code> section.</li></ul></li><li><strong>Can't fit the cable through cable locks.</strong><ul><li>Cable locks are too big for your cable. Decrease value of <code>Cable lock overlap</code> in <code><strong>Additional cable holder parameters</strong></code> section. Make sure you are using correct units (<code>Cable lock overlap units</code> in the same section).</li></ul></li><li><strong>When specifying various cable thicknesses via </strong><code><strong>Variable cable thicknesses</strong></code><strong> parameter, </strong><code><strong>Floor</strong></code><strong> variable is being ignored.</strong><ul><li>Yes, this is the limitation of the current version. It will be removed in the future (it is scheduled for the next version, so stay tuned!).</li></ul></li></ul><h4> </h4><h4>Gallery</h4><h5>A basic holder for three 7mm cables (electric cables for power source)</h5><h5><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/d01de8e4-ffd8-47cf-906b-dbef15324c93/default_holder.png#%7B%22uuid%22%3A%22bc51918d-69d5-4d30-abdd-f647bcdd58ee%22%2C%22w%22%3A1520%2C%22h%22%3A811%7D"><br> </h5><h5>Same as the previous, but with a mounting pad</h5><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/f90b01e5-ff1a-4b4b-9b17-7ed00e525395/default_holder_with_pad.png#%7B%22uuid%22%3A%220c1ac584-f629-4125-95b3-3928bf495330%22%2C%22w%22%3A1520%2C%22h%22%3A942%7D"></p><h5> </h5><h5>Holder for 16x8mm cables (standard network cables) in 2 floors with 8 cables in each</h5><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/c26ac605-26c1-4523-8c02-9de6c0d968bb/2floors_8slots_each_8mm.png#%7B%22uuid%22%3A%22ec372400-2b27-44c8-8944-ce0544f04a9b%22%2C%22w%22%3A1520%2C%22h%22%3A942%7D"></p><h5> </h5><h5>Holder with custom thicknesses of individual cables (8, 8, 8, 16, 16, 12, 12, and 8 mm) and customized pads - they were made wider, for a larger screw, and moved on the sides of the holder</h5><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/eb368b9d-46e5-4eb3-b0d3-20260ccba0eb/custom_thicknesses_holder_with_custom_pads.png#%7B%22uuid%22%3A%2203f54ef2-650f-432e-a794-0cb6fb83482d%22%2C%22w%22%3A1520%2C%22h%22%3A942%7D"></p><h5> </h5><h5>Holder for 4 cables of uniform width (of 8mm), with top and bottom pads and a dowel</h5><p><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/c95ed913-c789-4335-92c9-39e36d8c5779/top_and_bottom_pads_and_dowel.png#%7B%22uuid%22%3A%2218edaf04-1c74-44cf-9387-ac4531889079%22%2C%22w%22%3A1520%2C%22h%22%3A942%7D"></p><h5> </h5><h5>An abomination with slightly adjusted all parameters and removed nail holes; fits 3x8mm and 2x20mm cables</h5><figure class="image"><img src="https://media.prusaprinters.org/media/prints/89854/rich_content/31bed254-d4a6-4d5c-b12a-f7019a3deca3/abomination.png#%7B%22uuid%22%3A%226e03954a-e5c7-4787-aab5-18e3934d0f0d%22%2C%22w%22%3A1520%2C%22h%22%3A942%7D"></figure><p><br> </p>
With this file you will be able to print Parametrizable cable holder with your 3D printer. Click on the button and save the file on your computer to work, edit or customize your design. You can also find more 3D designs for printers on Parametrizable cable holder.