Watch this "Ethan Makes" video to see the plugin in action:
If you like this thing, please, please subscribe to the 3D Printing YouTube channel "Ethan Makes". The kid really needs your support, and his goal is to reach 500 subscribers:
UPDATED v3.4: If your plugin doesn't display a version, it's v1.0. The latest version is v3.4. Please keep coming back for updates or click the Watch button.
"ChangeAtHeight.py" is the Cura 3 and Cura 2 version of the plugin. "changeAtZ.py" is the legacy Cura 16 and Cura 15 version.
DESCRIPTION: With a single extruder printer, sometimes you want to switch filaments during a print to make something a little different or just pause at a particular layer to insert something.
The plugin, once installed into your Cura
plugins\PostProcessingPlugin\scripts folder, shows up as the "Change filament at height" plugin. Read the full installation instructions below.
Usage (with default settings):
- Switch to the layer view and determine the layer which you want to pause at. It will pause at the beginning of the layer that you choose.
- From Cura's main menu, choose Extensions->Post Processing->Modify G-Ccode
- Click the "Add a script" button
- Choose "Change filament at height"
- Enter the desired layer in the "Pause at layer" box
- Choose the Pause/Change method. Read more about this below.
- Click the "Close" button
- For additional pauses, simply repeat
- Save the G-Code file to an SD card
- M25 "Pause SD Print" (Default) This method gives you the most control, but you must be printing from an SD card since it uses the SD pause command. This is the default method and the one that you should use if your printer supports it. Using this method, you resume the printer using the Resume/Continue Print function on your printer's controller. Therefore, while paused, you still have full access to other controller functions such as temperature and moving the axis.
- M0 "Stop" Using this method, you resume the printer simply by pressing the selection button on your controller. Since you cannot use the other controller functions while paused, this method is less ideal, however, it's supported on most printers (like the CR-10 and the Prusa MK3). Only use this method for filament changes if you can manually change the filament without needing controller functions. Works great if you just want to pause. It can also be used if you're not printing from the SD card, unlike the M25 method.
- M600 "Filament Change" This method simply inserts the M600 Filament Change command at the desired layer and your printer takes over from there. This gives you the least control, but if your printer has a nice implementation of M600, this is easily the simplest method if you want to change the filament. You shouldn't use this method if you just want to pause the printer (try M0 instead).
The "Cool extruder on pause" feature is not compatible with multiple extruders. It won't know which extruder to heat back up or which temp to use. So, disable that feature if you're using multiple extruders.
Printer (M25 Method):
- Print the file from the SD card
- The printer will pause at the designated layer, turn off the extruder heat to avoid burning the filament in the nozzle, then beep to get your attention
- On the printer's control box, under the SD Card menu, choose "Continue Print". The printer will lock the stepper motors then beep. If you are inserting items, now's the time to do it.
- When you are ready to change filament or resume, choose "Continue Print" again, and your extruder will start heating back up to temperature. Once the extruder is at temperature, the printer will lock the stepper motors then beep again. If you are changing filament, now's the time to do it.
- Once you've changed the filament or are ready to resume, choose "Continue Print". The plugin will immediately prime the nozzle, then beep again.
- Wipe the nozzle then choose "Continue Print" the final time to resume the print.
In summary, here's the sequence each time you "Continue Print":
- Lock stepper motors (insert items)
- Heat up extruder (wait for it...) then lock stepper motors (change filament)
- Prime nozzle (wipe)
- Resume print
If you're using the M0 method, you'll use the button on the controller to resume. If you're using the M600 method, your printer will mostly likely walk you through the process of changing the filament.
See the photo of my dragon print for an example of how well it works. The print was tiny. The photo shows the print sitting on my computer keyboard.
Here's the project that I actually designed this plugin for:
Personalized Glowing Valentines for Kids Remake
Here are my latest change filament projects:
Magnetic Construction Toys
No Soliciting Girl Scout Cookies Sign
IMPORTANT: If you set a value for "Move print head Z", it will attempt to raise the nozzle by that amount from the current z height, up to the max your printer allows. Leave the "Move print head Z" parameter at 5mm to move the head up 5mm from the print before parking. Setting it to 0 still raises it a minimum of 1 layer. If the current z height plus the value that you enter is less than 25mm, it will raise up to a minimum of 25mm so that you have room to work under the nozzle. If you put in a large value, you could possibly ruin your print or damage your cables (if your printer configuration reports a larger max Z than it actually allows because of cables, extruder height, etc.). Avoid using X and Y of 0 and 0 because your printer may hit your limit switches, causing it to lose a step or two. For my printer, Park X and Y of 10 and 10 puts it in the front left. 190 and 190 puts it in the back right (depends on your bed size). The M25 method only pauses if you are printing from an SD card or Octoprint.
INSTALLATION INSTRUCTIONS (Cura 4, 3, or 2): To install, simply close down Cura, drop the ChangeAtHeight.py file into the Cura PostProcessingPlugin plugins folder, then restart Cura. My plugins folder, using the default path, was at:
C:\Program Files\Ultimaker Cura 3.x\plugins\PostProcessingPlugin\scripts for Cura 4.x and 3.x and
C:\Program Files\Cura 2.x\plugins\PostProcessingPlugin\scripts for Cura 2.x.
- Wanhao Duplicator i3
- Wanhao Duplicator i3 Plus
- Monoprice Maker Select
- Balco 3D Printer
- Balco 3D Printer Touch
- Prusa i3 MK2
- Anet A8
- (Most Repetier based firmware printers)
- Prusa i3 MK3 (Pause only)
- (Most Marlin based firmware printers)
- Prusa i3 MK3
- LulzBot TAZ 5
- (Some Marlin based firmware printers)
If you have a compatible printer and this plugin works for you, please let me know so that I can add it.
- If you are using the M25 method and you are not printing from an SD card, this plugin will not work! It will not pause! You must print from an SD card (or with Octoprint)
- Some versions of Cura have a bug and don't automatically reslice when you add the post processing plugin to your project. You may need to force Cura to reslice. This can easily be done by, e.g. turning retraction on and off.
- If you are printing a large model, you may wish to ensure that the pause is present in your G-Code file before you start the print. Simply open up the G-Code file in a text editor and search for the text "CUSTOM" to find the G-Code that was added by the plugin.
- You will need to install the plugin for each version of Cura that you install onto your computer.
- The plugin pauses at the beginning of the layer that you choose.
- If the layers in Cura's layer preview are behaving strangely, try turning off "Use Adaptive Layers".
Version 3.4 Changes:
- Added support for multiple models in "One at a Time" mode
- Added support for "Relative Extrusion" mode
- Improved timing of beeps by using M400 command
Version 3.3 Changes:
- Fixed bug where the plugin wasn't starting at the proper layer if you were using a raft
- Added support for additional pause commands to support more printers (M25, M0, and M600)
- Added option to to just pause or to change filament (with M25 and M0 methods)
Version 3.2 Changes:
- Fixed bug where the plugin wasn't looking for resets to the extruder position in the middle of the print (why, Cura?), so it was setting the extruder value to the wrong value when resuming print (Thank you, papavomsee)
Version 3.1 Changes:
- Fixed bug where the plugin wasn't finding extruder temperatures before the first layer, so it wasn't resuming at the correct extruder temperature for some users. (Thank you, poswald, eyal3388, and alexanderfreddy25)
Version 3.0 Changes:
- Added option to choose the layer by layer number or by height (Now defaults to "Layer" because it's so much easier. Just use the layer preview. No more maths!) (Thanks for the motivation, RustyCrackleford)
- Added option to cool the extruder on pause (On by default) (Thanks for the suggestion, RustyCrackleford)
- Added option to turn off the beep
Version 2.0 Changes:
- Added retraction parameters for greater control and especially for those with Bowden tube printers
- Added retraction distance parameter
- Added extrusion distance parameter
- Added prime distance parameter
- Lowered default retraction (and extrusion) from 7mm to 5mm
Version 1.3 Changes:
- Added retraction immediately after the cleanup stage to mitigate any oozing while it moves to the resume location
Version 1.2 Changes:
- Reset the extruder position in case the last movement was a retraction, which avoids extruding extra material when it restarts
- Fixed to work with multiple filament changes (at different heights) in the same project
Version 1.1 Changes:
- Renamed the "Head park Z" parameter to "Head move Z" to more accurately portray what the parameter does
- Ensure that we always raise at least 1 layer
- Ignore negative values for all parameters (defaults to 0)
- Changed default "Head move Z" value from 0 to 5
Cura 15 and 16 are no longer supported and will not receive updates for this plugin.
Legacy Cura 15/16 Change Height at Z v2.0 Plugin
Cura 15 INSTALLATION: To see the plugins, you'll need to switch from "Quick print" to "Full settings" in the Expert menu. To install, simply close down Cura, drop the changeAtZ.py file into the Cura plugins folder, then restart Cura. My plugins folder, using the default path, was at: C:\Program Files (x86)\monoprice\IIIP\IIIP15.01\plugins
The plugins folder for the downloaded version of Cura 15 was at: C:\Program Files (x86)\Cura_15.04.6\plugins
Interestingly, the plugins folder is not IN the Cura folder, but next to it.
(Wanhao) Cura 16 INSTALLATION: To see the plugins, you'll need to switch from "Quick print" to "Full settings" in the Expert menu. To install, simply close down Cura, drop the changeAtZ.py file into the Cura plugins folder, then restart Cura. My plugins folder, using the default path, was at:C:\Program Files (x86)\WANHAO 3D PRINTER\WANHAO-16.01\wanhao-cura\plugins