Minimize flushing by optimizing filament print order

Feature description

I think the best way to describe my feature request is with an example:

Let’s say I want to print some figurine with blue as the main body color and a bunch of black and white details (eyes, eyeballs, etc.).

Switching from any color to white requires a lot of flushing (much more than switching between colors).

So to minimize overall waste, it would be ideal to minimize the number of switches to white.

This could be achieved by having white as the last color every other layer:

Example

  • Layer 1: black - blue - white
  • Layer 2: white - blue - black
  • Layer 3: black - blue - white
  • Layer 4: white - blue - black
  • etc.

=> A filament change to white only needs to occur in 1 out of 2 layers.

The total number of filament changes is not affected obviously, but the total amount of flushed filament (and therefore filament cost and printing time) would be minimized.

Current behavior

Currently (Bambu Studio v1.9.5.51), the slicer seems to alternate the colors in seemingly random order, starting a layer with the color that was used last in the previous layer (to minimize the number of filament changes).

I’ve seen the following examples of filament orders:

Example 1

  • A: blue - white - black
  • B: black - white - blue
  • A: blue - white - black
  • etc. (B, A, B, A, …)

=> This was the worst example. A change to white occurred in every single layer, leading to an immense amount of flushed white.

Example 2

  • A: purple - black - white
  • B: white - purple - black
  • C: black - white - purple
  • A: purple - black - white
  • etc. (B, C, A, B, …)

=> This was slightly better. A change to white only occurred in 2 out of 3 layers.


Disclaimer:

I am still fairly new to 3D printing and I really hope that I didn’t overlook some aspect that would completely invalidate my idea.

I understand why (a lot of) flushing is needed and I am aware of various tweaks to minimize waste in general (lowering flushing volume multiplier, decreasing prime tower size, flushing into infill).

1 Like

Makes sense. The order could be further optimized by choosing the lowest flushing volume as a sort function for switch order and making it so that next layer started with last layer’s colour.

You can set the filament print order per plate manually:

1 Like

@EnoTheThracian

I am aware of this setting.

It doesn’t solve the problem and in fact makes it even worse:

If specifying for example blue - black - white as filament order, the slicer will strictly adhere to this setting and therefore switch to blue in the beginning of each slice instead of printing the white bits with the already-loaded filament first (as it does on Auto for whatever happens to be the last filament in the previous layer).

A partial solution could be implemented in this settings dialog as follows:

  • Either with a checkbox like “Always use already-loaded filament first”.
  • Or with an option to specify separate sequences for odd and even layer numbers.

This would be pretty easy to implement (from a programmer’s perspective) but it would need to be set manually each time (tedious, requires knowledge).

Instead, the best order could be calculated from the flushing volumes. This would benefit all users, not just the ones that know about these kinds of advanced settings.

2 Likes

Welcome to the forum with a great first post! :smiley:
I think your suggestion makes perfect sense. Probably best chance for implementation is creating an issue in github of either BambuStudio or OrcaSlicer.