Introduction: Mount (nearly) Anything to (nearly) Any 3D Printer or CNC Router

About: I've been blessed lately to be able to share some of what I've learned and made. I make custom software for a living. I make custom things for myself and others. I make custom gadgets for fun. In my profession…

The Summary:

Do you need to mount things to your 3D printer or CNC router? This is the most versatile way to get that done. It's easy to install. It's easy to modify. It's easy to extend (and there are at least a couple ways of doing so). It also works on any CNC machine that uses Nema 17 motors. That's nearly every FDM-style 3D printer and most consumer-level CNC mills and routers, so if you've got one of those, chances are, this will be useful to you.

In short, this is a mounting bracket for Nema 17 motors that serves as a platform for mounting anything else to your CNC machine (3D printer, CNC router, laser engraver, plasma cutter, CNC lathe, etc).

I'm including source code, models that I have created for this project (and that I use on my own machines), and a couple examples of how to make your own attachments.

The Story:

I got my first 3D printer about two and half years ago (at the time of this writing). I love it. I have 3D printers running pretty much all the time I'm at home. I got my first CNC router about a year and a half ago. I love those things too, but they "only" get used about five days out of any given week.

One of the things that I love about 3D printing is the openness of the community. Just about everyone who has a model of anything that's worth sharing has done so for free. And, as all of you 3D printer owners know, one of the most popular things to do with a 3D printer is... to upgrade your 3D printer. Time to login to Thingiverse to see how I can make that better!

This is where things can get frustrating. Especially if your printer isn't a specific model that everyone else owns. If you've got an Anet A8, or GeeeTech, Prusa or Creality anything, you're probably OK. Somebody's made the specific upgrade you're trying to find. Go find it. If you're trying to find parts to mount to your CNC router, just forget about it. People rarely share their CNC models, and even if they did - is it for my router? Doubtful. But you search anyway...

Did I say frustrating? So many parts are ALMOST the right one. I can't use your otherwise awesome Z-index adjuster because I don't have two M3 through-holes in the right spot?! Your amazingly designed fan shroud is useless to me because it will only attach where there's a J-head hotend?! Your wire trap won't work on my printer because my wires come out the right side instead of the left?! Come on! I mean, I get it. You made that part for your printer, and not mine. But still, come on!

Maybe I'm the only one who has spent hour after hour (after hour) searching for the right solution, only to discover that the right solution only works on a machine that's almost, but not exactly the same as mine. If I am, then this fixed my issue, my therapy is complete, and I'm happy. If this helps anyone else, cool!

A costmo Bracket fixes the, "that part would be perfect except there's no way for me to mount it to my machine" problem. Well, a large part of it anyway.

What is it, specifically?

Just about every 3D printer (the FDM-type, I mean) uses Nema 17 motors in places where people need to mount things. Most consumer-grade CNC routers/mills have the same motors. The costmo Bracket is a set of 3D printable pieces that make up a universal mounting bracket for your 3D printer or CNC router. That bracket attaches to any Nema 17 motor without disassembling any other part of your machine, disturbing any wires or bending anything awkwardly. I've also provided a few attachments that I use (and you can too!), but the bulk of this article is about how to make your own attachments and how to use Tinkercad to attach other people's things to your CNC machine - things that you couldn't ever mount to your machine before.

The end-result: Anything (within reason) can be - or can be made to - mount to a costmo Bracket, and therefore, can be mounted to any place you have a Nema 17 motor. Since most CNC machines have Nema 17 motors (3D printers, CNC routers, laser engravers, lathes, plasma cutters, etc.), costmo Brackets are useful in a large number of scenarios.

costmo Brackets have internal nut traps in strategic locations, so mounting things is easy and secure. If you're mashing someone else's piece to a bracket in Tinkercad, you can skip the nuts and bolts altogether and easily create single pieces.

I have provided models for the things that I needed immediately, which were wire traps and a super-easy way to adjust the printer's Z index. I'll show you how I made those in OpenSCAD. If you're inclined to use OpenSCAD (or model in code), I include the source code files so that you can mess around and make your own variations.

Following that is an example of how I imported a model of a part cooling fan that I found on Thingiverse that was "almost right" for my printer (I have the wrong hotend!!!) into Tinkercad, where I made it right for my printer. Let's get to it!


    • -A 3D printer. If this thing is of any use to you, you probably already have one.
    • - If you want to permanently set the internal nuts, you will need a glue or epoxy that's appropriate for the plastic you're using. This is not at all necessary (once the nuts are secured, they stay that way), but it makes me feel better. Plus, it makes installing and uninstalling attachments slightly easier.
    • - Nuts and bolts. At the very least, you will need (2) M4 nuts and (2) M4 bolts to secure the two bracket pieces to each other and to the Nema motor. If you are connecting attachments, the default design is for M3 nuts to be inserted into internal nut traps, and M3 bolts of varying length, depending on your attachment - most likely M3x8mm or M3x12mm. You do not need to fill all of the nut traps. In fact, I would highly recommend against doing so. You will only need enough M3 nuts for your chosen application(s). For example, if you have (2) attachments that each require(2) bolts, you will need to install (4) M3 nuts into the internal nut traps. My bolt head inserts are designed for cap head hex bolts, but you'll be able to get away with using other bolt head styles.
    • - Some filament. If the pieces you are making are subjected to heat or other physical stress, you should pick the plastic accordingly. Since these often end up near a hotend, I choose to print in ABS. PLA is almost always OK for pieces that live away from the printer's hotend. I also use ABS when making brackets for my CNC routers because those motors tend to run at higher temperatures.

    Step 1: Print and Mount a Bracket Set

    This part is easy. Just download the attached "costmo Bracket set.stl" file, load it into your slicer, slice it up, send it to your 3D printer and print. I am going to assume that you know how to do all of that.

    I recommend printing in ABS or PETG. ABS in particular if you are installing anything near your printer's hotend. Printing in any plastic whatsoever is probably OK for most applications, but you should have a basic awareness of the properties of your chosen plastic in relation to the environment, stress and use of the piece.

    Once you have printed the pieces, it should be pretty obvious how to mount them.

    Mounting preparation: Before attaching the bracket to a motor, you will need to decide where you will have accessories attached and install M3 nuts into the appropriate internal nut traps. Once you have decided which internal nut traps are going to be used by your attachments, just drop your M3 nuts into the openings. If you want for the nuts to remain permanently fixed, do so with an appropriate glue or epoxy. Permanently fixing the internal nuts is not usually necessary, so feel free to skip that part.

    Mounting the bracket: Now that your attachment nuts are in place, it's time to mount the bracket to your motor.

    Simply slide the main bracket piece over the Nema motor from the bottom. Next, slide the top (smaller) piece into place, insert (2) M4 nuts into the top piece's nut traps, then lock the pieces together (and to the motor) using (2) M4 bolts. I recommend M4x10mm (minimum) or M4x12mm (ideal) bolts, but you can use longer bolts if you are not attaching anything to the top of the motor.

    It's so easy that it hardly warrants it's own step, but at this point, you're ready to connect your attachment(s).

    Step 2: Print and Mount an Already-created Attachment

    After you have printed your accessories, mount them to the costmo Bracket using M3 bolts. The attachments that I have created use M3x8mm bolts for top-mounted accessories and M3x12mm bolts for side, bottom and corner-mounted accessories.

    I specifically designed several of my connectors to counter-sink socket head bolts. It can be somewhat difficult to get the bolt length correct in the design otherwise, plus counter-sunk bolt heads look nicer.

    That's it for mounting attachments. Most of what makes this bracket so useful is the fact that you can easily make your own attachments, as well as modify other people's parts to attach to a bracket on your machine. That's what the rest of this Instructable covers. if you're wanting to try out a few that I've made, they are available on Thingiverse, github and as attachments to this step. Here are links to the Thingiverse pages for the attachments I have made:

    On to making your own attachments...

    Step 3: Make Your Own Attachment in OpenSCAD

    If looking at computer code freaks you out, you can skip this section! Tinkercad is the perfect tool for people who need to make and modify models, but can't and/or don't want to model in code. If that's you, skip ahead to the next step.

    If you're not intimidated by a little code and logic, I recommend getting to know OpenSCAD. This is a great resource if you're just getting started:

    As a side note, if you feel that OpenSCAD could be a great tool for you, but you just aren't getting past the learning curve, I suggest checking out That's a good way to get a visual introduction to the types of objects and operations you deal with in creating 3D models from code. Once you have visualized building SCAD in blocks, it's an easy transition to do the same in code.

    Download the attached costmo Bracket.scad file.

    If you haven't done so already, download and install OpenSCAD from

    Create a new scad file and add this line to it:

    include <costmo Bracket.scad>

    When you save your file, the preview will show you a costmo Bracket in transparent white, so you can start building your model around it. If you look at the costmo Bracket.scad file, you will see that orientForPrinting is set to false, which creates a visualization of a costmo Bracket that will disappear when you render your model for output to STL.

    The best advice I can give is to use the attached code for the wire trap module as an example. In that file, I import a costmo Bracket as instructed above, as well as a pre-formed baseplate to interface with the mounting bracket. I then built my model on top of the baseplate.

    After your model is built, render it, export it to STL, run it through a slicer and print.

    When designing your own pieces, you need to be aware of the measurements of the nut traps. You will need to design your pieces for specific bolt lengths for the connections. Refer to the attached diagram of nut trap depth measurements. The important things to note are that you have a 4.7mm recess and a 2.3mm wall. You will want to thread any bolt at least 2mm past the wall, but never further than the 4.7mm recess. Making the bolt length too short will leave you with not enough of the bolt threaded into the nut for a secure connection. Leaving it too long will create a scenario in which your bolts will try to bore their way into the motor. They won't succeed, but they'll try. What will actually happen is that the body of the costmo Bracket will be forcibly pushed away from the motor.

    So... In order to use a bolt that's 8mm in length, you would make the wall of your piece between 1mm and 3.7mm. [8 - (1 + 2.3) = 4.7mm of recess used, or 8 - (3.7 + 2.3) = 2mm recess used]

    I have also attached the scad code for the Z index adjuster in case you want to see a slightly more complex example of creating an add-on module in scad.

    I know that isn't a comprehensive guide by any means, but if you're planning to make your own attachment for a costmo Bracket in OpenSCAD, this should be enough information to get you going. So dig in!

    Step 4: Make Your Own Attachment in Tinkercad

    Tinkercad is awesome. When I first wanted to start making my own models for 3D printing, it is the first tool I used for this reason: It's the simplest tool to just start using. My skills as a model developer/designer have improved, and I now use OpenSCAD and Fusion 360 (among other things), but Tinkercad continues to perfectly round off my list of primary tools for modeling. That's the case because, despite its simplicity for beginners, Tinkercad has a ton of features that keep it useful for users at every level. Not the least of which is the ability to import other people's STL files, mix and mash them to your heart's content, then export back to STL for printing. Pretty cool!

    The ability to take another person's model and know that I can easily adapt it to connect to my machine using a tool like Tinkercad is the reason I created the costmo Bracket.

    If you have never used Tinkercad, you can get a basic understanding and get to using it in about 10 minutes by following the first couple of samples here: Once you've created and cut a couple of primitive objects (cubes, spheres, etc.), you'll probably drop the tutorials because it'll be easy to figure out from there.

    Here, we'll use Tinkercad to modify someone else's model so that it can be attached to a costmo Bracket (and therefore, our CNC machine). I am going to demonstrate the basic steps it takes to turn a model into something that can be mounted onto a bracket. That took me about 30 minutes. I spent another 30 minutes making minor adjustments for my specific 3D printer. I won't show you those steps because seeing them won't help you understand the process any better than you already will by that point in the tutorial. I mention the extra time so that you know that I spent about an hour in total modifying another person's model to fit my mounting brackets and printer. I could spend about an hour more improving the aesthetics and reducing the amount of plastic needed, but I'll stop short of that for now.

    First, go to and login. If you don't already have an account, you will need to create one (it's free). Click the "Import" button in the upper-right, then select the (attached) "articulated" version of the motor mounting bracket, then click "Import." You will be using the "articulated" mounting bracket model as a template for lining up and modifying your second model. Next, import the model you are modifying to become an attachment using the same steps given. Both models will be in the center of the platform, so move one of them to the side, and get to work.

    I'll point out a couple of handy tips up front so that I don't have to repeat myself or explain a lot about what you're looking at in each picture:

    • It is very handy to make objects either transparent or opaque to better view how they are interacting or interfacing with each other. Select a shape then select its color and you'll see the "Transparent" checkbox to toggle transparency.
    • Any primitive object can be a "shape" or a "hole," and converting an object between the two is a simple toggle. It is often times easier to work with "shape" objects, then turn them into "holes" once everything's in place.
    • It can be tough to get exact placement and alignment in Tinkercad, especially for those of us who may be somewhat pedantic about such things. Pay attention to the "Snap Grid" settings in the lower right. To make small adjustments to object positions, set the Snap Grid size to something appropriately low and use your keyboard arrow keys to move the object.

    After importing the second model, I did the following (roughly in this order):

    1. Removed the entire mounting mechanism for the 30mm fan that the original model had blowing on the specific hotend for which the piece was designed. Just cut it off.
    2. Line the second model up with the model of the bracket for bolt placement and final position.
    3. Add a baseplate to interface the original mount with the costmo Bracket
    4. Extended the side piece that holds the 5015 fan, by:
      1. Creating a cube of the desired dimensions (enough to cover the base plate of the mounting bracket and provide access to the mounting holes), then grouping the original model and the new cube.
      2. Creating through-holes for mounting to the costmo Bracket and a cylinder cutout so that the 5015 fan can go into its original mounting bracket.
      3. Select the resulting model, click "Export" and save as an STL file.

    That's it! Most models will be that simple to modify for this mounting bracket.

    In this case, I had to spend another 30 minutes for my specific printer to:

    • Push the fan out another 22mm so that it lines up with the extruder nozzle
    • Cutout a section of the mounting plate to make room for my extruder's release handle
    • Add easily-removable pillars to the extruder release handle opening so that the piece can be printed without supports
    • Make the bracket mounting holes ovular to provide a few mm of vertical adjustment

    I feel like I should add more detail, but the fact of the matter is that Tinkercad makes this sort of thing so easy that it doesn't require a lot of extra instruction.

    Step 5: Get to Making!

    As I mentioned in the introduction, I created the costmo Bracket to resolve a long-running frustration that I have had. When I find a part for my 3D printer or CNC router now, I don't have to be nearly as concerned about whether or not it was designed for my machine - I know that I can easily modify it to fit.

    Designing the bracket to be as non-machine-specific as possible has already had unexpected advantages. For example, I discovered (quite by accident) that the wire trap I made works perfectly on 20 series extrusions. Since I initially designed the bracket for use on my 3D printers, it honestly never occured to me that it would work for nearly every other CNC machine until I was photographing the pieces for Thingiverse and noticed the Nema 17 motor that was awkwardly naked and desperately needing a wire trap on the CNC router that's taken up residence in my studio. I already have about a dozen of these brackets in everyday use, and that number is growing as my CNC machine addiction runs its course.

    All of the models and source code for this project are available on github here: (these files are in the "costmo Bracket" folder). This is a continuing product for me, so the github repository is where the latest updates will always live.

    The Thingiverse page for the costmo Bracket is here:

    If you make your own attachments for a costmo Bracket, please share! Post attachments as remixes on Thingiverse or let me know what you've made. To make it easier for people to find attachments, I will link to any that are useful and use an Open Source license that does not restrict commercial use.

    That's it! Whip out your OpenSCADs and your Tinkercads and get to making!

    CNC Contest

    Runner Up in the
    CNC Contest