How to 3D Print in FDM: A Step by Step Guide

Curtis Satterfield, Ph.D.

Curtis Satterfield, Ph.D.

Share on facebook
Share on twitter
Share on linkedin
Share on email

In this article I am going to walk you through printing a 3D model step by step. I will show you and discuss all the important steps in detail.

In order to 3D print a model on an FDM printer follow the steps below:

  1. Create or download a model to print
  2. Use a slicer to prepare your model
  3. Copy your G-Code file to the printer
  4. Prepare the printer
  5. Print your model
  6. Remove the model from the build plate
  7. Perform any necessary post-processing

In this guide I will walk you through the step by step process of obtaining, preparing, and printing a 3D object. For the article I will be using a tabletop miniature model to demonstrate prints that require supports and I will use a simple XYZ calibration cube to print an object with no supports.

For this guide I am assuming that you have access to a 3D printer and a computer in order to complete the steps. If you are reading this guide and haven’t yet decided on a 3D printer, I will link to recommendations for FDM printers in the article. So, let’s get started!

Create or Download a Model to Print

The first step to 3D printing is having something to print. The first model we will be printing today is a simple XYZ calibration cube that can be used to tune your printer. Using the XYZ cube will allow us to print a simple geometric shape and examine the use of infill in FDM printing.

I will be using this XYZ cube from iDig3Dprinting on Thingiverse. The model is a simple 20 x 20 x 20 mm cube with the sides labelled to make measurements for calibration easier.

XYZ Calibration cube for 3D printer

Source – iDig3DPrinting on Thingiverse

For the second model I will use a tabletop gaming miniature to demonstrate the use of supports in models. I will be using a Female dwarf warrior model by PollyGrimm on Thingiverse. This model looks great with a ton of detail and will require us to use supports on both the resin and FDM prints.

Female Dwarf Warrior 3D Model
I want to mention that you can also create your own models to 3D print using software such as Blender for models like our Dwarf above or Fusion360 for models such as the XYZ cube. Using that software is beyond the scope of this article so we will stick with downloading our models.

Ok. First step is to download the models. Find a model you want to print and download the corresponding files. On Thingiverse simply click the “Download All Files” button and you will download a zip file that contains the SLT files, images of the model, license and readme files. Below you can see the files I’ve extracted from the downloaded zip.

Extracted download of 3D Model files from Thingiverse

The files we need to print are in the “files” folder. Be sure that you extract your files to an easy to remember location on your computer. Now open the files folder to see the stl files. In the image below you can see one of my favorite 3D applications in action. Papa’s Best STL Thumbnail viewer. This windows extension generates a view of all STL files on windows to make looking through your STL files easier. I highly recommend downloading and installing it! You can download it here.

3D printable Female warrior stl viewed with papas best thumbnails
I simply repeated the same process to download and extract the XYZ cube. Now we have our models saved to our computer so step one is complete. Next, we need to prepare it for 3D printing. For that we need to fire up our slicer which we will cover in the next section.

Use a Slicer to Prepare Your Model

First, let’s talk about slicing programs and why you need to use one for 3D printing. When you download or create a 3D model for printing it is stored in a common 3D file format such as an STL or OBJ file. These files allow your computer to read and interpret the information in the file to display the object on your computer screen. However, your 3D printer doesn’t understand how to turn the data from an STL file into a 3D printed object. For that you need to use a slicer to convert the information in your STL file into machine readable G-Code.

G-Code is a language that instructs a machine tool how to carry out tasks. The G-Code tells a motor or motors on a machine where to move, how fast to move, and what path to take. Let’s look at an example. I will slice the 10x10x3mm cube pictured below in Simplify3D.

3D printable 10mm cube in 3D Slicer

In the image below I have sliced. I have changed the view to show only the first layer of the printing process.

First Layer Tool Path in 3D Slicer
They dark grey cylinder represents the tool head, in our case the print nozzle. The color of the line denotes what part of the print it represents. The dark purple is a skirt, the blue is an outer perimeter, the light blue is inner perimeter and the green is a solid layer. Each of these colored lines represent where the printer will extrude filament. Now let’s look at the G-Code that the slicer generated to produce this layer.

The first layer of this print was 187 lines of code long. I have chopped out most of the movement G-Code to shrink it down for an image. In the image below represents a section of code I removed to reduce the code line count.

GCode from a 3D printer file
Each line in the above code has a G-Code command associated with it. The letters and numbers after the command tell the printer how to carry out the command or rather what parameters to use when doing the command. G-Code is an entire topic and I won’t cover it in detail for this article. The purpose of the image was to show you what the G-Code looks like from the slicer. For our 10x10mm box the entire file was 2,283 lines long. That’s a lot of information for such a small print. The larger and more complex your print the longer the G-Code file will be.

Once the G-Code file has been generated by your slicer you can transfer it to your 3D printer and begin printing. That is the most basic assessment of what a slicer does and why you need it for 3D printing.

First, we need to import our STL file into our slicer and prepare it to print. I will be using Ultimaker Cura for this guide as it is freely available. If this is your first time running Cura you will need to follow a quick guide and then add your 3D printer to Cura. The standard settings for a printer in Cura are decent, but you will want to tune them at some point to get the best possible prints.

I will be printing on my PrintrBot Play and need to add it to Cura. If this is your first time running Cura and need to add your own printer you can follow these steps.

Click on the printer name in the upper left corner of Cura and on the drop down click Add printer.

Adding a printer in Cura first step

Most likely, you aren’t using a networked printer so on the Add Printer dialog box click Add a non-network printer.

Cura slicing program add a printer dialog box

Now scroll down the list of printers until you find your printer. If your printer is not listed, you will need to add a custom printer. Luckily for me, my printer is listed so I select it in the list and click Add.

Cura add a printer third step

Once you add the printer, Cura will update the slicing settings and the wireframe of the printer bed will change to match the size of your printer.

PrintrBot Bed wireframe in Cura

The wireframe will show you the printable area of your printer. If your model won’t fit into this area, you will not be able to print it. Below is an image of a model that is too large being imported into my PrintrBot profile.

3D printable ship model too big for 3D printer's build plate
As you can see the model ship is much too large for the build plate. Cura highlights the model with yellow and gray stripes to indicate it’s too large for the printer. Keep this in mind when importing models. If the model won’t fit, you’ll either need to reduce it in size or use another program to break it up into smaller parts to print. Luckily for us, both of our models will easily fit on the PrintrBot, so we don’t need to worry about size issues. Not really lucky, I specifically chose models that would fit.

To add your model to Cura click File -> Open File(s)

Opening a file in Cura

Browse to the STL file you want to useselect it, and click Open. Cura will then import the STL file and place it on the printer bed.

3D printable XYZ calibration cube in Cura
I’ve imported the XYZ cube for our first model.

Now we need to review some settings in Cura before slicing the model. The first setting we want to look at is the layer height. Layer height determines the thickness of each layer (or slice) of the 3D print. The thinner or lower the layer height, the more detailed the model will be. However, the lower the layer height the longer the print will take. We need to find a good balance between printing time and quality.

A .2mm layer height is a commonly used layer height that provides decent quality and speed. We will use .2mm layer height for our cube as I’m more worried about the print speed and not quality on the cube.  You can make print settings changes in Cura by clicking on the print settings bar in the upper right.

Cura print settings bar

This will open the print settings menu and allow you to make the changes you need.

Cura print settings menu

I’m quite happy with a .2mm layer height for the test cube so I will leave it at .2mm. Unless you need extremely fine detail .2mm is a great layer height for most prints.

Clicking the arrow next to Shell reveals settings about the wall thickness.

Cura shell settings
The default settings for my printer are good for me so I will leave them alone. If you wanted to have a thinner or thicker shell on your model you would modify the settings here. One instance where you may want to make changes are printing large flat surfaces on the top of the model. If you are having issues with getting a good finish on the top of your model, try increasing the top layers.

Next up we have infill, which could be an entire article. The simple version is that to save time and filament, the slicer will hollow the model and then infill the interior with a pattern and amount that you determine. The less infill, the faster the print and the less strength it has. The more infill, the stronger the print, but the more time and material it uses. Different infill patterns can serve different purposes and for our case we are sticking with a Grid infill pattern.

Infill Settings in Cura Slicing Program
To see what affect this has on the model I sliced it and have used the layer slider to look at the middle of the model. You can see our grid infill pattern below:
 
XYZ cube sliced in Cura with 15% infill
15% doesn’t fill up a lot of the interior, but it will give the top of our model some support while printing. If we didn’t include any infill the top, we need to bridge the entire gap while printing. If you wanted to do no infill, you could always increase the top layer count to get a better finish. To give you an idea of different infill percentages here is an image comparing 0, 25, 50, 75 and 100% infills on this model.
 
Infill percent and print times

The next important setting we have is the Material setting.

Material setting Cura

The material contains the printing temperature setting. In order to get this setting dialed in you need to print a temperature tower with the filament you are using. Using a temperature tower will show you how your filament prints at multiple different temperatures so you can decide which temperature produces the best finish. Here is an example of a temperature tower I printed for the PLA filament I will be using for the cube print:

Temperature tower for calibrating 3D Filament
I’ve decided that 185 looks good so I will use that for my temperature setting in Cura. I don’t have a heated bed on the PrintrBot so that option isn’t showing in Cura. If you have a heated bed, I recommend setting it to 60 degrees for PLA.

Speed is one of the most important settings for getting good prints. Generally, the slower you print the better the overall print quality. However, the slower you print the longer the print takes. We need to find a good balance between quality and speed. Check out my guide to 3D printer calibration to learn more about tuning your printer’s speed.

My speed for the PrintrBot is 50mm/second so I will leave the speed setting alone. I recommend leaving the default setting for your printer if you haven’t calibrated the speed yet.

Cura print speed settings
Under Travel we have settings for retraction. I’m using retraction settings from calibration of my PrintrBot. You can read more about how to tune your retraction settings in my guide to 3D printer calibration. You can leave the default settings for your printer profile.

The Cooling settings allow us to enable the cooling fan for our prints. A cooling fan helps the filament harden quicker as it comes out of the extruder. I have added the setting for setting what layer the fan turns on. You can access this by hovering over the cooling menu and clicking the gear icon that shows up. Cura will then show you more options to add to the menu.

Cura cooling settings setting fan speed at specific layer height
I have set my cooling to 100% starting at layer 3. Starting the cooling too early can cause the part to warp and peel off the build plate. In order to avoid that set your fan start to a higher layer as we’ve done here.

We are going to skip support for this model as we don’t have any need for it. There are no overhands or islands in the print. We will use the support settings with our miniature model.

For Build Plate Adhesion I will use a skirt. I like to use a skirt to help prime the extruder and to remove any oozed filament from the nozzle before the actual model stars printing.  I added line count and skirt distance to the menu. I want to make sure the skirt is long enough to properly prime the nozzle, and that it is set off enough from the model that it doesn’t get attached. I prefer doing 2 lines at 4mm distance on my prints.

 
Cura build plate adhesion settings
If you are having trouble getting a print to stick to the bed you can use different settings in Cura. Using a brim will add plastic to the base of a model adding more contact area for adhesion. Using a raft will print several layers of plastic that the model is printed on top of. If you are having problems with prints coming off the bed, check out my guide on how to troubleshoot build plate adhesion.

Finally, I don’t have a dual extruder on my PrintrBot so we can skip that setting.

Now that all the settings are in, we can slice the model! Click Slice on the bottom right of the screen in Cura.

 
Cura slice button
Depending on the complexity of your model this may take quite a while. After it finishes slicing Cura will give you an estimated print time and filament usage. Click the Save to File button to save your sliced model.
 
Cura sliced XYZ cube save to file
Save your G-Code file to an easy to remember location. We will now slice our miniature model and then we can move on to copying the files to our printer!

The only settings I am going to change for the miniature are the layer height and support. I want to get more detail out of the miniature model so I will print at .1mm layer height. I will also add support to the model because there are some islands that need to be taken care of. First up, we need to open our model in Cura.

 
3D printable miniature loaded in Cura

Next, we need to turn on support for the model.

Cura support settings
Supports can be a complicated affair and require tuning like everything else. For this guide I am leaving the support settings as default from Cura.

Having made our two changes, we can go ahead and slice our model.

3D printable miniature sliced in Cura
In the above picture the different feature types are color coded. The red represents the model’s shell and the aqua color represents the skirt and supports. Now that the model is sliced, we can save it and move on to copying it to our printer.

Copy Your G-Code File to the Printer

Regardless of printer style you will need to get the sliced file you created in the previous section onto the printer for printing. Your printer may use an SD card or a USB stick to read from. Simply copy the sliced file from your computer onto the memory card you use in your printer. Now take the drive and plug it into the printer.


Another option that I highly recommend is using OctoPrint on a Raspberry Pi. OctoPrint will allow you to connect your 3D printer to the network and remotely control and monitor your printer. OctoPrint also allows you to drag and drop your G-Code files in a web interface. That means you don’t have to retrieve the USB drive or SD card from the printer to copy your print files from the computer. Simply drag and drop your G-Code files into the web Interface. Below is an image showing the OctoPrint web interface:

OctoPrint Interface

If you are interested in getting OctoPrint set up for your printer go check out my guide on installing and configuring OctoPrint.

Prepare the Printer

This section will cover steps you need to take before beginning a print. It is not meant as a guide on how to set up your printer out of the box. I will assume you already have your printer unpacked and setup and have completed at least one successful test print.

Visually inspect your printer for any problems. Be sure that all the belts are tight, no components are loose or damaged, and any visible wires are not worn or frayed.

Next, inspect the bed for any damage or problems. Clean off the bed of any debris by blowing it off with a can of compressed air or using a small cloth. I like to use isopropyl alcohol to wipe down the build surface as it helps remove dirt and oils from the build plate.

If you are using a heated glass bed you will need to apply an adhesive. While glue sticks work, I recommend Aqua Net unscented hair spray (Amazon link).  Spray some Aqua Net on a paper towel and then wipe it back and forth on the build plate. Wait 20 seconds and repeat but wipe in a direction perpendicular to the first pass you made. With the heated bed at temperature the model will stick like it’s cemented in place, but as soon as the bed cools down it lifts right off!

Inspect your filament to make sure there are no tangles or breaks. If you want to change filaments now is the time.

Once you are satisfied with the state of your printer move on to the next step.

Print your model

Press Print. Now wait for your print to finish. Technically, this is the easiest step, mentally it can be taxing as you (im)patiently wait for your model to finish. Be sure to keep an eye on your printer especially on the first few layers. If something goes wrong you have a chance to stop it before you end up with a bunch of waster filament.

I used OctoPrint for my models so I’ve included a screen shot of the interface during the print.

Octoprint interface during print

Remove the model from the build plate

After the print has finished, successfully I hope, you need to remove it from the build plate. The method depends on what material you have printed on. If you printed on a PEI sheet you can remove the sheet and lightly twist it to help break the print free. If you printed directly onto your metal bed you may want to use a tool such as a metal putty knife or similar. There are also specific tools that you can purchase to remove prints from the bed. I use a set of Foreasy 3D printer removal tools and they have worked well for me, click here to see them on Amazon.

If you have a heated bed be sure to wait until it completely cools down. Once the bed is cool your print should be easy to remove from the plate without much force.

For my PrintrBot play I have a flexible build plate that I can remove and twist to break the print loose. For the calibration cube I was able to pull it off the plate with a little force. For the miniature I removed my removable build plate and twisted it gently. Then I used my build removal tool to gently pry it off. I was much gentler with the miniature as it is more fragile than the calibration cube.

Calibration cube on the build plate:

Calibration Cube on Build Plate

Sadly, I forgot to take a picture of the miniature on the build plate after printing. However, I do have a picture of the miniature before I removed the supports:

3D printer miniature with supports still on
It is normal to use a moderate amount of force to remove a print from the bed. If, however, you consistently have problems with prints being stuck to the bed you may need to relevel your bed or adjust your Z-offset. You can read my guide on printer calibration for more information.

Perform Any Necessary Post-Processing

Alright! The print is done, you’ve removed it from the bed and it’s ready to go! Except there might be a few strands of filament caused by stringing, or maybe the supports didn’t come off so clean. In these cases, you may want to post process your print. Using sandpaper, sanding sticks, and other methods to clean up your print. The step depends on what you intend to use the print for and how well calibrated your printer is. Your print might be ready to go right off the build plate!

There was no post processing needed for the calibration cube it was fine right off the printer. I haven’t included another picture here because the only difference would be the background.

The miniature did require some work. I had to remove the supports which were not as easy to remove as I was expecting. I didn’t get the retraction settings right so there was also some stringing.

Front side of the print:

3D printed miniature supports removed front

Back side of the print:

3D printed miniature supports removed back
I’m not entirely happy with the quality of this print. The supports were hard to remove and left extra filament on the print. And there was quite a bit of stringing as well. But that’s ok, when we have quality issues, we troubleshoot and try again!


For fun here is a comparison shot of the miniature printed on my PrintrBot compared to the miniature printed on my Elegoo Mars.

Comparison of an FDM printed and SLA printed 3D miniature

So, there we have it. The full step by step guide to printing with your FDM printer! I hope this guide was helpful and I hope you enjoy your new hobby! If you are interested in purchasing a 3D printer, check out my recommended FDM printers here.