While it’s possible to perform every action possible with G-codes, there is no denying that slicer software such as Cura makes things much simpler at times with a user-friendly interface.
Filament change is a fantastic example of this, as it’s usually quicker to configure it in slicer software instead of having to insert the filament change G-code manually in the appropriate sections of the code.
With mid-print filament changes getting more and more popular with many enthusiasts wanting to print colorful models, we decided to cover how you can use this feature in Cura in the quickest and easiest way possible.
So, how to trigger a filament change in Cura?
There are two separate ways to trigger a filament change in Cura.
- Pause at height – Pauses the print at the chosen height (or layer), allowing you to change the filament and continue the printing process afterward.
- Change filament – Triggers the G-code (M600) for changing the filament before the printer starts printing the chosen layer, which unloads the filament and gets the printer ready for filament change.
While both of these methods allow you to change the filament mid-print, the way they operate is different. As a result, choosing between the two comes down to your use case.
How to Trigger a Filament Change in Cura?
You can use either way of triggering a filament change in Cura through the post-processing scripts.
To find these scripts, click Extensions on the top menu, followed by Post Processing, and Modify G-Code. Doing so will open a dialog where you can add post-processing scripts through the Add a script button.
As it’s possible to use either the Pause at Height or the Filament Change script to trigger a filament change, let’s take a deeper look into each of these options to see the differences between the two.
Pause at Height
The Pause at Height post-processing script allows you to choose a height (or layer number) where the printer will pause the printing process until you resume it, allowing you to change the filament during the pause.
Let’s take a quick look at the parameters you will need to configure to use this script, with some being optional.
- Pause at – This allows you to choose between height and layer number for the pausing condition.
- Pause height – Depending on what you have selected for the pause at option, the pause height option allows you to specify the height or layer number for the printing process to pause.
- Pause method – The pause method option allows you to choose the G-code that the slicer will send to your printer, as the G-code for pausing depends on the firmware your printer is running.
- Park Print Head X/Y (Optional) – The park print head X and Y options allow you to choose the coordinates for the nozzle to park before the pause.
- Retraction & Retraction Speed (Optional) – The retraction and retraction speed values you input are what the printer will use after the pause, making it only necessary to change them if the new filament has different requirements.
- Extrude Amount & Extrude Speed (Optional) – The extrude amount and extrude speed values specify the extruder settings for the printing process after the pause.
- Redo Layer (Optional) – The redo layer option causes the printer to redo the last layer after the pause, which can come in handy if you have experienced oozing due to it.
- Standby Temperature (Optional) – The standby temperature option specifies the temperature of the hotend during the pause, which you can either use to increase it further or cool it down.
- G-Code Before/After Pause (Optional) – The G-code before and after pause inputs allow you to invoke custom G-codes, such as playing a beep sound (M300), which can be very useful.
In essence, the pause at height script does what its name suggests; pausing the printing process.
The main reason behind the optional parameters is to adjust the configuration for a new filament with different requirements in terms of retraction and extrusion, which you can leave as default if you’re using the same filament.
While widely used for changing the filament mid-print, you can also feel free to use this post-processing script to pause your print for any other reason you may have.
The Filament Change post-processing script allows you to choose a layer where the slicer will issue the filament change (M600) G-code to the printer before printing the layer.
This G-code causes the printer to park the nozzle, unload the filament, wait for you to load a filament, prime the new filament, and resume the printing process.
Let’s take a quick look at the parameters you can use to configure the filament change script.
- Layer – The layer input allows you to specify the layer where the filament change process will take place. Note that filament change starts before the specified layer.
- Use firmware configuration – Checking this box causes the slicer to use the firmware settings and disables the inputs for the parameters below.
- Initial retraction – The initial retraction input allows you to specify the retraction distance before the nozzle moves into position for the filament change.
- Later retraction distance – The later retraction distance input allows you to specify the distance for filament removal, which you should set to a value that pulls all the filament away from the extruder.
- X / Y / Z positions – The X, Y, and Z position inputs allow you to choose the extruder’s position before the filament change process.
As the filament change essentially invokes a G-code, you can achieve the same effect by issuing the G-code yourself.
The main advantage of using this G-code through the slicer is that it makes the process easier by letting you input the desired layer in a user-friendly format.
While you can also use the filament change script to pause your print for other reasons, we recommend using it only for changing the filament as it issues the filament change G-code to the printer, prompting the printer to unload the filament.
Change Filament vs. Pause at Height in Cura
Even though you can use either change filament or pause at height to trigger a filament change in Cura, they work differently.
While the pause at height script utilizes the stop G-code (such as M0 in Marlin), the change filament scriptsends the filament change (such as M600 in Marlin)G-code to the printer.
Even though Cura allows you to perform similar actions with both of these scripts through extra parameters, such as moving the printhead, there are two significant differences you should consider.
The first difference is that while the pause at height script allows you to specify a layer or a height, the change filament script only lets you input a layer.
The second difference; while pause at heightmerely pauses the printing process, change filament unloads the filament and gets the printer ready for a filament change.
While you can use both of these commands interchangeably, we recommend using the change filament script for filament change as it’s the healthier option.
Pause at Height Not Working in Cura
If the pause at height script in Cura isn’t working for you, you are not alone, as many users in the community have reported issues related to it.
In such a case, here are the things we recommend trying:
- Make sure the pause method is correct for your firmware. For instance, while Marlin uses the M0 G-code for pausing, Repetier uses a special command called @pause. If the command is wrong, the firmware can’t recognize it.
- Try to use the layer option instead of height. The height option is reported to be buggy by many users in the community, which is assumed to be caused by Z-hops throwing the height calculation off.
- Update Cura. It’s always helpful to stay up-to-date, as known bugs are usually fixed with newer versions.
Configuring a filament change in Cura is as easy as it gets once you know where to look, making it an effortless action you can apply to your prints without too much technical complexity.
As there are multiple ways to trigger a filament change in Cura, we highly recommend learning about both of them thoroughly and choosing the one that suits your case the best to get the most optimal results possible.
We hope that you enjoyed this guide, and we will see you next time!
Mike started his 3D printing journey with the Anet A8 when it first came out back in 2017, and has been obsessed with 3D printers ever since. Nowadays, he primarily uses his Ender 3 to print functional parts that make his life more convenient whenever possible.