Possible to change filament during paused printing?

Hello. I googled but did not find this specific question and answer.

Is it possible to pause printing, change filament color, and then continue printing?

If not, is there a way to wait for the right moment to cancel a job, change filament color, and then load a partial job that will somehow be re-calibrated to start printing on top the existing job?

Thanks and sorry if this was already answered and I missed it.

There’s a few other threads about this, but nothing specifically like you’re asking.

Regarding pause and resume, no that’s not possible.

Best bet now is, like you said, have the job end and then start a new job with the next color.

Personally, I’d do that using the simplify3D variable settings wizard. Outside of that, it would require identifying where in the gcode file you want to pause and moving everything after that to a new file, as well as adding necessary start and stop code so that the nozzle lifts up a bit. It’s not trivial.

OK, thank you! Sounds like more than I would want to bite off to chew on right now!

The snapmaker have a sensor for when the filament run out, so I figured I would test this (by clipping the filament just a few centimeters over the module approximately at the point in the print I wanted to change color).

For me it worked as intended, and when loading up with new filament I changed the color.

Perfect result for me - printing started up again right at where it stopped without any modifications at all.


This is an “easier” approach: https://www.myminifactory.com/object/3d-print-138353

Just change the sharpies at the right time :wink:



Wow, sounds like a great idea. Thank you.


To change the filament color is possible for a definitive layer height. Therefore I use the “Post Processing Scripts” Plugin of Cura Slicer (latest Release 4.8.0) in combination with OctoPrint.

My SnapMaker A350 stops by a predefined layer number (e.g.layer 10) / or height in mm, where you want to change the filament color. If the layer number is reached, you can change the filament color, extrude some filalment to clean out the old colour and resume the paused print job by using the new colour.

Example: 3 Colors (Green, Black and Transparent Red) Filament used.



??? No kidding? What firmware are you on, and would you mind posting the gcode?

I use not the latest firmware, (seems to be a litte buggy with the laser) firmware 1.10.0.

I can send the code to you but you would not be happy cause you can’t change it.

Best way I used to design “Multi Colour” Prints like this is:

  1. Design this example in INKSCAPE. Use a Font and a circle (as “base” plate) in a different layer.
  2. Export this to Fusion360
  3. Mark e.g. each Letter and use “e” to Extract it for e.g. 5mm. The same for the circle, which would be the base plate but with a lower height. (e.g. 2mm)
  4. Export it as STL File and import it to CURA
  5. Use the gcode PostProcessing Plugin and stop it to the first or second layer, where the fonts are printed without the base plate (after 2mm in this example). This can be defined with the plugin
  6. generate the gcode with CURA and this “pause” code
  7. Using “octoprint” it stopt and I can change the filament color.
  8. … and resume the print again with a different color for all Fonts.

I’m trying to understand if the pause feature you’re using is using a feature inside the controller via gcode, but it’s sounding more like this is instead instructing octoprint to stop sending gcode to the controller and not using any features in the controller.

Does that sound like accurate reading of what you said? This requires octoprint to be able to pause? I wasn’t sure from your original post if the reference to OctoPrint was required or not, but I think your latest post confirms it’s required for pausing to work.

In my understanding this is a normal Marlin G-Code function (M0).
Refer to the Cura Plugin as screenshot.


So it should work if you generate the gcode using cura and load it into our snapmaker using an usb pen drive. I use octoprint instead of loading files manually. The M0 command will be generated into the gcode by cura before the gcode start to work on the defined layer height.

But I use the octoprint webinterfase to start the printjob again. I have to figure out the M Command to restart any paused job.

The firmware was compiled without the HAS_RESUME_CONTINUE flag so M0 and M1 will return unknown command.

Additionally, while the M108 break and continue command is present in the firmware, the serial buffer will fill up and since EMERGENCY_PARSER is disabled due to chip limitations the M108 command will sit in the buffer unable to be processed.

So using M0 and M108 to change filament will not work.

Whatever Octoprint is doing to pause and resume must be separate from the use of M0 and M108.

Additionally, since the firmware is compiled without the ADVANCED_PAUSE_FEATURE, M600 to command a filament change is also disabled.

1 Like

I have generated a G-Code File in Cura using the “Pause Extension Plugin” starting at Layer 20.

PS: The standby Temperature is default 0 degrees, but this is a simple example how the code has been generated with default settings of Cura. M0 is the stop Code sent to our printer.

This Code has been added by Cura’s Plugin. In a deeper Detail I have not worked in until now …

;added code by post processing
;script: PauseAtHeight.py
;current layer: 20
M83 ; switch to relative E values for any needed retraction
G1 F300 Z5.3 ; move up a millimeter to get out of the way
G1 F9000 X190 Y190
G1 F300 Z15 ; too close to bed–move to at least 15mm
M104 S0 ; standby temperature
M0 ; Do the actual pause
M109 S210 ; resume temperature
G1 F300 Z5.3
G1 F9000 X175.486 Y167.914
G1 F300 Z4.3 ; move back down to resume height
G1 F1500 ; restore extrusion feedrate
M82 ; switch back to absolute E values
G92 E790.92515

1 Like

I have snapmaker 350, and I suppose your question is about anapmaker.

yes you can change color by pausing printing. I have done it albeit the feature is not implemented for that.

it is the same as if your filament is runout and you put a new roll on, just if you want a clear color cut you have to purge the nozzle until filament is clean.

no big deal BUT: it is not a 2 color print (as the color change is not programmedin gcode) !!!

Thank you so much! I have not yet gotten up the courage to try it, but I might!

Yes you can, I have done it many times as well as multiple times a print, just hit pause, change filament by unlatching, pulling the filament out, close latch, then resume printing, has worked well for me!

1 Like

Cool! Just to be sure, are you also inserting the new color of filament before you close the latch, or waiting for the sensor that detects no more filament and using that method to insert the new color?

@dcarpenter65 can you please explain in more details? I’m really interested on pause and change the filament color manually but not sure on how to unlatch, pulling etc…


@ AirMonk

Manual loading/unloading of filament is explained here: Snapmaker 2.0 3D Printing V1.0.0 – Snapmaker

Does that help you get a better handle on it?