MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


Change Filament At Z Cura Plugin

by rawlogic Feb 1, 2017
Download All Files

Thing Apps Enabled

Please Login to Comment

and thanks for sharing !
I'm looking for a script that would just swap extruder at height (or layer number) on a UM3 with dual extruder.
I thought this script would let me do just that but it seems to be only for swaping filament on a single extruder printer.
Would it be difficult to implement a "Swap extruder" option in the "Pause/Change method" field ?


Hi, thanks for the working on a great plugin. I tried it with Cura 4.1 for my CR10S Pro. When the height was reached, the print head simply paused, went to the position, then go back to print again. The control panel of CR10S Pro is different from CR10S, so I could not see anything display on screen when the print head pause. There is no way for me to stop or continue for filament change. Would it be possible for you to update the file with CR10S Pro? Many thanks!!

This plugin worked just fine on my Voron 2.1 running Ramps x2 and Klipper fw. I've only tested this plugin when printing from Virtual SD with great results

not sure its ok to ask here but anyway.
I am using the old Cura (15.04) and using the function to change the filament colour , works great. But, here my question
: is it possible to implement a function to reduce the temperature of the nozzle to value X when pause ?
Reason, when printing with wood pla and the printer stops as commaned at the set height the wood burns in the nozzle if
you are not staying next to it to change to the other colour / Typ of wood.

Unfortunetly i have no idea about that kind of programming and it would be a nice extra especially with temerature sensetive materials.

Just an Idea from someone without programming skills ...

Thank you for reading this.

This is about as awesome as it gets! I broke my micro USB slot by using one of those stupid (and cumbersome) ribbon cable extension / SD card thingies. Since then, I've been printing over USB (gonna get raspberry pi someday). Surprisingly, this plugin works by USB on my Ender 3 - no problem. Doing the stop (layer) M0 filament change (checked) on Cura 4.1.0 beta. Chose to keep the end hot (checked) so I don't have to monitor when to do a change. Parked Y at 190 so I could look over my prints. Left all other settings alone. There's no beep as I de-soldered the bell. Why the heck doesn't Creality get rid of those micro-SD slots? They truly suck.

As a side note, I'm using the new Th3d Marlin firmware that I flashed. Take a look:


Ok so in the spirit of full disclosure, and because it is not, nor has it ever been my desire to bash the dev of this plug in, but rather share my experiences with it on a STOCK ender-3 pro, I need to update my experiences with this plugin to reflect the REALITY of what went wrong, and hopefully save other new ender-3 owners from the same frustration.

Before I do that I want to extend my sincerest apologies to the dev for the shortness of my complaints/rant/posts. SO to rawlogic, I am sincerely sorry for going off the rails here. I broke the cardinal rule of partaking in freeware, and that was to complain about it in any way shape or form. It's freaking free. If you don't like it, you are supposed to move along. I failed to do that. So, in an effort to try and make that right, I would like to offer my findings, and help you help me figure out what might be the issue with the ender-3 implementation, so please reach out if you are so inclined and need someone like me to try things out to try and make it better.

It appears that the stock ender-3 firmware is to blame here.

I spent the day flashing TH3D firmware to my brand new ender-3 pro, not because of this plugin, but because I was getting the thermal protection warning whenever I launched Octoprint, so I decided to get off this stock firmware to keep from causing an issue with thermal runaway.

After that was complete, I decided to give this plugin another try and my results are mixed so far, but I do believe there is hope for ender-3 owners.

My first attempt was re-slicing the same part I listed the gcode for in an earlier post, and I used the M25 variant, from an SD card (not Octoprint). It made it through all of the steps, right up to the point where it was going to resume actual printing, and then the print head raised back up, and parked itself at the coordinates I set for the filament change step, and then it just went in to cool down mode and I could not resume from there. No big deal, it was 7 layers of an easy print.

My 2nd Attempt was using the M0 method, and printing from Octoprint.
The only mistake, is self induced, as I failed to get enough filament down to the extruder when I changed the filament. So what happened is, the printer resumed at the correct z height, but was not extruding for the first few steps, but it caught up and started extruding before that layer was done. It appears to have picked up where it should have, and it looks like this may in fact work.

The 2nd (of 2) pause at height steps was done (semi) right. I got enough filament down the tube, but for whatever reason, the extrude/purge/prime step didn't happen, and it appears that is probably what happened on the first layer as well.

So the end result is a proper color change, but I am missing the prime step(s) which purge the old color and ready the new color.

Attached is a pic of what my first clor change printing TPU looks like. If you have any ideas why the purge/prime isn't happening, I am all ears.

Again, I apologize for ranting, but thought you deserved to know that your work is not at fault here, but rather it appears that stock Ender-3 firmware is the culprit.

Ok I have crashed my printer for the last time using this plugin. If you have an Ender-3 Pro, like I do, run from this plugin if you value your print bed/surface. There has to be better options than this, which seems like a poorly implemented and not very well supported attempt.

I am attaching my gcode in case the dev sees this post, but I am beyond frustrated with this.... The first pause happens at layer 7

Thank you for attaching the gcode file. It looks like the plugin is working correctly. Perhaps the M25 implementation on your printer is buggy and loses the position. Try using the M0 method, which works on most printers, or see if the M600 method is supported.

I tried both of the M600 and M0 methods, as well as the M25 method and they ALL cause the printer to crash the Z axis and nozzle right through the print. I would not have even commented here if the plugin simply didn't work, I would have moved on to something else, but the fact that all 3 methods have resulted in a crater on my build plate, or nearly so, had I not been quick on the power button, I felt the need to share MY experience with this plugin. I'd really like this to work, but sadly it just doesnt, and I am not the only one with an Ender-3 Pro who has raised these concerns.

I've added the Ender 3 to the list of unsupported printers for now. When I can, I'll try to dig into the Ender 3 firmware to see what's going on.

Various models of the Ender have come up in comments, the M25 code seems to be a common issue. I don't have an Ender 3 to confirm, and rawlogic has said he has several printers but not an Ender. So really all he can do is rely on users adding feedback and constructive criticism. If you want it to work with your printer, it would help if you did a little of your own research and possibly stepped through his plugin code rather than just handing gcode off to someone else. The plugin is really straightforward code, and based on what you're seeing you might find the issue you're having right away and he'll have a version that includes your fix with you to thank for it.

"instead of just handing gcode off to someone else" ?
Who would that "someone else" be in this discussion?

"constructive criticism"?
Is that what you just did here is considered?

I may be confused.......But I don't see much "constructive" criticism in your reply..... Perhaps I missed it... I will indeed read it again.

"instead of just handing gcode off to someone else" ? "Who would that "someone else" be in this discussion?"

rawlogic (the dev, who posted this plugin), or anyone else willing to open up your gcode file. Did you not post a gcode file in your comment, handing it off to someone else (rawlogic) for him to look at?

"constructive criticism"? "Is that what you just did here is considered?"
Most definitely not. But I'm not the one here trying to get help. The only constructive criticism I implied was that you should try to help him help you. Your comment was only griping and demanding (or maybe I should go back and read yours again... wait for it... yep, re-read, nothing but whining.). He does not have your printer, how do you expect him to just fix your problem? Do a little dirty work and look up the gcodes for your printer, compare to the output you blindly posted here, and provide feedback about what you think it should be doing versus what it actually is doing. Or better: the plugin is open source, so make a change to it and give it to him to make a better vNext.

Yeah...I re-read your post as well, and it reeked of the kind of snowflakey Reddit internet cop mentality, I typically recoil from, so I was going to just brush it off, but I see you came back to once again, pee on your tree....

Feel better now? Did you pound on your chest a little bit after that ^ rant?

You should really heed your own advice.

I have been desperately trying to get this to work on a Creality Ender 3 Pro. The plugin shows up and I can get the printer to pause at layer etc, but the steppers do not lock, and I cannot feed new filament in without accidentally moving the z height.

In addition to that, every time I have tried to make this work, after the extrusion purge step, the printer z's itself right through the print, crashing my printer and leaving yet another scar on my print bed surface.

Am I missing something here with the stepper motors not locking? And why does it crash itself through the print on resume?

What are recommanded retraction/extrusion/prime distance settings for an ender 3 with full metal hotend ?

Hey. The plugin for some reason does not work on Anycubic Mega-S. The head moves away, the seal stops - but there is no pause.

Not every printer has implemented M25, and M25 also only works when printing from an SD card. Try using M0 or M600 options.

Hi! A few quick questions - in your instructions when you say "if you are inserting items, do it now", what items are you referring to? I've been wondering this for a while.

Here's what's happening with me on an Ender 3 /w stock firmware and stock script using the M25 method.

Beep. Extruder goes to the side and begins to cool
Resume print
Beep. Extruder goes to specified script coordinates and parks. Hotend heats up. Beep.
I change filament
Resume print
Extruder primes then moves to the center of the print bed and lowers itself into the print melting the print and fusing it with the hotend
I stop print and clean up the mess

Thoughts on why this behavior is happening?


If you turn off "Change filament at pause", then you're basically using it to pause the printer. This is generally used to insert things like magnets. See this: https://youtu.be/1idFaioi5L8

Please attach your final gcode so that I can take a look and see what's wrong. Thank you.


i have just installed the plugin.

Using Cura 4.0 with my CR-10s PRO (Firmwar 1.1.9_B5 Tiny Machines)
I tried all three Options... The printer stops,ok, but there is no chance to resume the print. Nothin appears on the display or something like that...

Has anyone an idea??


Hopefully somebody can answer this for you. Does it have a touch screen or something?

I am using the Creality CR 10s PRO -》 Touchscreen.
The Problem still exist.... :-(
Also the newest Tiny Machine Firmware changed nothing

Also a user of CR-10s Pro and Tiny Machines latest (b7) firmware - same issue -> tried all the combinations (M25 M0 M600).
It is a touchscreen machine, and I believe the issue is - it doesn't find the correct screen to change the filament thus "hangs"
I believe it needs to be implemented by Tiny Machines + the screen files would require an update too.
I will try to submit an issue on their github.


Edit 2: Solution / Workaround.
It seems that I was partially right and some of Creality printers with Touch screen don't support Host Prompt Support.
This will be (hopefully) integrated in the new Tiny Machines 3D firmware based on Marlin 2.0.
ETA unknown.

As a workaround we can resume the print/confirm the change with the console comand M108 (as the screen does not support it yet).
I will be testing the printing with Repetier connected but it should theoretically work.

This all thanks to the lovely developers @Tiny Machines 3D and their commitment to Open Source ---
if you are from US be sure to support them!

The built in Pause at hieght was being ignored on my new printer. (Works fine on my Maker Select V2)

I'm using this in Cura 4.0 and for the Creality Ender 5.
I have unchecked Cool nozzle at pause and have unchecked Change filament at pause.
Here is what happens. Using the default M25 command.
At the specified layer, the print pauses, the head moves and the printer beeps.
I change filament and click Resume Print.
Nothing happens. I then see that at nozzle and bed are at temps, but of 0. So my nozzle is at 205 of 0.
I then have to go into main, control, temperature, nozzle, set it to 210. Then go back, bed, 60.
Then when the temps match the set temps, the printer beeps.
I then do this all again. Temp comes up, head moves back over the print, and it beeps.
Then I hit resume, and set all the temps again, and when it comes up to temp, it finally resumes.

What can I do to slim this down to 1 or 2 cycles?
If I set the temps before hitting resume, nothing will happen, so I have to click to resume, then reset the temps.

Same here except it will often drive the head into the printed part causing a Z shift and loss of build. It does not do it all of the time which is a little weird.

What firmware is in the Ender 5? Marlin based firmwares seem to have poor implementation of M25, giving the issues that you describe. You can see if your firmware supports M600 for filament change or try M0, which should work on almost any printer, but it's a bit of a pain because you don't have access to your controller since pressing the button moves to the next step.

Thanks for the reply!
It is a marlin based firmware, and I plan to install the TH3D version of it tonight or tomorrow.

I will test M600 with a small print with layer change at layer 2 or 3

Is this working on Cura 3.6? It isn't showing up for me... Can anyone confirm?

It works on Cura 3.6. Please ensure that you copied the file ChangeAtHeight.py to the correct folder and that you've restarted Cura.

My bad, it was really in the wrong folder. Thanks rawlogic!

The retraction/extrusion distance, should those be set to the length from the extruder engages the filament to it releases/plastic comes out?
I have a BMG direct extruder on a V6 and I've measured that as soon as I stick my filament in enough for the gears to grab and move it I need to feed 11cm for it to extrude plastic/come out the top.

What type of printer are you using? What firmware?

It sounds like you should maybe be using the M600 method so your firmware can walk you through changing filaments. The retraction occurs right before it parks. The extrusion occurs right before it resumes printing, so this is not going to work for you to load the filament, purge the previous color, or whatever you're doing to change the filament. The assumption is that you've already changed the filament before the extrusion is performed.

Thank you for your work on this! Like others, I'm having an issue using M25 where filament extrusion isn't happening properly after the print resumes. It's as if the prime (I assume it's the prime that takes place last) is retracting too much, regardless of the setting that I use, or that the retraction distance compounded with the prime value (which also contains a retraction?) is drawing too much filament back.

Current values are:

Try increasing the extrusion distance. Extrusion only occurs once, right before it resumes printing, and it's to counteract any previous retraction.

This got rid of my tweakatZ plugin and now even when I download it again it won't come back. I wanted to use them together so I could slow down my print speed for complex prints at certain heights. Is there something in the file that completely overwrites tweakatZ?

It's possible that the plugin in question uses the same internal (class) name as I do. This could especially happen if they based their script off of mine and didn't know to change it. You could try changing the class name on either script and restart Cura to see if it fixes it.

I don't know much about python but I'll try I love the plugin but this devalues it a lot. You should change this, in general in your scripts, Can't do multi-material changes without having a tweak to temp and speed at the change.

Edit: I found a plugin that works with yours, problem fixed :)

Actually, it is worse... the script needs to go to plugin\post processing\scripts... NONE of that is mentioned anywhere in the "instructions"... Comeon.. There is no way a new user could know this.

Sorry, I didn't realize that people weren't reading the instructions. I updated the intro. Hopefully it's more clear now.

" I didn't realize that people weren't reading the instructions."

I was... that is where the line ""The plugin, once installed into your Cura plugins folder, shows up as the "Change filament at height" plugin." came from.. If there are some other instructions, then i have missed them all, i took a look and it seems there is now the full path in the instructions, maybe it was there before but...: if i'm downloading a file, i may not have the webpage where it was loaded visible and since there is a comprehensive readme, i would assume the information is in there, not buried literally in the last paragraph on the webpage.. basically, you have to know where the instructions are before you go looking for them. Which is why you, as the developer are blind to the problems of new user. For me: NOW it is clear, once i know where everything is... and i won't remember these difficulties for long and i will downplay how serious they are. Because i KNOW how to solve the problem, i don't see it as a problem..

Also, another, very, VERY important missing feature: there is no autohome after filament change.. do you really expect that the Z axis won't move a 0.05mm when you change the filament? NEMA17:s alone can't hold it up and so far, i haven't managed to finish a SINGLE print.. because the Z has moved and that is the end of the print. The plugin needs to reset all axis before it moves back to print since there is no feedback loop that would tell the printer that one of the axis has moved. This is REALLY important: i have now 4 pits in the middle of my bed.. thanks very many, i never would've thought that this kind of basic safety feature would be missing.. It is like... like a car without brakes or cruise missile without GPS or Gyro.

I would suggest that moderator removes this script or at least puts a HUGE warning to be present that there is NO Z axis reset and if the user moves i, he is going to put his nozzle thru the bed... THIS SCRIPT CAN BREAK YOUR PRINTER!!!! If i had not catch one of the tests early enough, my nozzle was stuck on side of the bed with X and Y axis both fighting to break the hotend to pieces (i tried to use 0,0,0 as the parking location.. whoah... you should REALLY check that part of the code..or just add G28 before we move Z up high enough, then X,Y to the spot and last Z.. It is at the end of your routine, should not take long.. if i knew a bit more about python i could do it, i took a look at the code (thank goodness us who don't write still can read it ;) )...

I really am annoying aren't i? And seem ungrateful but that is not it, i appreciate your effort greatly. I just want this to work and so that it is possible for a noob to actually use this. And also: TO STOP THEM RUINING THEIR BEDS AND BREAKING THEIR PRINTERS!!! I repeat: there is NO Z axis reset after user TOUCHES the Z axis and that is UNACCEPTABLE just for safety concerns. If this was a machine with spinning metal and you would do that: you would be fired in a millisecond and would have massive legal issues if anyone was hurt because your code did not check where the head was after USER MANIPULATED THE SYSTEM!! I am writing this in all caps and multiple times because it is that bad..

Yeah this happened to me on the first attempt with a 3 day old printer. Now I have giant gouges in my brand new bed because of this. I actually read the ENTIRE instructions before attempting this, and if I hadn't been sitting there staring at the process when it happened, I am sure something would have broken. This is really sketchy and I am none to happy about ruining my brand new print bed.

It would be really nice if the z axis reset before resuming the print. Now, every time I look at my new print bed, I get a bit worked up.

Please, fix the readme. As a new printer owner and Cura user, i had NO IDEA that when you say "The plugin, once installed into your Cura plugins folder, shows up as the "Change filament at height" plugin." you meant to say "The plugin, once installed into your Cura plugins/scripts folder, shows up as the "Change filament at height" plugin.

Two days of trying and i found the fix here.. buried deep, deep in the page, on a reply thread 3 comments deep.. .ffs..

There is absolutely no way a new user can know that it has to be in the plugin/scripts. NO. WAY. Now that i now it: i most likely will not even remember the time when i did not know it.

So.. update the readme so that any user actually can make it work with the MINIMAL instructions given. This is one of the things that makes me the most angry: someone did work on this, for hours if not days and then when it comes time to release it.. Bothers to write NO instructions and the little that is ACCIDENTALLY given is FALSE. So not only you messed up a marathon in the last meter, you actually turned back and messed the race for others too...

And thanks for the plugin but comeon....... when readme gives wrong instructions, that is really, really a noob mistake.

If you submit too many comments (or comment edits) in a short period of time, your comment ends up automatically flagged for moderation. I'm assuming that your comment was automatically flagged, though maybe a visitor flagged it. I did get a chance to read most of your reply before it was flagged.

You generally want to avoid rehoming because they're typically mechanical end stop switches, and there are some small variances when homing, which causes layer shifts. I've never had a problem with losing Z, but I guess it depends on your printer and how it loads. I've used it on the MP Select V2.1, CR-10S, and the Prusa MK3. What printer do you have?

Anyway, I'll consider adding an auto home feature in the next version for those with the same problem. Generally, the comments that are here are a bit more constructive. I'm only human, and as hard as I try, I can't think of everything. Any harm is unintentional. We're all on the same team.

Thanks for the feedback.

Any chance that you will get this to work over usb? Works fine with sd card. Using cura 3.6, ender 3

I think M25 is the only pause method that won't work over USB. You can try the M0 method, or if you're doing a filament change and your printer supports it, you can try M600.

I tried all options over usb, none worked, print just carries on after the layer i set, I even tried height, same thing. All worked with sd card. I found out the guys that sold the printers to me loaded Th3d firmware onto them, that might be the issue, still trying to find some info on it, but seems no one has found this problem so far as most people use sd cards that post in the forums. Even cura default change filament and pause are not working over usb, thats why I tried yours to see if it fixed something or other

Just installed this but when I go to post processing in Cura I only get to set the layer height to paus, nothing else, shouldn't there be an option there for what method to use?

I updated the screen shot to match the latest version. If it doesn't look like that with the version 3.4 showing, and you updated the file, you probably just need to reboot Cura.

Everything is working great except that it takes awhile for the new filament to start extruding. The first five seconds after the print resumes, the extruder does not put out any filament.

If you're not using the M600 method, the Extrude Distance is the amount that you want to extrude before it prints. If you're using M600, that's going to be up your printer's firmware.

Very nice plugin, however, since I have an Anet A8, I'm using M25, and even with retraction settings set to 1 mm, I'm having the same problem as budge72 -- it takes a while for the filament to start extruding. I could try 0, but I didn't know if this was something that can be configured in the script, or is it a property of the firmware in the printer?

Thank you for your time. :-)

Try increasing the Extrude distance so that it's greater than the retraction distance or try reducing both retraction and extrusion.

rawlogic - Ok, thanks; I'll give that a try over the weekend. I'll let you know how that goes.

Another quick question: The comment on the first page of this Thing says the latest version is 3.4, but when I downloaded and installed it, it's showing 3.3. Am I using an old version, or...?

Thank you for your time.

I just updated the plugin two days ago, so you probably need to upgrade. The latest version reports itself as 3.4.

Ah, gotcha! Will do. :-)

M600 worked perfectly with the Lulzbot Taz 5.

Hi. I'm putting both plugins in the exact folder you listed for Cura 3.6, and they are still not showing up after restarting the program. I have 12 plugins listed in that folder, but only 10 are showing up. Any ideas? C:\Program Files\Ultimaker Cura 3.6\plugins\PostProcessingPlugin\scripts
UPDATE: I had to delete the Change at Z file (since it's not meant for Cura 2.x or 3.x. That fixed it.
The one problem I still have is that the extruder needs to wipe before starting to print after the M0 command. Any way to add that function?

Used with Octoprint and a Monoprice Maker Select V2.1. I made some changes to default retraction, added retraction speed, and removed a section that was causing large blobs to form inside the extruder by pushing too much material through.

Hi I'm using a balco 3d touch/wanhao duplicator i3 plus. Print goes smoothly and pauses when i want, extruder cools and moves to destination, but if i press resume print it just resumes the print... but it also primes and extrudes then blobs on the build surface as normal but then doesn't raise the extruder back up so when it returns to the print it crashes into the part before it raises to continue with the print. I have also tried changing the filament through the filament change function on the printer while the print has first paused and parked, i change the filament fine and when i click resume print it just primes then crashes into the part before raising the extruder to continue printing.

i have just tried M600 and the print didn't even pause halfway through it just printed as normal.

What firmware does your printer have on it? Not every firmware supports every command. Did you try M0?

Anyone got this to work with Lulzbot Taz 6 with either Dual or single extruder?

Information on the Anet A8, A6, A2 Plus printers with plug-in

Cura: 3.5 used for all testing.

Anet A8: stock firmware with e3dv6 up grade: Plugin works as described, but A8 does not provide and audible squeal at each step.

  • noted that if the print was aborted, it leaves the printer in an unknown state - need to reboot
    after aborting the print

Anet A6 stock firmware: Plug in works as described.

Anet A2 plus with TH3D_UFW_U1R2.3FW - Marlin 1.19 firmware: Plugin works as described, but the purge filament step is run twice at the end.

Trust this helps someone else.

I want to use this plugin with the option "Print sequence" = "One at a Time".
I need to print a plenty of small objects and extract each one from printer before printing the next one.
I found out that if I set "Pause type" = "Height" and "Pause at Height" = "0.3" (first layer) in your plugin then custom code will only be added to the first object. Is there any ability to fix this and get the expected behavior?

Ah. Sorry, I didn't think about that. I'll see if I can add support for that in the next version. Are you using it to change the filament or just pause?

You can click the Watch button near the top to get a notification when I post updates. Thank you for the feedback.

I'm using just pause with a beep. I would appreciate the ability to insert multiple pauses by same height or by same layer in "one at a time" mode.
Thank you.

Thanks, this works perfect with my Anet board. Couldn't get the default Cura plugin to do it.

"The plugin, once installed into your Cura plugins folder, shows up as the "Change filament at height" plugin."

Followed this instruction (Cura 3.2.1) but the plugin doesn't show up in Cura's plugin list. It does not show up in the Extensions/Post Processing list either :-/

If you installed it in the right folder, you'll need to restart Cura before the plugin shows up.

Already tried that, of course, but no luck so far. I copied the ChangeAtHeight.py into Curas plugin folder (C:\Program Files\Cura 3.2\plugins), restarted Cura and loaded an .stl to get sure. However, the script does not appear in "Installed Plugins" menu and also not under Extensions -> Post Processing -> Modify G-Script.

You must install the plugin in the right folder:
C:\Program Files\Ultimaker Cura 3.x\plugins\PostProcessingPlugin\scripts

From the instructions:
Cura 2 or 3 INSTALLATION: 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\Cura 2.x\plugins\PostProcessingPlugin\scripts for Cura 2.x and C:\Program Files\Ultimaker Cura 3.x\plugins\PostProcessingPlugin\scripts for Cura 3.x.

Thanks rawlogic :)

Same as a few others here, filament doesn't extrude after resuming on Monoprice Maker Select Plus (Cura 3.4.1 + script v3.2). I have the same problem with Cura's "pause at layer height" plugin.

Please try using M0 or M600 method on the new version of the plugin. Thank you.

Thanks for this plugin. It is very handy.

There is bug when using rafts with Change at Height. Since rafts show up in GCode as negative layers but in Cura starting at layer 1 the correct layer is not interrupted. I have fixed the code and attached it to this comment, but if you have a GitHub repo I can submit it there instead.

This is fixed in the latest version (v3.3).

I am using this with my Ender-3 through Cura 3.3.1. The issue I am facing, it does not appear to be locking the step motors. It stops, I hit continue in Cura, which is supposed to lock the motors. I then go to change the filament and every time I end up accidentally moving the Z axis down. Any thoughts?

is this still working for version 3.3. because I am having issues since my upgrade from 3.1. It's not showing up anymore. What am I doing wrong...? lol

This works for version 3.3 of Cura. You may need to install it again in your new version of Cura.

Every time I switch the filament, the filament stops coming out when I continue the print. It comes out fine when I'm switching and when I'm supposed to wipe the extruder...but as soon as I continue the print it just stops coming out. Any pointers here? Using Cura v3.3 with a monoprice maker select plus.

Also I have tried changing the M82 commands to M83 as Moonwalker031 mentioned below but that did not work either. Still not extruding after resuming my printing after changing filament.

Please try using M0 or M600 method on the new version of the plugin. Thank you.

Im having the exact same problem, on Anet A8, but in my I3 clone works perflectly. So far i havent found a solution

You can add the Creality Ender 3 (And probably all Creality printers) to the verified list. This script worked flawlessly for me.
Thanks so much!

Was it locking the step motors for you? When I do it, when changing the filament, I end up putting too much pressure and the Z axis moves down. I hit continue in Cura once, which is supposed to lock them, but it is not

I had the same problem as others using Cura 3.3.1 and Anet A6. The pause works but after resuming printing no filament is extruded. The official plugin that comes with Cura also has this problem and thats why I tested this plugin. I ended up modifying the gcode and finally worked.

Did not test enough but I think the problem is the M82 command at the end - it should be M83 since the extrude commands are for fractions of millimeters as shown below

G1 X86.206 Y108.834 E0.3231
G1 X86.259 Y108.887
G0 X86.639 Y108.834
G1 X90.621 Y104.852 E0.19667
G1 X90.674 Y104.799
G0 X91.061 Y104.637
G1 X95.257 Y108.834 E0.20726
G1 X95.31 Y108.887
G0 X95.703 Y108.821
G1 X97.318 Y107.206 E0.07976
G1 X97.371 Y107.153
G0 X97.335 Y106.386
G1 X93.263 Y102.314 E0.20111
G1 X93.21 Y102.261

I'm having this same issue. I'm currently in the middle of a print but I've got a test to run afterwards, where I've manually changed the M82 to M83. There seems to be some merit in what you're saying, looking at the GCODE (which admittedly is new to me) it seems it's in M83 "mode" until the pause point, then M82 afterwards. Fingers crossed this works for me on stock Anet A8 BTW.

Sorry, sometimes I miss comments like this because I miss the notifications. Under Machine Settings, what is the "Gcode flavor" that you have selected? Cura documentation says that gcode is always export in absolute mode, but maybe I'm misunderstanding it or the doc is wrong or old. Maybe I'll have to try to determine which mode the extrusion is in and switch "back" to it rather than always assuming they're using absolute.

In Cura my printer is set to "RepRap", however, here's the strange thing, I created a test on an XYZ calibration cube, having it pause at the 2nd layer, and manually changing the M82 to M83. It worked, I didn't change the filament, and just told it to continue. The print continued as it should for a few layers before I stopped it.

Then I tried exactly the same thing on the print I actually want to do the filament switch on, and it fails to extrude again afterwards.

Also, my custom code doesn't have all the "continue" sequences as described, it just has the two, I'm manually extruding the new filament to get it running through clean.

;added code by post processing
;script: ChangeAtHeight.py
;current z: 2.070000
M83 ;Set extruder to relative mode
G1 E-5.000000 F2400 ;Retract
G1 Z25.000000 F3000 ;Move head up
G1 X210.000000 Y10.000000 F3000 ;Move head away
M117 Press Continue...
M300 ;Beep
M25 ; Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
;Prime nozzle
G1 E6.000000 F6000
G1 E-5.000000 F6000
M117 Press Continue...
M300 ;Beep
M25 ; Pause
G1 E-5.000000 F2400 ;Retract
G1 X109.306000 Y95.231000 F3000 ;Move to next layer position
G1 Z2.070000 F3000 ;Move to next layer Z position
G1 E5.000000 F2400 ;Extrude
M83 ;Set extruder back to relative mode
G92 E0.361060 ;Set the extrude value to the previous (before last retraction)
M117 Printing...
;CUSTOM Pause Done

Please try deleting the G92 command also since that only makes sense if it's in absolute mode. I see now that when Reprap is chosen, it does automatically turn on Relative Extrusion under the Special section. You might also try making that option visible in settings then turning it off. Please let me know the results and thanks for the help.

Hi there,

Just tried this plugin and was able to pause correctly and change the filament. The problem is, when it went back to printing looks like it was lower then it should be... It started melting the piece and extruding the new layer inside the old one.
What could I've done wrong here?
Just unchecked the "cool extruder" and set the layer to 12. I was printing at .2 layer height.
Here is the gcode:
;added code by post processing
;script: ChangeAtHeight.py
;current z: 2.400000
M83 ;Set extruder to relative mode
G1 E-4.000000 F2400 ;Retract
G1 X50.000000 Y50.000000 Z40.000000 F3000 ;Move head away
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
;Prime nozzle
G1 E6.000000 F6000
G1 E-5.000000 F6000
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G1 E-4.000000 F2400 ;Retract
G1 X151.168000 Y171.629000 Z2.400000 F3000 ;Move to next layer position
G1 E4.000000 F2400 ;Extrude
M82 ;Set extruder back to absolute mode
G92 E1444.489840 ;Set the extrude value to the previous (before last retraction)
M117 Printing...
;CUSTOM Pause Done
G0 X151.168 Y171.629 Z2.4
M204 S300


I have a Prusa MK2S and and my Problem is:

  • When the print stops at the right layer and I choose "continue print" in the menu but the extruder don't heat up to the old temperature. The display shows 0 and it cool down.

any ideas?
I hope u guys can help me.

My Custom-Code
;added code by post processing
;script: ChangeAtHeight.py
;current z: 2.750000
M83 ;Set extruder to relative mode
G1 E-5.000000 F2400 ;Retract
G1 X230.000000 Y200.000000 Z25.000000 F3000 ;Move head away
M104 S0 ;Turn off extruder heat
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Heating extruder...
M109 S210.000000 ;Heat extruder back up for filament change (wait)
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
;Prime nozzle
G1 E6.000000 F6000
G1 E-5.000000 F6000
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G1 E-5.000000 F2400 ;Retract
G1 X140.544000 Y88.105000 Z2.750000 F3000 ;Move to next layer position
G1 E5.000000 F2400 ;Extrude
M82 ;Set extruder back to absolute mode
G92 E728.561670 ;Set the extrude value to the previous (before last retraction)
M117 Printing...
;CUSTOM Pause Done

I use Cura 3.3

Using a stock board Anet A8, the pause works fine, it moves the print head away and all that, but when i want to continue print, there is no "continue print" under the SD card menu, i have the optio to pause or stop the print, if i click Pause, then the printer freezes up and i have to turn the power off and give up on the print. any help is appreciated

Same issue of Ribaud down here.
I'm using an Anycubic i3+ Prusa with heated bed "Ultrabase", not sure about the firmware version (very poor information on the company's website) but quite sure a Marlin one. The printer mounts a Trigorilla Main Board, which may be compatible with RAMPS 1.4.

I'm using Cura 3.2 (tried even with v3.3 but unsuccesfully), all the steps run perfectly, but when the printer resume the printing no filament is pulled out from the extruder, the gears are fixed and don't move.
My g-code is identical to the one posted by Ribaud.

Any help?

EDIT: Tried succesfully to flash a new firmware, a Marlin 1.1.8, with "Change Filament" option enabled in the system menu (previous version didn't have this option). Now I'm able to change a filament and resuming the print, but I have to pause the print manually. No way of pausing the print using the script.

I have a Monoprice Select V2
I m with Cura 3.1.1
I Don't speak English but I try….
First Beep OK
2me BIP OK
I change the color OK
3me BIP OK
4eme BIP OK
but a problem, no filement

the x code

;added code by post processing
;script: ChangeAtHeight.py
;current z: 6.160000
M83 ;Set extruder to relative mode
G1 E-5.000000 F2400 ;Retract
G1 X50.000000 Y10.000000 Z25.000000 F3000 ;Move head away
M104 S0 ;Turn off extruder heat
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Heating extruder...
M109 S210.000000 ;Heat extruder back up for filament change (wait)
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
;Prime nozzle
G1 E6.000000 F6000
G1 E-5.000000 F6000
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G1 E-5.000000 F2400 ;Retract
G1 X97.003000 Y97.003000 Z6.160000 F3000 ;Move to next layer position
G1 E10.000000 F2400 ;Extrude
M82 ;Set extruder back to absolute mode
G92 E6.500000 ;Set the extrude value to the previous (before last retraction)
M117 Printing...
;CUSTOM Pause Done

I am using a Wanhao Duplicator 6, and for some reason when I use this it it will pause just fine, (though it is pausing at the beginning of the level after I specify, (which isnt a big problem I just have to work around it) though after I do a filament change from the printer settings it rehomes the bed instead of staying at the height it is at currently.

I had it set to park the head at 20 x 20 but instead it just parked it in the middle of the print. Then when I set it to resume it decided to home the Z height and smashed the print head into the 6 hour print ruining it. Why is it doing this and is there any way to get it to stop.

EDIT: So I installed Cura 3.1 and now the extruder doesn't ram itself into the print. Now it just stops and never gives me the option to continue print. It takes the head back to home and acts as though the print finished. Thoughts?

Well I think I figured it out, my printer won't accept M25 at all, changed it to M0 and it works fine.

Thanks for the code! Worked perfectly on the ANET A8 after i changed the flavor to Marlin for the stock board.

Do you have any plans to make this work directly from Cura over USB? Thanks for your time : )

Noob Question - Why does this sort of script/code only work from the SD card? In my one and only test it all seems to work from the SD card, but I dont think it beeps? I am using a MP Select Plus.

Thanks for the code!

Comments deleted.

Hi, why does it pause multiple times?
the code looks like a mess

Funny you read the code instead of the instructions.

Sorry, TL;DR; i got only half way thru the instructions haha :)
i now understand the logic behind it and i still don't get the code
IMHO it needs a few conditions to make just the pauses needed and if possible use "M0" that only requires a click on the knob instead of going thru the printer's menu
then do not retract again after just doing so priming the nozzle and don't make the extrusion_mm right over the part to avoid ruining it
however i found really useful pieces of code inside this script and i made my own :D
i think i will share my script soon, right now i'm trying to see if can remove the neck in the print where the pause occurs

M0 is inferior to M25 because with you can't use your controller to extrude, change the temp, or anything else when you use M0. Still, I have a new version that I'll be releasing soon where you get to choose your pause type, M0, M25, etc. because not every firmware supports M25.

The extrusion happens right before it starts because the retraction happens before the travel. You can reduce the extrusion amount. My code is marked as no-derivatives, so if you use my code in your own script, please don't share it.

that looks like a good idea, simple vs more control at discretion of the user :)
now that extrusion makes sense, i was getting very bad result with the filament going in and out the extruder
bummer, that getvalue did its job getting the layer number, i'll just start from the script in the cura directory :)

I've tried manual ways to change filament and it was too complicated by hand (M0, M25, M125, M226, M600, ...?!).

So I figured I'd try this plugin!
It seems a bit better, but on the latest stable Marlin (1.1.8) I'm not getting a prompt to extrude and prime the nozzle, thus it just oozed the amount specified without pause and than dragged it into the print without letting me do it cleanly (and that's if I'm fast enough before it cools down to push some filament through as the heat is cutoff).

Is there a solution to get that extrude / resume menu back, like when using pause by hand? :)

EDIT: 2nd try with 2 changes: the first filament change, I managed to block the oozing fast enough.
On the 2nd it crashed into the model/bed before pausing and I really can't see why from the G-Code... :(

Also, I see it always does a E+30/-30/+30 after resume, no matter what I set on the extrusion amount (0 or otherwise)?

Works beautifully in Cura 3.3.1 and printing on a MonoPrice Select Mini v2 through OctoPrint. I have found, however, that an additional 5mm ensures a good prime, at least with PLA. I had issues with filament initially flowing smoothly without that, although I didn't have any bonding problems as a result.

I read in your notes that it says that the Anycubic i3 Mega doesn't work with this plugin but it does. I use this plugin on my Anycubic Mega and it works just fine. I do use this firmware https://github.com/systemik/Marlin/tree/bugfix-1.1.x-systemik with Octoprint and after the pause I press resume on Octoprint and the hotend heatup and when it heats I can extrude to get the new color ready the hit resume again and it starts to print. Thanks for the plugin it is the only way I have found to do a color change on the Anycubic Mega

also I am using Cura 3.3.1

I used this plugin with my CR10S, the print pauses then moves to the wanted position, but when I press Continue, it sets my temperatures (bed and nozzle) targets to zero, and it is just impossible tu restart the print. Do you have any idea why ? I've searched for help everywhere and I just find it impossible to figure out a solution.

I have searched help, and the web. Tons of info on how to install Cura plugins! None on how to actually access or use them...
I have the .py files in the correct directory and have restarted Cura. Now what?
Exactly how do I turn this on, set the level where I want it to stop etc.
I'm sure I will have no trouble following the steps described once the g-code is in my file, but how it gets there is a mystery.
Noob question I know, but I have been printing successfully for a few months, use Blender, openSCAD, and Meshmixer with no problem, but I can't connect the dots on how to START with plugins in general and this one in particular.
Please help.

This is from the Thingiverse description:

  1. 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.
  2. From Cura's main menu, choose Extensions->Post Processing->Modify G-Ccode
  3. Click the "Add a script" button
  4. Choose "Change filament at height"

These instructions are for Cura 2.x or Cura 3.x If you followed the install instructions, restarted Cura, and have loaded an .stl file, you should see the "Change filament at height" script in the above options, otherwise you won't.

D*mn, if it was a snake it would have bitten me. [Hangs head in shame] Thanks.

Comments deleted.

If you read the description, you'll see that this plugin doesn't yet support Ultimaker 2. What firmware is on an Ultimaker? Do you have a list of supported Gcode commands?

I'm having a weird issue. I used this plugin quite a bit in the past, and wanted to use again for some new prints. I go through the change process and it will not print with the new filament, nothing is extracted. I can start a new print without touching the extruder and it prints fine. if I feel the filament after the change, I can feel it going up and down as it tries to print. Any hints/ideas? Hictop 3DP-17 printer.

Have you checked it with Cura 3.3 yet? I will hold off installing 3.3 until I am sure the plugin will work! Thanks for the great code!

I just tested the latest plugin with Cura 3.3 beta, and it worked fine.

Just used the script in Cura 2.3.1 with my Creality Ender 2. Worked perfectly except no beeping (pretty sure the Ender 2 doesn't have a speaker). With that said, I just printed a super cool multi-color easter egg. I like that it cools down in case I don't catch it quickly that it is waiting on me (and I never catch it quickly). When it says "Press Continue" I do have to go click resume print; on another script I can just click the knob.

Could someone help here - I have a Prusa i3 mk2.

When it gets to the pause point, the screen says 'Press Continue...' - what am I supposed to actually do here? How do I press continue?

Maybe the problem is that it isn't using m600? Which is what Prusa's own multi-colour (note: not MMU) printers use.

Doesn't seem to be any way to tell the printer to continue when it says 'Press Continue'. Pressing the only button opens the menu as usual.

There is no way to pause and resume the Prusa?

Doesn’t seem to be a way to resume when paused by this plugin.

However, I found a way that works better - I just use the search and replace script that comes with cura to insert m600. This triggers the printer firmware’s own filament change procedure which works really well.

Cura puts a comment before each layer in the gcode so I just search and replace on that

I am using CR-10.
Can I change so it does not pause 4 times, but only 1 time.
Otherwise, really nice plugin.

It's a change filament plugin, but it can be used for pausing. If you disable the option to cool the extruder, you'll have one less step to resume through. The first step locks the stepper motors so that you don't accidentally move the print head.

Comments deleted.

Verified on my Tevo Tornado!


Worked well on my anycubic kossel!
I used it for a small bitcoin. Now i want to add the script to another model and it wont add it in the gcode? Is there a solution?
I tried it with the bitcoin again, and it added the custom text without a problem.

Hi Black4hawk, I have an Anycubic Kossel Linear Plus, and the plugin didn't work for me. I'm using the stock Anycubic filament, the latest version. The print head did pause and move away from the object I was printing, and I was able to change the filament. But when I told the printer to resume printing, the print head moved higher a couple of times and then just started extruding filament, as though it was continuing the print job. Any ideas? Thanks

Still wont work. Its adding the gcode just in layer 27, does not change when choosing other layers like 24...

Comments deleted.

What about replacing M25 with M600 (Only Marlin compatible) ?

I've considered doing that, but this plugin does more than most M600 implementations. There could also be some duplication for some M600 implementations. It's hard to tell if they're going to save the location and go home, if they're going to retract, etc. This plugin gives you more control and ideally works similarly for everyone.

What printer do you have and what would you gain by replacing M25 with M600? Would you want to replace everything that this plugin does and just do M600 at a specific layer?

Thank you for your reply,
I use an Anet A8 with Marlin 1.1.8.
I think M600 should have a better integration and it's maybe easier to use for newbies. It's just an idea.
Your project have the advantage of customization.
Great job anyway, you did some cool stuff.

hi cura 3.2.1 doesnt see the plugin anymore, you dont see it in modify g-code option, and get error msg when you try to install it

Thanks for the heads up. I hadn't realized that there was an update. Please make sure that you shut down Cura before you copy the plugin file over and make sure that you put it in the right folder. Cura won't see the plugin if it's not there when you start Cura.

I installed Cura 3.2.1 into a new folder so that I could keep Cura 3.2. I copied the plugin to the right folder for Cura 3.2.1, then started Cura, and it appeared to be working properly.

What folder does the py file go into?

Nevermind, I found it... C:\Program Files\Cura 3.2\plugins\PostProcessingPlugin\scripts

C:\Program Files\Cura 3.2\plugins\PostProcessingPlugin\scripts

FINALLY! I tried every variation I could think of putting the folder and/or the py file and files in various places under plugins and trying the Install Plugin command.

PLEASE put this in the readme and the instructions. It will save others a lot of frustration. (Oops, now that I know, I do find it in the readme. How about moving the installation instruction to before the words "The plugin, once installed" because tl;dr seems to apply to me :(

[strike]Now I am looking forward to trying it.[/strike]

Awesome! It worked perfectly on my Monoprice Maker Select Plus V2 IIIP with Cura 3.2.1.

Thanks Rawlogic and ChuckA.

In case anyone else finds this useful, on mac:

Goto /Applications (or wherever you installed Cura)

right click Ultimaker Cura, show contents. Then go to Contents/Resources/plugins/plugins/PostProcessingPlugin/scripts

Add it there.

very useful, thanks

I love this plugin, I use it for a general pause as I like the beep etc. Still have yet to use it to change colors

I do have a suggestion for the next version. It would be nice to be able to change the M117 text. Since the addition of the M117 Speech synth octoprint plugin ( https://plugins.octoprint.org/plugins/M117SpeechSynthesis/ ), it would be a nice addition to be able to change the text for the "Press continue..." But I would like to change it for each spot separately. I know I can go into the .py and change it if I really needed but it would be a good feature to be able to change it through Cura.

Thank you for the good suggestion. I'll see if I can add that to the next version.

Maybe instead of "press continue..." in each place, you replace it with the purpose ("Paused. Ready?", "Insert Items", "Change Filament", "Wipe Nozzle"). Great plugin. Love it. (took me a bit to understand why pause at layer in cura and pause in gcode were off by one)

I considered that. Do think that people are going to "Change filament", "wipe nozzle", whatever, then wonder what to do next?

lol. unfortunately, you are probably right. :-) "I changed the filament. Why isn't it doing anything?" It's like when DOS used to say "press any key" and people would complain because they couldn't find the "any" key. :-)

Cool thank you.

Comments deleted.

Successful on the Balco 3D Touch Printer - (Cocoon Create) / Wanhao Duplicator i3 Plus

Thank you. I added it to the list of supported printers.

Wrong one oops.

Hi there. Thank you for this script.
I have a CR-10S with 1.1.7 firmware and use Cura 3.1, along wth Repetier Server 0.84. I do NOT print from the SD Card. (not sure if that is an issue?)
Upon reaching layer 3 the printer beeps, and on the screen of the CR10 the Press to Continue message comes up but as soon as it reaches the new "home" position the extruder goes back to where it was printing and continues printing without giving me time to do anything.

Any help?

Unfortunately, our firmwares only support the SD card pause command, so if you're not printing from the SD card, it won't pause. Read the description for more info.

It works for Wanhao Duplicator i3 Plus but doesn't beep.

Thank you for letting me know. I added the Plus to the list.

There is a bug in the extruder position (sometimes?).
I'm using v3.1 with Cura 3.1 and a Creality CR-10.

I made nearly identical prints with the script without problems.
Now I have one where he set a totally wrong absolute extruder position at the end.
Leading in endless rewinding filament :/

Look at the yellow marks on the screenshot

Nevermind. I found the issue. It's fixed now with v3.2 of the plugin. Thank you for the info!

Great news :)

I add the file anyways, maybee you want to check if it is really the bug you fixed.
The wrong Extruder Number is used at a earlier stage of the gcode.
Then there is a reset of the Extruder to 0(as far as I understand).

Thx for your great work :)

Edit: I just saw your explanation of version 3.2. Sounds really like my bug :)
And I have also no idea why Cura did this.
I made the identical sign for another kid (only other Name) and the print worked fine.
Maybee a strange "change options/reslice" behaviour from cura.

Yeah, it was the reset to 0 that I didn't account for. Why Cura does this is unknown. Anyway, now I watch for "G92 E0". Thanks again.

Sorry about that. Can you provide the whole gcode file, please? It must have gotten that E9879 value from somewhere. I'm trying to figure it out. Thank you.

Comments deleted.

Hi there,

I'm using v3.1 with Cura 3.04 and a Creality CR-10.
Step three (prime nozzle) does nothing. No Extrusion at all. (Edit: in a second try extrusion worked, no idea why)
I pushed the filament manually until the new color comes out.

With vase mode (spiralize), the printer does not print instant after resuming, there are a few centimeters until the new filament comes out.
So the vase is broken :/

Any ideas what I can do?

So I think I may have found a bug or something. Since installing the new version, after Step three, the print head moves into place to start printing, when I hit continue, the extruder starts unloading the filament. After about a minuet, it attempted to start printing.

I have removed / replaced the plug-in, but this continues to happen. Any suggestions. This did not occur with the last version, I am runnuning this on my cr-10. This also happens on my monoprice maker select plus.

It's probably just heating up the extruder. If you're going to babysit the printer and don't want it to cool down when it pauses, then turn off the "Cool extruder on pause" option.

Then why is it reversing all the filement out then starting to print? This seems to be happening during the third pause and continues until the print is finished.

Anyone been able to, or figured out how to, add this to the new Linux appimage?

  1. Go to the folder $HOME/.config/cura/3.2 (If your version is 3.2)
  2. Create a folfer named 'scripts' here (if it doesn't already exist)
  3. Put the script in the folder you just created
  4. Restart cura
  5. Profit

Note : .config is a hidden folder, if you are using a graphical file explorer, you need to show the hidden files (hit CTRL+H and you'll be good)

Question... If I have an object with 10 layers. I want layer 1-5 to be black and layer 6-10 to be yellow. Do I input layer 5 or 6 into the pause at layer? Basically does it pause at the beginning or end of layer?

Layer 6. It's at the beginning.

I upgraded my Cura to 3.1, and now I can't get this plugin to even show up under the extensions. I downloaded the new version, installed it as I had before.

I am using the "color change" that shows up, but i don't like it, it leaves a big blob when the hot end pauses. Any thoughts? I am using iMac desk top.

Never mind, I got the problem fixed. Seems when I upgraded to Cura 3.1, it created a new folder called "Ultimaker Cura". I was attempting to install the plugin in the regular "Cura" folder.

I got it up and running, seems to be working perfectly. This is the first vase I printed using this plugin.

Thanks again for creating this wonderful plugin!

Nice print.

I'm glad that you figured it out. I was going to install Cura 3.1 on my Mac last night and try it out, but then I got distracted and forgot. Sorry!

I noticed that they also changed the install folder to Ultimaker Cura on Windows, starting with Cura 3.0.

on my CR-10 the first it didnt work (1st try, will try it again tomorrow).

1st resume print: locked the steppers (I think so).

2nd resume print: Hot End heated up (so I could change the Filament).

3rd resume print: Print head went to the start position for the Layer.

4th resume print: Extruder took out the Filament, after that it started printing (without Filament)

would be nice if this could get fixed, if possible :)

This was fixed in v3.2 of the plugin. Please download the latest one.

Same here with my CR-10 Mini. After resuming printing, the extruder kept on Retracting and Extruding the same amount of filament over and over again for the rest of the print. This resulted in no filament was coming out of the nozzle, hence "printing without filament".

This was fixed in v3.2 of the plugin. Please download the latest one.

I'm having this exact issue and can't for the life of me find the cause. A dozen test prints now and every time I resume printing it retracts and extrudes the same amount and nothing comes out. I've tried zeroing the retraction and extrusion distance, but no effect. Gcode for test print attached.
All the "continue" steps seem to work as intended except for no beep, even with the option selected and appearing in the gcode, and no messages printed to the touchscreen.
Setup: Cocoon Create Touch (Wanhao i3 clone)
Cura 3.2

This was fixed in v3.2 of the plugin. Please download the latest one. Which firmware does the Touch have? RepRap? Because it seems that you have selected RepRap for your gcode flavor in Cura.

Actually, looks like there may be another bug in Cura. Can you post your settings? This doesn't make any sense:

G1 X96.839 Y92.381 E0.00625
G1 F1500 E-6.5
G0 F3000 X97.614 Y93.114
G0 X102.33 Y106.83
G0 X102.8 Y107.3
G1 F1500 E6.5
G1 F1800 X97.2 Y107.3 E0.27939

Extruder distance goes from E6.5 to E0.27939. Why? Seems like it's priming right in the middle.

I am using the latest version of your plugin, as shown in the attached screen grab.

Machine Settings and Extruder Settings attached.
Note: The setup documentation included in print and online for this printer is abysmal for any in-depth info. They did include a Cocoon branded Cura install, with no version number or About section I'm assuming it's 15.04. Cura 3.2 doesn't have a Machine profile in Add Printer, so i made a custom machine and transposed the settings presented in the included Cocoon branded install. Looks like it uses RepRap Gcode flavor. I also transposed the start/end gcode, listed below:

Start gcode:
;Sliced at: {day} {date} {time}
;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
;Print time: {print_time}
;Filament used: {filament_amount}m {filament_weight}g
;Filament cost: {filament_cost}
;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line
;M109 S{print_temperature} ;Uncomment to add your own temperature line
G21        ;metric values
G90        ;absolute positioning
M82        ;set extruder to absolute mode
M107       ;start with the fan off

G28 X0 Y0  ;move X/Y to min endstops
G28 Z0     ;move Z to min endstops

G1 Z15.0 F{travel_speed} ;move the platform down 15mm

G92 E0                  ;zero the extruded length
G1 F140 E30              ;extrude 3mm of feed stock
G1 X20 Y0 F140 E30
G92 E0                  ;zero the extruded length again
G1 F{travel_speed}
;Put printing message on LCD screen
M117 Printing...
End Gcode:
;End GCode
M104 S0                     ;extruder heater off
M140 S0                     ;heated bed heater off (if you have it)

G91                                    ;relative positioning
G1 E-1 F300                            ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more
G28 X0 Y0
G1 Z160                                 ;move X/Y to min endstops, so the head is out of the way
M84                         ;steppers off
G90                         ;absolute positioning

Lastly, this is my first printer, so please excuse any ignorance on my part. Thanks for your help.

Please change your gcode flavor to "Marlin" and try again.

I'm happy that worked, but embarrassed it was so simple.

I can at least confirm for you that your plugin does work with the HE161192 - Cocoon Create Touchscreen 3D Printer, when using Marlin gcode flavor in Cura 3.2.

Thanks again for this great plugin, and your support.

CR-10 is a Bowden setup. You probably want to reduce the reraction.

Seems like the default retraction is too high for your printer. Please try lowering the retraction and extrusion distance and let me know if it works for you. You can every try values of zero to turn it off.

I tried it again the other day, but didn't change anything, I just sliced it again with the same Layer where he should stop and this time it worked perfectly fine (just like your description), but I dont know why :D

I was going to upload a remix of this since I had assumed that work on this had stopped, but I come back and there's a version 3.0 now!! Amazing!

If I may add a suggestion, I noticed that sometimes my print head isn't locked, and I'm able to shift the X axis when changing the filament. This of course would be fatal to the print if I didn't do a "G28 X Y" command to rehome the X and Y axis.

After we resume the print, can we make this an option to add this as part of the static gcode that gets inserted into the file? That way we can ensure the printer has a proper starting point after every filament change regardless if the motors were able to lock (and didn't unlock due to marlin timeout).

Version 3.x of the plugin locks the stepper motors at each step. The previous version didn't. Please read the details page. The "summary" gives you a very short summary of what it does.

My theory (and I could be wrong), is that you want to avoid homing because homing is not exact. You might be forced to do it if you lose power, but if you can avoid it, you should. The end stops are mechanical switches and have some variance. Variances in the Z axis would have little noticeable effect, but even a fraction of a millimeter in the X or Y axis, and you'll have visible lines. This is based on my experience of doing the same thing. I'd accidentally move the head while I'm changing filament or inserting something, so I rehome. I sometimes saw a layer shift in the X or Y axis.

Since I added the feature to lock the stepper motors at each step, I've had zero issues. I've printed a LOT of these:

I'm not against adding the feature to rehome before it resumes though, if you think that others will have better luck. I'd make it an option that would be off by default though. Please let me know what you think.

Magnetic Construction Toys

Hi, did anyone try to let this plugin work with Anycubic I3 Mega? I tried to do it but the extruder went in the correct x,y,z position and stop working, but on the screen I saw only Pause or Print, this mean that it wasn't in "pause". I took out the PLA and put in the new one, on the screen appeared "print" or "resume". I pressed on "resume" but nothing appened. I press it other 10 or 15 times, but nothing.... Please help me... I only want to do multiple colour print...

Maybe it doesn't work for your printer. However, the second time you resume, it has to heat up the printer, so there is no immediate feedback.

I set stanby temperature to the same printing temperature, in order to change the filament easyer... so, no adding time to heat up the printer...

Sorry! This is fixed in v3.1.

If you're using dual extruders and a stand by temperature, then just turn off the "Cool extruder on pause" option in the plugin dialog. The plugin is not aware of multiple extruders.

No no, I'm using a printer with only one extruder, anycubic i3 mega... so i have to wait the 3.1 version? Please help me........ thanks!

Version 3.1 is available. It's already updated. Just redownload and reinstall.

I've just tried.... It doesn't work... The printer stops working but doesn't switch to pause, so it is impossible to press "resume"...........

Are you using v3.1 of the Change Height plugin?

You are talking about cura 3.1??? Because I have the latest version, I've installed it a few days ago, when my printer arrived...

No. v3.1 of the Change Height plugin fixes the issue.

aaahhhh, sorry..... How could I check the version of the plugin?

I download the new one and replace it, but I think it was 3.1 also before. I'll try to print again now...

The version shows as part of the name when you choose the plugin in Cura.

This is the situation after the printing reach the "5" level setted:
It stops extruding
temperature go to "0"
axis x y z to settings point
but no "pause mode"

I put the pause at height file into the script folder, and stop, it's correct? I have also to do other things?
Let me know.... thank you very much

Please read the full description. It has complete instructions for installation and usage.

I've done. It doesn't work. I think the problem is that m25 command in gcode stops working the printer, but doesn't put the printer on "pause" mode. Anycubic i3 Mega gives you the possibility to pause your print and resume just clicking the "pause" bottom on the touch screen during printing. Probably this plugin dosn't work at the same way, so the printer doesn't recognize the "pause". The result is that the printer execute all the operation untill M25 command, but then it stops without going in "pause" mode. Infact on the display the printing time goes up, like the printing it's going on,but nothing happen . You have to turn the printer off and restart it.
Probably to solve the problem you could try to change a command pause to a temporal pause, like 1 minute or more, you could let everyone choose by the plugin settings in cura... It's an idea... Is it possible?
Another thing...
m117 doesn't display anything on the screen
I hope I managed to explain myself, sorry for my bad English

Sorry, I have 3.0, I see only the beta version 3.1, it's ok? thanks

Hi, when i click the first "continue print" the nozzle goes to the corner and cool down (as it should), but when i press the second "continue print" nothing happen- it look like the nozle doesnt get command to heat up, nothing happend no matter how much i click the "continue print" button. i use wanhao duplicator i3 plus

Sorry! This is fixed in v3.1.

I just had this same thing happen on a maker select v2. after locking the stepper motors, pressing the button again should have gone to heating mode but the extruder never heated up. I couldn't do anything so I tried "pause print" and it locked up for a while.

Here's the relevant GCode:

;added code by post processing
;script: ChangeAtHeight.py
;current z: 1.220000
M83  ;Set extruder to relative mode
G1 E-5.000000 F2400  ;Retract
G1 X10.000000 Y10.000000 Z25.000000 F3000   ;Move head away
M104 S0  ;Turn off extruder heat
M117 Press Continue...
M300  ;Beep
M25  ;Pause
G91  ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1  ; Lock motors
G1 X0.1 Y0.1 Z0.1  ; Lock motors
G90  ;Set back to absolute position mode
M117 Press Continue...
M300  ;Beep
M25  ;Pause
G91  ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1  ; Lock motors
G1 X0.1 Y0.1 Z0.1  ; Lock motors
G90  ;Set back to absolute position mode
M117 Heating extruder...
M109 S0.000000  ;Heat extruder back up for filament change (wait)
M117 Press Continue...
M300  ;Beep
M25  ;Pause
G91  ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1  ; Lock motors
G1 X0.1 Y0.1 Z0.1  ; Lock motors
G90  ;Set back to absolute position mode
;Prime nozzle
G1 E6.000000 F6000
G1 E-5.000000 F6000
M117 Press Continue...
M300  ;Beep
M25  ;Pause
G1 E-5.000000 F2400 ;Retract
G1 X80.557000 Y87.951000 Z1.220000 F3000  ;Move to next layer position
G1 E5.000000 F2400 ;Extrude
M82  ;Set extruder back to absolute mode
G92  E842.973900  ;Set the extrude value to the previous (before last retraction)
M117 Printing...
;CUSTOM Pause Done

I'm guessing that you have your Printing Temperature set to 0 in Cura and are preheating the printer at the control box. You need to use the Printing Temperature in Cura because that is the temperature that the plugin uses. Since you have it set to 0, that is what the plugin sets the temp to. If you don't think that's the case, please include the entire GCode, or at least the lines where it sets the temp in the GCode (the M104 and M109 lines). Thank you.

Actually.... looking at it now, here's the bug no?

M109 S0.000000  ;Heat extruder back up for filament change (wait)

That's never going to happen... My gcode starts with:

;Filament used: 0.904792m
;Layer height: 0.1
;Generated with Cura_SteamEngine 3.0.4
M190 S60
M104 S195
M109 S195
M82 ; absolute extrusion mode
G21 ;metric values
G90 ;absolute positioning
M82 ;set extruder to absolute mode
M107 ;start with the fan off
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G1 Z15.0 F9000 ;move the platform down 15mm
G92 E0 ;zero the extruded length
G1 F200 E3 ;extrude 3mm of feed stock
G92 E0 ;zero the extruded length again
G1 F9000
;Put printing message on LCD screen
M117 Printing...

there's no other M104/109 before the CUSTOM block

Looking at your code, here's my question... is it possible it's getting using its own gcode output from a previous run? The most recent M104/M109 is going to be inside this CUSTOM block so it's possible that's getting used. I see the currently_in_custom part but perhaps there's a bug in there.

Do you have a GitHub repo for this? We can discuss there (although here is ok too if not).

Thank you. I found the bug! The bug is that it's not getting the extruder temp before layer 0. I guess that I had been getting lucky because Cura had been adding another M104 after the first layer, however, if you don't have the extruder temps in your start GCode, that doesn't happen for some reason.

This is fixed in v3.1. Thank you!

Excellent! Yeah, I was looking through the code last night briefly and was thinking it had something to do with those continue statements jumping past it.

Thanks for the quick fix. I'll give this one a go.

I definitely have the temperature set in Cura. I seldom preheat the bed and usually just hit print and let the gcode do it. I’ll pull out the temperature commands for you when I get back to my laptop.

I have to "resume" a 3rd time then it starts. I'm doing it from octoprint so it may be a little different but I wouldn't think so.

Same. Third time's a charm. Thanks for posting this. I was getting ready to trash my print.

One more thing, feel near the nozzle to see if it heated up and your printer just isn't reading the temp. Maybe you bumped one of the wires to the thermistor. Or, possibly, if it's not heated up, maybe you bumped one of the wires to the heater core while you were changing filament? Make sure that your printer does still heat up.

On second thought. Has GCODE ever worked to heat your extruder to temp? I know that some people typically use the preheat option in the menu because GCODE doesn't heat their extruder. If this is the case, you may just have to preheat the nozzle at the menu and hopefully the plugin will resume when it reaches temp.

Sorry. Could be a bug. Can you send your Gcode file to me to take a look at? It's supposed to go back to the last temperature

Awesome update @rawlogic, thanks! I've used the plugin a number of times lately. Stoked to be able to just a layer number now.

I tried to have it pause at a layer and it would move to the designed position, but it wouldn't pause it would just right back to printing. What needs to be changed to get it to pause. I'm using a Anet A8 with cura 3.0.4

Never mind I had just installed the v1 instead of the v2. But is there a way in increase the time the stepper motors are on

Works great, when you can get it working.

I'm running Cura 3.0.4 AppImage on Ubuntu 16.04. I found that I had to launch Cura, then find where it extracts everything to (AppImage extracts to /tmp/.mount_/usr/bin/*), copy the PostProcessingPlugin directory to ~/.local/share/cura/3.0/plugins/MyPostProcessingPlugin, rename and edit the PostProcessingPlugin.py (change to MyPostProcessingPlugin), then restart Cura for it to show up and not get clobbered by the original script.

Cura 3.1 'may' fix this issue. Would be nice (rather have an installer for Linux, but will take what I can get).

A simpler way to do this is to create a folder named 'scripts' in $HOME/.config/cura/3.2 (or whatever version you have) and place your scripts here.

Fantastic idea! I really want to print raised letter things in different colors.

Any possibility of a Cura V3 flavor of the plugin?

The Cura 2.x version also seems to work with Cura 3.x.

By the way, you are a friggen hero for posting this. I have been trying to figure out how to do this for months.....

In case anyone is wondering, this works using Octoprint as well..You dont have to print directly from an SD card. It pauses, moves, you change the filament, and click resume print on the Octoprint screen and off you go.

I have to hit resume 3-4 times. Anyone else have this problem?

Which printer/firmware?

Anet A8 skynet.

Okay, so it's probably normal. Read the details page to learn what each step is doing.

I had to look at GCode to see what it is doing. It appears to be by design, but is repeating itself:
;added code by post processing
;script: ChangeAtHeight.py
;current z: 0.500000
M83 ;Set extruder to relative mode
G1 E-5.000000 F2400 ;Retract
G1 X10.000000 Y10.000000 Z25.000000 F3000 ;Move head away
M104 S0 ;Turn off extruder heat
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
M117 Heating extruder...
M109 S190.000000 ;Heat extruder back up for filament change (wait)
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G91 ;Set to relative position mode
G1 X-0.1 Y-0.1 Z-0.1 ; Lock motors
G1 X0.1 Y0.1 Z0.1 ; Lock motors
G90 ;Set back to absolute position mode
;Prime nozzle
G1 E6.000000 F6000
G1 E-5.000000 F6000
M117 Press Continue...
M300 ;Beep
M25 ;Pause
G1 E-5.000000 F2400 ;Retract
G1 X79.985000 Y106.099000 Z0.500000 F3000 ;Move to next layer position
G1 E5.000000 F2400 ;Extrude
M82 ;Set extruder back to absolute mode
G92 E23.710640 ;Set the extrude value to the previous (before last retraction)
M117 Printing...

I have an Anet A8 using Cura 15 and this plugin worked BEAUTIFULLY! thank you so much!

im using cura 2.7 and im struggling to find this pluginh i am very new i followed your guide and printer im using is creality cr-10

If you have the plugin installed in the correct folder and have restarted Cura, you will find it in the Cura program via:
Extensions->Post Processing->Modify G-Code->Add a script

Thanks for figuring out the change filament! I was able to finally get some solid results for multi-level color changes. I attached a picture of a small test piece i made before going to the big stuff!

What is the difference between the two plug in files?

changeAtZ.py is for Cura 15.x.
ChangeAtHeight.py is for Cura 2.x.

It works with Geeetech MeCreator 2.

I would like to have option to disable beep and change minimum Z lift from 50mm to 10mm or even 0. I can hear when printer is printing, so loud beep is unnecessary but annoying. Z height of printers is slow and I know I can easily change filament with only 10mm distance from print bed.

Great ideas. I think I'll change the default to 25mm anyway. 50mm is too high. I was getting ready to release v3.0, but I'll add these features first.

Has anyone had any luck on the Ultimaker 3? I've been getting this error: C:\Users\tcebula\appdata\roaming\cura\2.6\plugins\changeatheight: Invalid plugin file.

That doesn't seem like the right place to put the file. The instructions say to put the file in the C:\Program Files\Cura 2.3\plugins\PostProcessingPlugin\scripts folder.

I have 2.7 but I got it working. Thank you very much.


I had some issues getting it working. It was mostly confusion on the method, on the Wanhao/Monoprice end. You should really put in the Thing's description:

-When it stops, don't move the print head, hit "Continue Print" once to lock the motors.
-Change the filament, either manually or with control box.
-Click "Continue Print" to resume print.

This wasn't clear to me in the instructions, so I had a lot of failed prints and trial and error before finally figuring out that hitting Continue Print once would lock motors, and then again to resume. Until then, I hope this helps out others who might have some problems with the motors not being locked.

Thank you for creating this, it works amazing and is a big help on my projects!

I feel like this issue only affects Cura 2 and up, I don't think it's present on Cura 15
, but i cant be sure and I'm not sure why.... I can't find the bug, buyt thank you for a solution!!

Having some issues with the axis not being locked?
What can I change in the .py file to make this not disengage the motors or is that a function of firmware that is doing this? Last attempt the left side of the Z axis moved down I can see it shift in the lime lapse footage and after 6 hours that print was failed.

Can the axis be moved safely using OctoPrint controls while in pause and still return to proper resume positions automaticly? This would re-lock the motors before a filament change if it is firmware timeout unlocking them.


Used it today for my first 2 color print works like a charm. Monoselect Maker Select v2.1

Thank you!

Nice time lapse video. Thanks for sharing!

hi.i tried with anet a8 + skynet firmware
but it seems the stepper dont lock at all..do u know why this happen?
first try the z axis goes down.2nd try, the x axis messed up

Great script here. I'd had problems in the past with "Pause at height" because the steppers weren't locked, so the print head would invariably shift a tad while I changed the filaments. This script gets it right. Thanks!

I just uploaded a tutorial on using this plugin:

Comments deleted.

I don't know if its possible, but can you add something to change filament at the layer number instead of millimeters? Cause that will save a lot of work. I always look at the layer view to see which layer I want to change filament and have to make the following calculation "(layer height-1)*0.2+0.16". It would also be great if you can something like a checkbox to use just M600 instead of al the separate commands.

The usual problem would be that not everybody uses the same layer height, making the program much to complicated I would assume.

Thanks rawlogic. In the latest version, the retraction and subsequent extrusion you have in the code is 7mm. Possible in the next version to move that up to the settings?

Your wish is my command. Version 2.0 has moved all of the retraction settings to parameters! :)

It works on the anet a8! ( Prusa i3 clone )

I'm using Cura 2.5 on Ubuntu.
Can't get the plugin to show up in Cura. Tried to place it in both "/usr/lib/cura/plugins/" as well as in "~/.cura/plugins/".
Restarted Cura.
Doesn't show up under the "Extensions" menu or in "Plugins" tab in "Configure Cura".
Am I missing something here? Anyone else got it to work on Linux?

The correct folder for Ubuntu is:

In case anyone else has the same issue.

I'm using cura beta on my ubuntu, but i don't seem to have the PostProcessingPlugging folder ...

Help would be appreciated

You are probably using a newer version of Cura that is packaged as an appimage. If you installed it by just downloading a file and making it executable, this is an appimage.

With appimages, the folder to place your custom scripts has changed.

  1. Go to the folder $HOME/.config/cura/3.2 (If your version is 3.2)
  2. Create a folfer named 'scripts' here (if it doesn't already exist)
  3. Put the script in the folder you just created
  4. Restart cura
  5. Profit

Note : .config is a hidden folder, if you are using a graphical file explorer, you need to show the hidden files (hit CTRL+H and you'll be good)

First of all: Are you sure it doesn't exist? How did you check?
Secon suggestion: Try creating the missing folder (command "sudo mkdir" in terminal)
If it still doesn't work: Why not install the latest version of Cura? (You didn't say what version you have currently, but since you say it's a beta then maybe its outdated)

Has anyone got this to work on a mac. I have tried putting it in multiple dir's inside cura but can't see it in the app.

I don't know if you have figured it out but you can do the following:

  1. Select Extensions -> Post Processing -> Modify G-Code
  2. Select Add Script drop down list button and select the Change Filament at Height v1.3. This will add the post processing button next to the Save to Removable Drive button

The Pause at height plugin that comes with Cura (at least 2.6) has a "Redo Layers" option that makes it repeat one or more layers with the new filament to get better adhesion.

Any chance of implementing that?

The main reason I want it is that my printer doesn't extrude for the first couple cm after the print restarts, leaving a little gap in the print. If it redid the first layer, it would make a stronger bond between the layers and leave no gaps.

Does anybody know or have used if this works with bowden printers without getting filament stuck in the PTFE tube? I am afraid when it will retract the hot filament may get stuck in the tube, or it may leave some residue in the tube that may result in clogging it.

You should probably not use this with a bowden tube unless you have good luck with retraction. There is quite a bit of retraction (7 mm).

I tried it several times and it works great. After it stops, I just pull out the filament quickly through the tube and nothing goes wrong, and then feed the new filament in. Because of this I have the precise control over changing the filament color mid print. Before I used to cut out the current filament at the extruder (which is about half a meter of tube away from the hot end) while it would be printing, and then feed the new filament into the extruder and it would have to use up all the old filament still in the tube before it would change color. Now I can precisely change the color at a particular height. Perfect. Thank you.

I tried it, but it isn't working with my Repetier delta printer. I see there is a change at height and a change at height for Repetier. I guess I have to have the repetier option, but that isn't configured with your file.

Can someone help how do to get "changeAtZ.py" plugin

Comments deleted.

I guess this does not work with the Monoprice Maker Select Ultimate? Mine pauses at the right height and moves to front left put there is no "change filament" on the screen and nothing to resume. Printer goes to cooling stage after the pause and so wasted prints :( Any workaround for this one? Seems it should be the same as the reg. Select.

Sorry. It appears that the MP Maker Select Ultimate is an Ultimaker clone. The Ultimaker uses a custom Marlin firmware. I'll see if I can find a copy of the firmware online and try to update the plug in when I get a chance if you're willing to test it out for me. :)

Of course I will! :) Thank you

It looks like the Ultimaker Marlin firmware supports all of the necessary commands. It's stated at the bottom under "Important", but, the Change Filament plug in only works when printing from the SD card, not when printing from the computer (via the USB cable). Are you printing from the SD card?

yes SD card and it definitely does NOT work. It will pause and move to correct place but there is no resume print ever. Tried the change material and if you go back to print there is no Resume only to restart the print from the beginning.

Don't know if you ever figured this out, but you have to go into the SD Card option on the printer and tell it to continue print. For some reason, I have to do that twice every time, but it works for me.

This script is awesome! My only issue is when changing the filament if I push too hard the extruder can move up or down, that stepper isn't engaged/locked. Any way to lock that?

It stays locked for me. The script doesn't disengage the motors. However, you might have a "Stepper Inactive" set in your firmware. My firmware defaulted to 360. That's the number of seconds that the motors automatically disable after being idle. So, if I take more than 6 minutes to switch the filaments, the steppers will automatically disable. You can increase this time in your firmware (available from the Configuration menu on the controller on my printer), or stay attentive and change the filament quickly.

Thanks for the reply. I want to say I did it instantly, but I can't with 100% certainty. I'm printing some coasters now that have 5 changes in them and on the 2nd to last one and all has worked well so far. Thanks a ton for writing this plugin!

Will this work with OctoPrint or do I have to print from the SD card?

Seems to have worked fine with my Octoprint setup with a Maker Select. I had to hit resume twice after changing the filament but it resumed perfectly. Finding this really useful, so I am glad it works with my setup.

tried it with renkforce rf100, after resumed the percent counts to 100% and finish print. but not with the second filament

This worked perfectly for me. On my Monoprice Maker Select, it parks the head at the home position well above the bed. I then MANUALLY pull the filament and load MANUALLY the new filament. On loading, give the new filament a little time to reach melting temperature, then hold the clamp on the extruder head and advance the filament until the color change is complete. Hit "continue" and it resumes where it left off. DO NOT leave the "print" screen, don't attempt to use the unload and load filament functions under the tools menu. REMAIN in PRINT the entire time. I'm making replacement draw knobs for a pipe organ and wanted a white face label with black background. Works perfectly! Salamat po.

Thank you so much for making this available! We have a dual extruder printer as well, but couldn't get a color change at a certain layer to produce a good print, instead leaving blobs of the other color all over the place. With this plugin we could print on our Airwolf3D Axiom and change color at a certain height, allowing us to create a 3D printed business logo in two color without a whole lot of ugliness especially doing a light background with dark text.

Thanks Rawlogic!

Awesome to hear. Thanks for the feedback.

Does it work with (Wanhao version) Cura, I've put the plugin in the plugins folder, it doesn't show up when I restart Cura,

Yes. it works for Wanhao versions. In the Expert menu, you'll need to "Switch to full settings" to see the plugins. Also, make sure you restart Cura after dropping the plugin in the folder. Make sure you use the "changeAtZ.py" file, which will work with both Cura 15 and their specially branded Cura 16.

I tired this today with my MonoPrice Mini Select, and while it paused beautifully, there was no way to to resume
All I had the ability to control was
extruder temp.
bed temp
speed multiple
Pause/Resume - which homed the print head, and then returned it to the same location - but did not resume printing

Any thoughts?

To resume, it's under SD Card. Continue Print.

but there's no way to get out of the print display (I'm running 24.42 if that happens to matter) the only way to get out of the "actively printing.gcode" screen is to cancel the print

Sorry, I didn't realize earlier that you are using the "Mini" Select. On the "Maker" Select, to get out of the display, you just press the button on the knob on the control box. Are you able to pause the print while it's printing, then resume it? On the Maker Select, you can. I suppose the "Mini" select uses a different firmware and may not be supported. I'll remove it from the list of possible supported printers. Please let me know if you figure anything out further.

Figured out a workaround... after connecting my printer to wifi, I am able to send an M24 command to resume using repetier-host

Hi! Can you elaborate on how you solved this issue? I just got my MonoPrice Mini Select V2 about a week as my very first 3D printer so I'm quite inexperienced. I ran into the same problem you did where it would pause just how I want it to but there's no resume option on the control panel. Thanks!

cheers man.. im gonna try that ;) whats the most amount of time you can have during the pause .. to change filament ??

thank you

Thanks for this trick!!! I'm doing the same now in a MALYAN M200, printing by SDCard with repetier host connected to the printer by USB. When the print is paused I can change filament and send M24 command to resume.

That's so cool. It's too bad that you can't resume it via the control box.

Tried this with my Prusa i3 today using Cura 15.04.6 and it worked great. Thank you.

Interesting. Any idea if this will work with the current version of Cura (2.3.1)?

There is now a Cura 2 version of the plugin available.

Comments deleted.