What Are Cura Post Processing Scripts? (How to Use Them?)

The possibility to implement custom functionalities into Cura, whether it’s in the form of a plugin or a post-processing script, is one of the features that make Cura really stand out in terms of flexibility, as it effectively allows both the 3D printing community as a whole and any individual user (with development knowledge) to bring the features they want to see in Cura themselves.

In this guide, we will discuss the purpose of the post-processing scripts section in Cura in particular, take you through how you can use post-processing scripts for various 3D printing tasks, explain how you can add custom post-processing scripts for usage in Cura, and share with you some of the post-processing scripts that we think are pretty useful to have at hand.

What Are Cura Post Processing Scripts?

In essence, the post-processing scripts section in Cura allows you to use pre-programmed scripts that are capable of automatically injecting G-code commands to run at particular points of the print based on your input, which effectively means that it becomes possible to conveniently modify the G-code file that Cura produces in various ways to accomplish things that Cura doesn’t offer by default.

cura post processing scripts list example


So, provided that you have the suitable post-processing script for the task at hand, you can get your 3D printer to automatically perform any action of your choice during the print, whether it’s displaying the text of your choice on the LCD controller at particular points of the print, getting the printing process to pause at a pre-determined position automatically, using a higher printing temperature value for selected areas of your printed part, or slowing the print speed down after a particular height.

For instance, the Pause at height post-processing script, which is already included in Cura by default, makes it possible to configure Cura in a way that causes your 3D printer to automatically pause the printing process at particular height levels or layer numbers of your choice, which is a feature frequently used for switching to a differently-colored filament at the correct part of the print, without leaving things to chance by going for a manual pause.

cura pause at height config example


To achieve this effect, it inserts the G-code command you have selected through the Method dropdown, such as M0 for Marlin Firmware, right before the exact point where the Layer Number or Height you have chosen starts, causing your 3D printer to pause as a result of running the command that the plugin has added to the file G-code file.

To learn more about how the Pause at height script works or how Cura post-processing scripts work in general, which should greatly help you write your own post-processing script (if you’re interested in implementing your own custom functionality into Cura), we highly recommend referring to the source code, which includes comments to make things much easier to understand.

cura pause at height gcode example


Another example of a widely-used post-processing script that doesn’t come with Cura by default is a Temperature Tower script, such as TempFanTower from the Calibration Shapes plugin, which effectively makes it possible to carry out the 3D printing process with distinct printing temperature (and fan speed) values for each section of the print based on the layer numbers of your choice, often used for printing a temperature tower 3D model that’s split into several sections for the purposes of testing different printing temperature values in a single print.

To make the automatic temperature changes possible, the script locates the layers where the temperature changes should happen based on your configuration and inserts the M104 G-code, which is the command to set the hotend temperature in Marlin Firmware, into the corresponding areas of the G-code file Cura produces.

cura tempfantower script gcode example


While a post-processing script is usually designed for one purpose alone, like the examples we have gone through so far, which does mean that you’re limited to an extent by the functionalities of the post-processing scripts you have access to, the option to create a post-processing script for practically any purpose, combined with Cura allowing the usage of multiple post-processing scripts at the same time effectively means that the possibilities are endless, which is what makes this feature such a flexible and powerful tool.

How to Use Cura Post Processing Scripts?

Using the post-processing scripts feature of Cura is as easy as adjusting the print settings, as you can easily add and configure the script of your choice with the clicks of a few buttons at most.

To start, click the Extensions button located on the top menubar, hover over the Post Processing option, and click on the Modify G-Code option that appears to the right.

cura opening the post processing section


Next, click on the post-processing script of your choice from the dropdown list that appears once you click the Add a script button, which will activate the script and keep it enabled for all of your prints until you remove it from the list by clicking the X button next to it.

cura post processing scripts dropdown


Finally, configure the post-processing scripts through the inputs that appear on the right pane, which will be different for each of the distinct post-processing scripts you can find, and repeat this process for all the post-processing scripts you would like to activate.

cura pause at height config example


Adding Custom Post Processing Scripts to Cura

While Cura comes with some pretty handy post-processing scripts by default, you aren’t limited to this selection by any means, as it’s entirely possible to import the post-processing scripts that you have written yourself or found online into Cura for usage.

To add custom post-processing scripts to Cura, the first step you will need to take is to click the Help button on the top menubar and choose the Show Configuration Folder option from the dropdown menu.

cura show configuration folder


Once the file explorer window pops up, which will take you directly to your Cura installation folder, open up the scripts folder, which is the location that Cura looks at for custom post-processing script files.

cura installation folder


Next, copy the custom post-processing script of your choice into this folder, whether it’s a script you have written yourself or found online while ensuring that the script file isn’t in an archive (such as a ZIP file or RAR file).

adding post processing scripts to cura scripts folder


Finally, restart Cura, and verify that you can find the script you have added in the Post-Processing section, concluding the process of adding a new custom post-processing script to your Cura installation.

cura verifying that post processing script is added


Useful Cura Post Processing Scripts

Below, you can find some of the post-processing scripts that we think are worthy additions to the default collection with the unique features they offer, and even though you most likely won’t use these post-processing scripts frequently, they will be handy to keep at hand for when the need arises.

Tower Scripts (Retraction / Temperature / Print Speed / Fan Speed)

Tower scripts make it possible to automatically increase or decrease the values of print settings such as retraction speed/distance, temperature, print speed, and fan speed progressively during the print based on the layer number, effectively making the usage of multiple distinct retraction speed/distance, temperature, print speed, and fan speed values for a single print.

Together with tower 3D models, these scripts serve the purpose of making it more convenient to test how changing a particular print setting impacts the quality of the print without the need for printing multiple 3D models, with each “section” of the tower representing a different value based on how you configure the script.

For instance, when you activate the RetractTower script, you can get your 3D printer to use distinct retraction speed or retraction distance values for different portions of your print.

cura retracttower config example


Combined with the retraction tower 3D model, which consists of five sections, you can test five distinct retraction speed or retraction distance values in a single print and calibrate your slicer settings accordingly.

cura calibration shapes retraction tower


You can find all these tower scripts bundled with the 3D models required to print the towers in the Calibration Shapes plugin for Cura.

Slow Z

The Slow Z post-processing script makes it possible to automatically slow the print speed down once your 3D printer reaches a certain height of the print.

cura slow z post processing script


This effect comes in pretty handy when printing 3D models that get thinner as they get taller, as printing such thin layers too quickly can create layer adhesion problems that you would otherwise need to resolve by utilizing features such as minimum layer time.

You can obtain the Slow Z post-processing script by visiting its GitHub page.

Multi Brim

The Multi Brim post-processing script allows you to print more than a single brim.

cura multi brim post processing script


In scenarios where the thickness of a single layer isn’t sufficient for the brim to completely prevent warping, adding an extra brim layer or two can solve the problem you’re experiencing in a quick and convenient way, which makes this post-processing script a fantastic tool to have at hand.

You can obtain the Multi Brim post-processing script by visiting its GitHub page.

Conclusion

We can consider the post-processing scripts feature in Cura to be the ultimate customization tool that makes it possible to adjust a G-code file in almost any way possible, whether it’s injecting a G-code command for the 3D printer to pause at a particular layer number, or dynamically changing the temperature as the print progresses.

While you will need to be familiar with a supported programming language, such as Python, to create your own post-processing scripts, it shouldn’t really be necessary to go down this route unless the functionality you’re looking to implement is a niche one that nobody in the community has shared a script for so far.