mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-08-04 16:52:29 +00:00
fix(engine): publish the nozzle group result for sequential prints
The Print-level LayeredNozzleGroupResult had a single producer, the by-layer branch of ToolOrdering, which is gated to non-sequential prints. The by-object branch in Print::process computed a grouping only in auto map modes and never stored it, so a sequential slice exported with a null group result: the per-nozzle placeholder tables came up empty and any start g-code indexing nozzle_diameter_at_nozzle_id[] aborted with "Indexing an empty vector variable". A prior by-layer slice masked the bug by leaving its (never cleared) result on the Print. Now the by-object branch runs get_recommended_filament_maps in every static map mode (in manual modes the result mirrors the user's assignment, deviations throw as in by-layer) and publishes it print-wide. The config write-back stays gated to auto modes: in manual modes it would only re-store the pre-slice values. Regression test: a two-object by-object print must publish a non-null group result and resolve nozzle_diameter_at_nozzle_id[] in start g-code (both fail without the fix). Suites green (libslic3r 48929/162, fff_print 633/60); 18-fixture byte gate identical; the by-object repro project goes from the export error to valid g-code, determinism x2.
This commit is contained in:
@@ -2116,7 +2116,8 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first
|
||||
{
|
||||
// Orca: the ToolOrdering member is stored unconditionally, but the Print-level store is gated
|
||||
// behind a not-sequential check. There is no is_sequential_print() here, so it is mirrored
|
||||
// with the same predicate the branch above uses.
|
||||
// with the same predicate the branch above uses. Sequential prints publish their result
|
||||
// from the by-object branch in Print::process instead.
|
||||
const bool not_sequential = print_config->print_sequence != PrintSequence::ByObject ||
|
||||
(m_print && m_print->objects().size() == 1);
|
||||
if (m_print != nullptr && not_sequential)
|
||||
|
||||
Reference in New Issue
Block a user