Exploring Multi-Color Gradient Printing: How To Use Multiple Colors in One Print!

edited October 2023 in 3D Printers

As 3D printing continues its rapid advancement, the development of multi-color printing stands as one of its most striking progressions. This feature is readily available from a multitude of manufacturers. However, should your printer lack this function, don't despair. The creative community of 3D printing enthusiasts has devised innovative methods to work around this issue. All you need is a bit of patience, a willingness to accept some limitations, and a single extruder and nozzle. Gradient printing uses simple G-code modifications for manual filament changes to produce striking effects. 

In simple terms, gradient printing instructs your 3D printer to pause at designated layers to change the filament color. This technique produces a multi-color effect with a simple single nozzle setup. Why choose this method? Without a printer with multiple extruders or nozzles, you face limited options for multi-color printing unless you opt for expensive hardware upgrades.

Moreover, this process offers an enriching learning opportunity. It provides experience working with G-code and enhancing your overall skillset in the 3D printing sphere. By adding this method to your skillset, you'll expand your horizons, ready to tackle any printing challenge with greater flexibility and adaptability.

While this technique may appear daunting for 3D printing novices, our comprehensive guide will break down each step to make it simple. We'll delve into the basics of G-code and STL files, explain the filament-changing procedure, and provide solutions for common problems. So, let's delve into the fascinating world of gradient printing.

Manually Altering G-code for Filament Changes

To facilitate manual filament changes, you'll need to modify the G-code, the language that instructs your 3D printer when and where to move. Below, we'll walk through the steps to add pauses at specific layers for filament swaps. We will be using a Safety Whistle print as our example for this guide, but you can apply these steps to any print.

Printer/Firmware: Creality Ender 3 V2 / Marlin

Step 1: Identify the Layers for Color Change

Start by opening your 3D model in your slicer platform. The slicer software will break down your model into layers. Identify the layers where you'd like to change the filament color.

We will pause before layers 9 and 33 for this model.

Step 2: Export the G-code

Once you've determined where you want the color changes to occur, slice your model and export the G-code.

Step 3: Open the G-code in a Text Editor

Next, open the exported G-code file in a text editor. The G-code is just plain text, so any text editor will work, though one with syntax highlighting, like Notepad++ or Sublime Text, will make the task easier.

Step 4: Locate the Layers for Color Change

In the G-code file, you'll see a series of commands. Comments such as "; Layer:9" demarcate layers, though this can vary based on the slicer software in use. Search for the layers where you intend to change the filament color.

Example: pause command inserted before the start of Layer:9

Step 5: Insert Pause Commands

After determining the appropriate layers, you must introduce a 'pause' command at these locations. The specific command you'll use depends on your printer's firmware. For instance, in this guide, we're using Marlin firmware. If your printer operates on different firmware, use the commands corresponding to your system.

Insert the command in a new line as follows:

;***************** Begin Pause Command ****************

M83 ; switch to relative E values for any needed retraction

M104 S200 ; standby temperature

M18 S1800 ; Set the disarm timeout

M25 ; Do the actual pause

M109 S188 ; resume temperature

G1 F3000 ; restore extrusion feed-rate

M82 ; switch back to absolute E values

G92 E849.31692 ; sets current extruder position for sync

;***************** End Pause Command *******************

Step 6: Save and Print

Once you've added the necessary commands, it's time to save your G-code file. Then, load this saved file into your printer and begin printing. The printer should halt at the specified layers, allowing you to swap out the filament.

Remember, when the printer pauses, it needs your intervention. This means you'll have to pull out the existing filament and insert the new one before you can continue printing. Additionally, it's crucial to remove any expelled filament before resuming. This step ensures the extruder path remains unblocked and the printing continues smoothly.

Note: Always double-check your edited G-code and ensure the filament change commands are at the correct layers. Mistakes could lead to print failure.

Adding a Pause with Cura

If you don't feel ready to edit your G-code, you can use Cura's "Pause at Height" function.

  • Start by opening your Cura software
  • Load your 3D model into the Cura workspace
  • On the right side of the screen, select the "Prepare" mode in the top right corner if it's not selected already
  • Navigate to the "Extensions" menu at the top of the screen
  • In the dropdown menu, select "Post Processing" then "Modify G-code"
  • A new window will open. Here, click on "Add a script"
  • From the dropdown menu, select "Pause at Height"
  • Fill in the parameters and the platform will add the pause to your G-code

Final Thoughts

3D printing consistently evolves, providing users with opportunities for innovation. Gradient printing gives the ability to achieve multi-color printing using simple, entry-level equipment.

Throughout this guide, we've discussed G-code editing and the necessary steps to modify it, allowing for strategic pauses at desired layers. A practical example of a multi-colored whistle print illustrates this process.

As you continue multi-color printing, keep these points in mind:

  1. Identifying Color Change Layers: Employ your slicer software to scrutinize your model layer by layer, deciding the precise points for color transitions.
  2. Responsible G-code Editing: Make sure to meticulously review your G-code after each modification to avert potential errors that could result in print failures or even printer damage.
  3. Preparing for Manual Intervention: Be ready when the printer pauses for you to step in and change the filament. This process demands careful attention to ensure accuracy.

Refrain from being discouraged by initial errors or less-than-perfect prints; mastering G-code manipulation and the filament-changing process is part of the learning journey.

With persistence and careful attention, you'll tap into new creative possibilities with your 3D printer, exceeding the supposed limitations of a single extruder and nozzle. Multi-color 3D printing awaits your exploration. Happy printing!


G-code commands explained

M83: This command switches the extruder to use relative E values for any needed retraction. Subsequent extrusion movements interpret relative values from the current position of the extruder rather than absolute values.

M104 S200: This command sets the standby temperature of the extruder to 200°C during the pause. The extruder maintains a slightly elevated temperature to prevent the filament from solidifying or clogging while the print is paused.

M18 S1800: This command sets the disarm timeout for the stepper motors to 1800 seconds (30 minutes). It specifies the duration after which the stepper motors will be disabled if the pause continues for an extended period.

M25: This command initiates the actual pause in the print. It stops the execution of the G-code from the SD card or host software and waits for further instructions or a resume command.

M109 S188: This command sets the target temperature of the extruder to 188°C for the print resume. It ensures the extruder reaches and maintains the desired temperature before resuming the print.

G1 F3000: This command sets the extrusion feed rate to 3000mm/min. It restores the extrusion speed or feed rate to the desired value for the resumed print.

M82: This command returns the extruder to using absolute E values for extrusion movements. It ensures that the printer interprets subsequent extrusion movements as absolute values rather than relative ones.

G92 E849.31692: This command sets the current extruder position to E=849.31692. It synchronizes the extruder position after the pause to avoid any discrepancies.

Source for 3D print model

Big thanks to ThreeD-Michael for this model and Image

Looking for more information on 3D printing? We’ve got a 3D Printer section of the community, as well as plenty of guides and tips like 3D Printing with ResinSetting Up Your Printer with the Torture Toaster, and How to Choose a 3D Printer! And if you can’t find what you’re looking for, don’t hesitate to post a new discussion and the Community will be happy to help!


We love seeing what our customers build

Submit photos and a description of your PC to our build showcase

Submit Now
Looking for a little inspiration?

See other custom PC builds and get some ideas for what can be done

View Build Showcase


If You Can Dream it, We Can Build it.

Services starting at $149.99