Small tweaks to ease multifilament prints

I’ve decided to put the proposed changes on the top of this post as a TLDR because my frustrating experience has caused quite the rant.

Allow us to manually determine print order of parts.

Allow us to insert pauses in the horizontal scrubber bar in the slicer, not just inbetween layers.

Allow us to determine which actions take place during a filament change I.E. wether it’s an automatic material changer and a nozzle purge or a pause requiring human intervention.

These 3 additions will make more technically challenging prints a lot easier to do, more intuitive to set up in the slicer, and will mean that we don’t need to manually edit gcode and use a USB when we have a wifi capable printer.

//////Rant begins////////

I’ve run into an issue recently when attempting to do black and white multifilament prints on my creality K1.

Multifilament is an incredibly useful tool to have in your arsenal as a maker, especially since it allows you to embed text, logos and diagrams into your functional prints.
More than just an aesthetic nicety, multifilament also opens the door for print in place parts with flexible tpu components embedded in them from the go, allowing for more complex and precise parts with no assembly after the fact.

That all being said, the fact that this very basic and essential capability is all but ignored in the slicer has made it an absolute nightmare to attempt on the k1.
I’m not talking about implementing pauses in your print and changing materials by layer, but changing materials in the layer itself.

For a customer who wanted a keychain with letters on both sides, I have learned the following:

Split your print into 2 parts, one being the first material, the other being the second.
In the case of flush text, extrude the letters into your part by 0.2mm (or whichever layer height you are using to print) and keep the letters after the extrusion. Now you have letters with a “pocket” for them to sit in.
So far, so logical.

Next, integrate both parts into an assembly in the slicer. Not doing this will make it see the top letters as “floating” and either refuse to print outright, or will only print with supports enabled.
These supports then interfere with the main body of your print causing the slicer to throw up an error and refuse to work.

Side note: Allow us to override warnings and export or send a print regardless. We’re all adults here, if I need to click on some checkboxes to force a potentially hazardous print I’d prefer that over being unable to print something I know will work.

Now comes the fun:

When doing a multi filament print, print order of the parts is extremely important.
If I’m printing a black object with some white text on the first layer, I want to start with the white text. It’s going to print very fast, after this I can switch to the main black and let the print run as normal.

You can weight this by loading the parts in the order you wish to print, so first import the letters into the slicer, followed by the main body.

HOWEVER: If your body requires supports, the slicer will automatically print those first and then start on the object the supports are required for regardless of load order.

This means that on my black and white part, I have to start with black, wait next to the printer for it to complete the first layer, then switch to white for the letters, then switch back to black again for the rest of the print. This means more of my time wasted and an extra unnecessary nozzle purge.

Now on the subject of switching filaments within the layer:

When looking at the gcodes for the material switch, the slicer has a toolchange section that it uses for this.

CP TOOLCHANGE START
; toolchange #1
; material : PETG → PETG
;--------------------
; WIPE_TOWER_START
; CP TOOLCHANGE UNLOAD
;WIDTH:0.6
;WIDTH:0.5
M104 S255
G4 S0

What does this do? It moves the toolhead off to the side, then continues on printing the purge block like nothing was asked of it.
I don’t know if this is supposed to trigger the material changer because I don’t have one, but in the case of my bone stock k1SE with no peripherals it meant that I had to watch the printer like a hawk during one of these changes and pray that it would recognize the pause button before getting to the print.

I fixed this issue by inserting a pause manually into each toolchange:

; CP TOOLCHANGE START
; toolchange #1
; material : PETG → PETG
;--------------------
; WIPE_TOWER_START
; CP TOOLCHANGE UNLOAD
;WIDTH:0.6
;WIDTH:0.5
M104 S255
G4 S0
PAUSE

This way the printer at least waits when it has to switch filaments but the fact that I have to go edit gcodes manually for something that a prusa mk3 can do out of the box is slightly mental.

Hopefully this use case clarifies the tweaks I have proposed on the top of this post, if there’s any slicer functionality I missed that could have solved this issue please let me know.