I want to make a print where I swap color halfway through. I have tried doing something similar with a 2+ Connect before, and what the internet told me then was to go into Ultimaker Cura and modify the G-code to add a filament change. And the printer blew right past that layer and printed the whole thing in one go. (How Cura would allow me, completely without warning, to insert G-code unsupported by the chosen printer, especially since the chosen printer is of their own make and entirely under their control, is beyond me, and also a different question.)
So naturally, now that I'm working with an Ultimaker 2+ (Extended, with original firmware up-to-date according to Cura), I am inclined to distrust Cura with these things. I have tried to look into modifying the G-code manually to add a pause, and then by hand interrupt the print to change filament. The two main options I have found are the commands M0
and G04
. But none of the sources I have found have mentioned printer support. I haven't been able to find anything online that tells me whether M0
or G04
are actually supported by the firmware.
The G-code that Cura makes, with the settings I chose, uses M0
, as shown below:
G0 F9000 X19.305 Y19.27
G0 X19.27 Y19.27
;TIME_ELAPSED:25576.615046
;TYPE:CUSTOM
;added code by post processing
;script: PauseAtHeight.py
;current layer: 22
M83 ; switch to relative E values for any needed retraction
G1 F300 Z4.57 ; 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
M0 ; Do the actual pause
G1 F300 Z3.57
G1 F9000 X19.27 Y19.27
G1 F300 Z3.57 ; move back down to resume height
G1 F1800 ; restore extrusion feedrate
M82 ; switch back to absolute E values
G92 E3066.65549
;LAYER:22
;TYPE:FILL
;MESH:brett.stl
G11
G1 F3600 X34.487 Y34.487 E3067.94669
Would this even work? And if it turns out that it doesn't, is it as easy to fix as swapping out that M0
command with a G04
(possibly with a specified time argument)? Finally, I want this change to happen between what Cura, in the slice preview, calls layers 23 and 24, where it seemingly gives the first layer the name 1. The G-code insertion wizard asks me to insert the last layer I would like finished before the pause and specifies that 0 is the first layer printed. So I enter 22 in there. But in the above G-code, it seems to have inserted the pause before it begins to print its layer 22 (which in the Cura preview would be layer 23?) I need some help untangling this.