This instructable is for the people who have their own desktop CNC machine and wish to use it as a 3D printer. Over the years I have had lots of good feedback about the subject and so decided to develop Hardware and Software solutions for makers. Using Mach3, due to it’s popularity as a CNC software, I have created ‘add-on’s for using it as a 3D printing software. I have also created a blog (cnc2printer3d.wordpress.com) to communicate with people interested in this topic.

We enjoy sharing theses ideas with you all and any contributions, comments and or feedback is invited.

Step 1: The Concept

Over the last 5 years I have been actively following the development and growth of the 3D printing community helped by forums such as the CNCZone which has been the number one place for us all to meet, share our projects and ideas. I have also followed the development of the RepRap which is an open source project that has enabled many CNC builders to easily construct their own 3D printers incorporating quite complex electronics and software.

Many of the home constructors use the very popular Mach3 CNC software for their desktop machines and on the Artsoft web site (Mach3 official web site) it is written that ‘there are over 10000 users of Mach who swear by its ease of use, great features, and outstanding support’. In this tutorial I recommend you to use Mach3 but this does not mean that other software users can not use their machine as a 3D printer, in fact, any 4 axis CNC software can be used. If we compare a desktop CNC machine to a 3D Printer it can be seen that the only real differences are in the tool head and the heated build platform. CNC machines uses spindles but 3D printers use extruders (hot plastic extruder)

From a CNC machinery point of view a extruder is the 4th axis and must be driven like any other axis X , Y or Z but the conventional letter in a G-code representing the 4th axis is the letter “A”. This is where we encounter our first problem because in the 3D printing community it is the letter “E” which is used to represent the Extruder. Please take a look at the software part in order to understand how to solve this issue. If you have a 3 axis machine you will need to add an additional axis driver electronics so that the 4th axis can be allocated to the extruder. There are two parts in an extruder. Firstly, the filament drive mechanism that we have talked about as the 4th axis – here we will need one more stepper motor for our extruder to push the 3mm (or 1.75mm) filament into the hot end. The second part is the hot end where we need a system to melt the filament and this is usually done with Ceramic Cartridges. In addition, the temperature at the hot end has to be measured and we must try to stabilize it at a temperature around 260 degrees C. (This can be change according to the filament used)

The build platform:
The build platform is the surface that we use for printing on. It must be heated to a temperature around 110 degrees C for ABS and 50 degrees C for PLA. There are a number of choices for the type of surface material but kapton is the probably the most suitable. There also new sticky surface materials like BuildTak or GeckoTek. They are also nice to use. Give them a try. The Extruder control board’s thermistor input and one of it’s outputs can be assigned for the build platform and it’s temperature management.


There are two different software here. One is CNC controller software like Mach3 or LinuxCNC which moves your system according to your G-code program. The other software is called slicing software. It gets in a 3D model and outputs 3d printer frendly G-code. Our effort here is developing some code which brings these two software together and generate CNC flavored G-code. Please take a look at the software page for more info.

Mach3 Add-on

Mach3 has a very nice feature to run custom software inside it self. They call it Add-ons. We will just open mach3 run the add-on and and load STL file inside mach3. After proper installations you can only use mach3 to print your objects. Ofcourse you can use these software separately. First run your slicer and generate cnc flavored G-code (I mean the forth axis indication letter must be "E" This can be set inside most slicer software) Then run this g-code with machine controller software like Mach3, LinuxCNC or your other choice.

Choosing an extruder:

There are lots of third party extruders on the market. Search for popular 3d printer extruders. The important part here is the temperature sensor. If your extruder has thermistor type sensor, you must use our thermistor type controller boards. If your extruder has thermocouple then use thermocouple type controllers.

The Extruder control board

This electronic device help you to control your extruder and build platform temperatures. It has all the needed terminals for easy wiring. You are setting the desired temp with the on board trim-pots and the electronic board use PID calculations to stabilize the extruder and build platform temperatures to the set points. No PC connection is required and the on board microcontroller do the job. There are one channel and two channel options in makerstorage.com

Step 2: Put All the Parts Together

Upto now we try to list the items needed when converting your desktop CNC to a 3D Printer. Now it is time to tell you about putting everything together.

1- Connect your stepper motor driven extruder to a proper motor driver circuit. (Only connect the motor to the stepper motor driver)

2- Define this driver as the 4th axis to mach3. If you are using Gecko drive 540 you may have an unused 4th motor output. You can easily use it.

3- Connect the temperature sensor, Heating element and heated build platform to Extruder controller board.

4- Run Mach3 and select the Add-on from wizards menu. Open your STL file, wait for slicer to generate the G-Code and Press “Post Gcode to mach3” button then press exit. You will see the mach3 loaded the generated G-code file automatically.

4.5 or slice your stl file with the slicer sofware like Cura or Slic3r and save the gcode to your computer. Do not forget to chage the extruder letter to "A"

5- Power the gnexlab Extruder controller board with 12v dc power supply (min 10 amps) and set the extruder temperature to proper degrees according to the filament you use. 245 degrees C for ABS or 190 for PLA most common settings. And Set heated build platform temperature to 110 degrees C for ABS and 50 degrees C for PLA. You can read the set values and current temperatures of the extruder and the heated build platform temperature from the on board LCD or seven segment display.

6- Wait until the specified temperatures are reached.

7- Zero the Z axis to the heated build platform. (0.1-0.2 mm above the surface)

8- Run the GCcode with Mach3 and watch your part get printed !!!

Step 3: What Else Do You Need?

If you have a 3 axis CNC machine to convert to a 3D printer you will need the following additional items;

Gnexlab Temperature Controller

There are some options to select a proper Extruder Controller Board. The first important part is the sensor. If your extruder has thermistor sensor you have to chose a thermistor extruder controller board. If your extruder has a thermocouple sensor then use an extruder controller board which has thermistor input. The other option is the channel number. There are one channel controllers and two channel controllers. If you want to control more than one extruder or you also want to control the heated bed temperature you may need additional boards or two channel boards.

One Axis Motor Driver

If you have a 3D CNC system probably you have 3 motor drivers. For the filament drive mechanism you will need one more axis (4th axis) so one more motor driver. If you are using Gecko drive 540 you may have an unused 4th motor output which you can conveniently use. makerstorage.com has one channel drivers that are suitable for extruder stepper motors. Take a look at the pictures.

Temperature Sensors

To connect to your gnexlab controller card in order to measure the temperature you will need temperature sensors. You can use two types of sensors. Thermocouple and Thermistor.


100k Thermistor ability to measure up to 300 degrees C


K-type Thermocouple

Heated Build Platform

The build platform is the surface that we use for printing on and It must be heated to a temperature around 110 degrees C for ABS and 50 degrees C for PLA.


This part will extrude the hot plastic.

There are very nice extruder sets on the market. Please take a look at the below options.


Drop-in 3D printer extruder retrofit kit for i3-style printers like the Wanhao Duplicator i3. Print with flexible materials, higher resolution, and fewer failures. Also prints ABS and PLA better than your stock extruder.

The Lulzbot TAZ extruder

Built with an all metal LulzBot® Hexagon Hot End, this tool head is capable of heating up to to 300°C (572°F), so it easily handles standard filaments like HIPS, PLA, and ABS, as well as advanced filaments including heavy duty nylon, T-Glase, and polycarbonate, and aesthetic varieties of wood- and stone-like filaments.

Micron E.M.E All Metal" State Of The Art Tiger 3d Printer Extruder

MICRON E.M.E is introducing the second generation "all metal" extruder integrated with patent pending "all metal" hot end, featuring a detachable filament guide and nozzle module "DFGNM", a revolutionary solution for the most common problem with 3D printers: material being stuck inside the filament guide or the nozzle.

Step 4: Software

There are more than one solution for the software side. Please find below them and choose the one best fits your needs. Controller Boards are mostly working standalone. They do not communicate with the controller software. They have their embedded software running on board micro-controller. This approach simplifies the effort on converting your CNC machine to a 3D Printer.

1- Mach3 Addon

Because of the popularity of Mach3 in CNC communities we will continue to support it as 3d printing software. This Mach3 add-on is using CuraEngine behind the seen. After selecting the STL file, mach3 add-on runs CuraEngine with the settings inside curarun.bat file. The generated g-code file transferred to Mach3 automatically and with only one software (Mach3), you can 3D Print your model.

Installation: Download the latest release below and unzip it inside mach3 addon directory.

Usage: Run Mach3. From the wizard menu pick makerstorage addon.


Download: Latest relase 3dprinter_addon_2.2.zip
Source Files : https://github.com/makerstorage/cnc2printer3d

2- Using a slicer software to export g-code suitable for your machine control software

Cura: Cura is one of the most popular slice software developed by Ultimaker.

Installation: Download and install latest version of Cura software.

You need to define a new machine inside Cura. Select the GCode Flavor to MAch3/LinuxCNC.

Download the below profile for a starting point. From Cura File menu Open this downloaded profile. You can fine tune the settings for your custom needs.

Usage: After proper installation and profile adjustments from File menu Load model File. This file is 3d model with STL extention. Position the model by draging on the build platform. Press the disk icon on the top to save your gcode. Open Mach3 and load this gcode.

Download: cura profile
Source Files : https://github.com/makerstorage/cnc2printer3d


Mach3 – Newfangled Solutions: Mach3 turns a typical computer into a CNC machine controller. It is very rich in features and provides a great value to those needing a CNC control package. http://www.machsupport.com/software/mach3/

Cura and CuraEngine: It is a powerful, fast and robust engine for processing 3D models into 3D printing instruction for Ultimaker and other GCode based 3D printers. It is part of the larger open source project called “Cura”.


Step 5: Some Users

Donald Fournier

Enclosed are pictures and Video of my conversion of my CNC mill to do 3d Printing. The heater controller board works great and slicr gcode works great with Mach3. The Mill is a square column mill purchased a couple of years ago from Grizzly. I did the CNC conversion following the hoss conversion including ball screws on all axis. I’m very impressed with the print quality, thank you for all your help.

Mike Heidrick
I am excited so I am sharing I got the 3D printer extruding tonight. Thanks to many of you for your parts and assistance! Specifically awesome parts from Andy, Nuri, Ahren, Dan, Harry, Chelsea and co – You guys rock!

Elmaslar Medikal.

This setup has a large heated build platform.

There are more than 300 people world wide

Come and join our comunity


<p>Nuri,</p><p>thank you for the useful information. I am starting to add 3d printing to the cnc router <em>i</em> had built, being now in the learning stage. a question: is there a need to change the temp of the hotend during a build run, or can it be constant for a certain set of conditions? the difference is that if constant there is no need for the computer to be involved, so manual temp selection can be used.</p>
<p>Hi noshed,</p><p>We are not changing the temperature during the print. What we are trying is to keep it constant at a predefined set value. We are using PID algorithms inorder to keep it constant.</p>
<p>Very cool mod.</p>
<p>Thanks Jason</p>

About This Instructable




More by NuriE1:CNC to 3D Printer Conversion  
Add instructable to: