Pause and change filament?

I have a Mini with the new test firmware installed and the test version of Cura. I can’t get it to pause, let me purge the filament, then resume. I can pause, but after a short time, less than a minute, I get an error in the log window “rror:RXbuf full”. And what seems to be the next couple commands seem to execute, then nothing. The test thread for Cura18 shows a mountain printed with filament change, so it seems like it should be possible.

For this test, I connected the printer direct to my Macbook Pro, latest OSX installed. I set the pause at Z plugin to stop, and it does. Then it starts up again, failing the print. So I tried again pressing the pause button in the UI. Still breaks.

I found one way that seems to work in Simpify3D and OctoPrint.

Make separate processes for each color based on height. This can be trial and error if you didn’t design it. The basic idea is the same as the Con-Man logo that is on Simplify3Ds blog.

For the lower base color layers, I changed the end script to this…

;Pause Code
G91 ;Set Relative Mode
G1 E-5.000000 F500 ;Retract 5mm
G1 Z15 F300 ;move Z up 15mm
G90 ;Set Absolute Mode
G1 X140 Y15 F9000 ;Move to hold position

G91 ;Set Relative Mode
G1 E-40 F500 ;Retract 40mm, this can be commented out if you just want to pause to insert magnets or something.
M300 ;Beep (marlin)
M84 S0 ;Disable idle timeout
M0 ;Idle Hold

This is cobbled together from a couple sources. It moves the print head to the far right side, making it easier to replace the filament. The beep doesn’t seem to do anything, but maybe I just can’t hear it in the printer case.

For the next color, I change the start script… Also make sure to disable any skirts etc.

G1 Z-15 F300 ;move Z down 15mm (Put it back where the previous pause moved it from)

G90 ;Set Absolute Mode
G1 F5000 ;Set speed limits, depending on slicer this can be set to your initial mm/min speed or it can be used for the following move only then the next layer will set the speed
M82 ;Set extruder to Absolute Mode
G92 E0 ;Set Extruder to 0

When saving the GCode from Simplify3D, save each process individually. Combining them causes it not to add the start/end scripts in between the processes. Then use a text editor or other method to combine them in the right order.

In Octoprint, the M0 command puts it into pause mode. I understand this works in Simplify3D as well, not sure about Cura. So Octoprint does the first process, moves up and right, retracts the filament, then pauses. Remove the filament, swap spools, feed the new color in to prime it. Once you get it primed, resume the print in the Octoprint webUI. It will move back down, reset the extruder zero, and you’re back.

Using a Cura plugin, this could all be automated into a simpler process. I might try looking into that.