Understanding 3D Printing

This is a discussion of how 3D printers work. This article only covers ‘fused filament’ printers - devices that build a 3D object by melting some kind of plastic filament and depositing layers of this plastic onto a build plate. These layers almost immediately cool and solidify into the printed object.

There are other (very interesting) types of 3D printers, but we’re not going to discuss them in this article.

Motion Control

3D printers and CNC mills work on the same principle; use three-axis control to orient a tool in space relative to a target, and modify that space with the tool [1].

For most mainstream (cartesian) 3D printers [2], this means an X-axis (left-right), a Y-axis (forward-back), and a Z-axis (up-down). The idea is to position the tool very precisely in 3D space by moving it along these three axes.

The easiest way to imagine this being done is by moving a tool along all three axes above a static build plate. For practical reasons, printers are not often designed this way.

One common design is to move the toolhead along the X and Y axes while the build plate is moved up and down along the Z axis.

Another moves the toolhead along the Z and X (or Y) axes while the build plate is moved along the Y (or X) axis.

All motion control systems must make consistent movements. This is relatively easy to do today. Stepper motors are a class of motor that move in discrete steps [3]. Even relatively low-cost stepper motors produce very reliable and repeatable motion in two directions.

Other qualities that we use to evaluate 3D printer motion systems are rigidity (the ability to resist droop/sag), speed, and the amount of vibration (and noise) generated during motion.

Two other real-world factors that strongly influence desktop 3D printer design today are cost and weight.

Popular 3D printers today fall short of an ideal system, but their motion control systems have improved steadily as manufacturers and hobbyists develop new ideas, and as better technology becomes more affordable because of scaling demand.

A good example of this is the migration from laser-cut plywood to metal, or the adoption of linear rails for control.

Even if cost were not a concern, the weight of the motion control system has a relationship with the maximum speed of the device. Speed and rigidity are trade offs that need to be balanced in the design of a printer. There are also practical limits to a hotend’s ability to place material precisely that allow us to call a motion control system good enough.

Hotend and Extruder

While the motion control system used by a printer has a lot in common with other systems, the tool head - hotend and extruder - is specific to 3D printing.

There are a lot of implementation details that differentiate hotend/extruder systems, but the principal behind them are all similar. On a fused filament 3D printer, the extruder pushes filament into the hotend. The hotend melts the filament and guides it through an aperture to produce a uniform line of material.

Printers are typically designed with a specific hotend/extruder in mind, but for many printers, you can upgrade or swap out these components easily.


The extruder is typically a stepper motor connected to a hobbed bolt or geared teeth. The goal is to move the filament very precisely without slipping. A common failure mode when printing is for the filament to slip, or worse, for the teeth moving the filament to carve into the filament and for the filament to stop moving entirely.

One major design decision in a printer is whether the hotend should be directly connected to the extruder (direct drive) or mounted separately from the extruder via a Bowden tube. Direct drive is a simpler design, but non-direct implementations allow the system to mount the extruder elsewhere and make the tool - the hotend that the motion control system needs to position - much lighter.

Most 3D printing filament is rather rigid and moves easily through any extruder. There are a class of filament materials, like Ninjaflex, that are very flexible. To print this material successfully, it is important that the path the filament follows through the extruder is as short and straight as possible, so there is no room for the filament to kink.

When selecting an extruder, key factors are cost, weight and complexity, as well as whether you require support for flexible filament. Heavier or more complicated extruder mechanisms may grip the filament better, but are also more difficult to clear out when they jam.


Looking at a cross-section of a hotend, you’ll see they typically are designed with three zones in mind. The cold zone, where the filament enters the hotend. The melting zone, where the filament is heated, and the nozzle.

The aperture of the printer nozzle determines the width of the filament line the printer lays down. Small apertures result in more detailed, slower prints. As a general rule, apertures that are smaller than 0.4mm are also more likely to clog or jam.

Large apertures result in faster, less detailed prints. It is possible to print at apertures that are larger than the filament size. However, larger apertures require the hotend to melt a much larger volume of material than a smaller aperture in the same time period. Some hotend manufacturers produce high flow hotends for this purpose with stronger heating elements.

The hotend is typically set and maintained at a specific temperature for an entire print. This printing temperature depends on the material used. Each material has a recommended temperature range. Roughly, use PLA at 200C, ABS at 230C and other materials like PEEK require a temperature as high as 400C.

When selecting a hotend, temperature stability, ease of maintenance, the max temperature, and flow rate are important considerations.

Multiple Filaments

Most 3D printing is done with a single filament type for the whole print. However, some printers have multiple hotend+extrusion heads and can print several materials at once. This can be done to print in multiple colors, or make an object out of materials with different properties.

Advanced printers are also experimenting with hardware and techniques that allow multiple filaments to be used through the same extruder.

3D Printing Toolchain

Aside from the mechanics and tool head that drive a 3D printer, software is needed to create a design and export that design in a format that the 3D printer can use.

While some 3D printers have software tailored specifically for their hardware, many printers can use a range of software. In order to get from print to final product, the process is to create a design in a CAD tool, export a 3D model, and then convert the model to machine code for printing.

Model Creation

It is not necessary to create your own designs. Sites like YouMagine and Thingiverse host an incredible number of files you can use to get started. You should learn how to do this anyway!

Part design is typically done with CAD software. There are a range of programs you can use that are free or low cost; this includes TinkerCAD, Autodesk Fusion 360, or for something completely different, OpenSCAD.

This software can be used to design parts for ‘traditional’ manufacture (milling, routing) or 3D printing.

It is also possible use with software that is more focused on 3D modeling; tools like Cheetah3D and Blender are used by artists and animators. This software is generally better at ‘sculpting’ digitally but less efficient at making precise mechanical parts.

If you want to experiment with 3D design on an iPad, there are a range of interesting tools available; the list includes Shapr3D and uMake.

Model Export

Data files are commonly shared via the .STL format. All of the programs listed above can export objects in STL. STL is a mesh format that describes the shape of the file you’d like to build. It is important to note that a lot of information is “lost” when a CAD file is exported to .STL.

While .STL files preserve the shape of the object you have created (with a degree of fidelity you can specify), it does not describe design intent or the steps followed to create a shape. While you can import an STL into a CAD program, it is often easier to start over from scratch if you do not have the original CAD file.


before it can be printed. Slicing turns the geometric ‘mesh’ file into machine code, a list of instructions that tells the printer where to move the tool head, when to extrude material, and the right temperature for the hotend.

The most common format for these instructions is called “gcode”... because many of the commands (the ones that relate to moving the toolhead) are prefixed with the letter G. gcode is the same format that CNC mills and router use, and unlike a .STL file, you can read (and edit) gCODE in a text editor.

Here's an example of what gcode looks like:

G0 F3600 X108.179 Y61.217 Z0.3
G1 F1500 E0
G1 F1800 X108.597 Y60.546 E0.03944
G1 X109.08 Y59.922 E0.07881
G1 X109.623 Y59.349 E0.11819
G1 X110.222 Y58.834 E0.1576
G1 X110.87 Y58.383 E0.19699
G1 X111.561 Y57.999 E0.23643
G1 X112.286 Y57.687 E0.27581
G1 X113.039 Y57.45 E0.31519
G1 X113.813 Y57.291 E0.35461

There are a range of slicers out there that allow you to import a STL file, place the object on your print bed, and generate gcode for the printer. Leading free and open source applications include Cura and Slic3r.

While an STL file can be used on any printer, the gcode file you generate takes the specifics of your printer into account and may not be usable on another make/model of printer (and in the most extreme case, could actually damage your printer if configured improperly).

Troubleshooting Prints

It is common when you first start printing to have difficulty getting your prints to succeed. Some designs are much harder to print than others (or impossible to print), so start with something simple, like a cube.

In my experience, getting the first few layers of a print to stick successfully to the print bed is one of the biggest hurdles for newcomers. Many people use blue tape and hairspray (any kind) or a gluestick, or dedicated substancesto get their prints to stick. There is no shame in this.

The easiest way to get help is to talk to someone who has more experience with printing than you do. This site is also a great resource for diagnosing failed prints.

[1] - Laser cutters and inkjet printers also work the same way except they only provide x-y axis control.

[2] - https://makezine.com/2015/03/10/cartesian-delta-polar-common-3d-printers/

[3] - Think of a step as the tick of a second hand on a clock, if it helps.