[Bug] Print by object: all brims printed first with Toolhead 1 instead of each object's own filament

Title: [Bug] Print by object: all brims printed first with Toolhead 1 instead of each object’s own filament

Snapmaker Orca version: 2.4.1
Printer: Snapmaker U1
Windows

Description:
After updating to the latest version, brims no longer work correctly in “Print by object” mode. I have 3 objects on the plate, each assigned to a different filament/toolhead (white, blue, black). In the preview, all brims are shown in the same color (Toolhead 1 / white), regardless of the object’s assigned filament.

During printing, the printer first prints ALL brims with Toolhead 1, and only then starts printing the objects one by one with their own toolheads. Because the brims are printed long before their objects and cool down, the objects don’t bond properly to them and the brim doesn’t do its job.

Expected behavior:
In print by object mode, each object’s brim should be printed with that object’s own filament, immediately before the object itself (as it worked in the previous version).

Actual behavior:
All brims are printed together at the start with Toolhead 1, then the objects are printed sequentially.

Steps to reproduce:

  1. Place 3 objects on the plate and assign a different filament to each.
  2. Set Print sequence to “By object”.
  3. Enable brim (Auto/Outer brim).
  4. Slice and check the preview: all brims are the color of filament 1.

.

I can confirm this behavior. Tried the same in Orca 2.5.0 and the brim works correctly (brim of each object matches the filament of the object).

Regarding the non-bonding, make sure the gap is set to 0.0… defaults to 0.1.

Thank you very much for your feedback.

The reported bug has been confirmed and is scheduled to be fixed in a future Snapmaker Orca update.

I could reproduce this in the sliced file, without a printer, and it is not limited to “by object”.

Three 15 mm blocks, one filament each, outer brim, Snapmaker Orca 2.4.1 (macOS command line). The file has a single brim block: all three brims are printed with T0 before any object starts. With “by object”, block b (T1) only starts after block a is finished and block c (T2) after a and b, which is the cooling you describe. With “by layer” the brims are still all printed by T0, so the wrong colour is there too. The same three blocks in OrcaSlicer 2.5.0-rc give one brim per object, printed by that object’s head right before it, as KCC_703 saw.

Until the fix ships, this small Python script (no dependencies) reads a sliced file and says which objects get their brim from another head: u1-dryrun/tools/brim_wrong_head.py at main · DesignMaster-Solutions/u1-dryrun · GitHub

$ python3 brim_wrong_head.py brim-by-object-orca-2.4.1.gcode.gz
BRIM ON ANOTHER HEAD: 2 object(s)
  b.stl: printed by T1, its brim by T0 (line 629); 1 other object(s) are printed in full before this one starts
  c.stl: printed by T2, its brim by T0 (line 1074); 2 other object(s) are printed in full before this one starts

Both sliced files are in the repository’s examples/ folder, so anyone can repeat it.

Limits: these are my own test blocks, not your plate, and I have not printed them. The script matches each brim to the nearest object, so parts nested inside each other can be matched wrongly. I did not test a workaround in 2.4.1.