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:
Place 3 objects on the plate and assign a different filament to each.
Set Print sequence to “By object”.
Enable brim (Auto/Outer brim).
Slice and check the preview: all brims are the color of filament 1.
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.
$ 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.