Using Cura Post Processing command Filament Change


I have used the Cura Post Processing command Filament Change to allow me to change the colour at layer 40. This has turned out to be a massively long print and after 20 hours and 20 minutes (!!!) the printing stopped and the head returned to the home position as I expected. I changed the filament (and did think that would be all I would need to do) but nothing happened. The screen was still showing Pause or Stop, so I clicked Pause (thinking that maybe there would be a resume?). the screen seems to be frozen now.

Any ideas? Obviously, worst case is I have to switch off and back on, but in that case, is it possible to start a print from layer 41?


snapmaker doesnt really support the pause and resume gcode right now - something they have agreed to address but have not yet.

you can restart from layer 41, if you edit the gcode to delete layers 0-40

easier said than done, i tried it once (but didnt know the exact layer number) by meausring it and i was off a little bit.

maybe you’ll luck out and the reboot will bring the power loss feature into play and it will continue, i dont know.

I rebooted and the power loss reboot was offered. Unfortunately, it took me back to the exact point that the power was switched off - frozen!!!

So, I’m going to attempt to modify the gcode. I’ve never done this before, but as I spent 20 years as a programmer I feel confident I can do this!! But first I want to check a couple of things.

I have downloaded and installed Notepad++ and a custom language file for gcode format files.
Do I delete EVERYTHING before the M600 command inserted by Cura post porcessing, of just from layer 0 to M600, keeping all the commands that are there before layer 1? (keeping those commands would be my inclination, but with an unfamiliar language I need to check!).

Thanks for your help with this

Just let the g28, the heating m190 and m109 in there. Prime the nozzle on home position with g1 e15 and reset the extruder position to zero with g92 e0. And add a g0 to last position before the m600. But with the right z height of the new layer.

1 Like

You have all been so helpful - thank you, thank you , thank you.

I found the z axis height just before the M600 command inserted by the post processing in Cura, so was able to easily follow your instructions to edit my gcode file to remove the layers already printed. It’s now chugging away having started in exactly the right place.

I have learned so much this evening - not least that a print that’s failed partway through is not necessarily lost!!

Now all I need to do is wait the huge number of hours (about 11.5 more according to the very unreliable estimate on screen) and then I can put together what is hopefully a rather marvellous box!

Thanks once again. One day I hope to be able to help someone else!



Just one more thing - is there any documentation I can look at that will tell me which G or M codes will work with my Snapmaker?


You would expect the list hey publish to be correct
unfortunately it’s not entirely complete & correct

1 Like

i never seen that snapmaker one.

there is a marlin guide, but snapmaker has kinda left some of it out intentionally

Gcode | Marlin Firmware (

i do reference it a decent amount

they are being asked a lot to implement the pause resume and i think that they will end up doing so. which would be really great…

not that you should drop 150 bucks on it, but simplify3d allows you to break different parts into different processes so you can switch filament at whatever layer then just run the next part. basically what you did above but with support from the slicer.

I looked through the guide/list and although it’s really interesting and has given me a better understanding of what gcode is, it’s really not a lot of help!! As you said, it’s not complete or correct, which would lead me to thinking I can use commands that I really can’t, or conversely, that a command I need is not available!
Some commands appear to have requirements or dependencies (that look to me to be module or macro names i.e.ADVANCED_PAUSE_FEATURE) that are mentioned but not documented (or even stated where they are!)
The M600 (Filament Change) command that I used that didn’t work is on there
As it also says 'The settings for this command can be found in Configuration.h ’ I suspect this documentation is really aimed at the Snapmaker software developers rather than Snapmaker Users as I really don’t fancy trying to dig into Luban or (more likely) the firmware to find these things!!

So far, it’s not often that I want to change colour during the printing so I’m happy in those cases to edit the gcode, and even split into multiple files, each one starting where the last finished so I can change filament without having to use pause - Or I can just do what I did the first time and cut the filament, wait for it to run out and change it then - this is OK if the change point isn’t critical!

Thanks for all you help and pointers - I’m learning so much and thoroughly enjoying it

It really is a lot of fun, isnt it?

Marlin as is run on the snapmaker is a compiled code. The base code consists of a main file and a few includes. One of those is called configuration_h, it contains , as the title suggests , configuration information. It is machine specific and is just a start point, so it has for example the no of steps per mm for each axis and the extruder(s). The file that we download and load to snapmkr is a compiled version. You can run the compiler on your pc but be careful.

Gcode is something else, It is a list of commands that tell the compiled marlin what to do as you are aware the gcode is generated by your slicer (Luban etc)