feat(mm): toolchange cyclic order + custom sequence (Orca #14868) - #50
Merged
Merged
Conversation
) Edge lacked the parent ToolChangeOrderingType feature that Orca OrcaSlicer#14868 assumes. Add the Default/Cyclic enum, Tab control, print invalidation, skip last-used-first rotation in Cyclic, and ascending Cyclic order via get_custom_seq. Ultra dual-nozzle grouping still runs first and still writes filament_map. Co-authored-by: aceRage <aceRage@users.noreply.github.com>
…14868) Add toolchange_cyclic_order (comma-separated 1-based sequence) and toolchange_cyclic_first_layer. parse_cyclic_order drops garbage/dupes/ out-of-range tokens. Cyclic indices use physical + enabled mixed filament count, not flush-matrix size. UI fields show only when ordering is Cyclic. Co-authored-by: aceRage <aceRage@users.noreply.github.com>
|
❌ Documentation validation failed 🔗 Link Validation Errors📄 doc/developer-reference\Built-in-placeholders-variables.md:
📄 doc/developer-reference\How-to-wiki.md:
📄 doc/Home.md:
📄 doc/Tab.cpp:
🖼️ Image Validation Errors📄 doc/developer-reference\How-to-create-profiles.md:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Port of OrcaSlicer #14868 (Toolchange Cyclic Order) onto Edge. Edge was missing the parent
toolchange_ordering/ToolChangeOrderingTypefeature, so this is a two-commit PR rather than a cherry-pick of the 9-file upstream diff.toolchange_ordering(Orca Add toolchange ordering option (Standard/Cyclic). OrcaSlicer/OrcaSlicer#13582) — enum Default / Cyclic (Orca PrintConfig has no third “Minimum flush” value; that behaviour is Default’s existing flush-volume reorder), Tab control, Print invalidation (psWipeTower→psGCodeExport), skip last-used-first rotation in Cyclic, and ascending Cyclic order viaget_custom_seq.toolchange_cyclic_order(comma-separated 1-based sequence, e.g."3,2,1,4"),toolchange_cyclic_first_layer,parse_cyclic_order/apply_cyclic_order, Catch2[ToolOrdering][Cyclic], UI fields shown only when ordering is Cyclic.Unlisted filaments print last in ascending order. Empty order cycles ascending. First layer keeps adhesion / custom first-layer sequence unless the flag is on.
Edge adaptations
set_nozzle_group_result/filament_map) still runs first and is unchanged. Cyclic is applied in the classic flushget_custom_seqafter grouping.sqrt(flush_volumes_matrix), so a short flush matrix cannot shrink the valid 1-based range (Edge fix(toolordering): span filament_info to filament count with get_at (Orca #14789 adapt) #37 / Orca fix: guard per-filament array reads against short config arrays OrcaSlicer/OrcaSlicer#14789).Screenshots/Recordings/Graphs
UI is Process → Multimaterial → Advanced → Toolchange ordering, plus expert Cyclic order / Apply cyclic order to first layer (shown only when Cyclic is selected). See upstream screenshot on Orca OrcaSlicer#14868.
Tests
Accept criteria:
apply_cyclic_order+ emptyparse_cyclic_order)."3,2,1,4": per-layer sequence follows; garbage/dupes/out-of-range dropped (parse_cyclic_ordersections).cyclic_first_layeringet_custom_seq).filament_mapheader still written (grouping block is above Cyclic and unmodified).toolchange_ordering/toolchange_cyclic_*invalidates wipe tower (and therefore G-code) inPrint.cpp.Catch2
[ToolOrdering][Cyclic]: newtests/libslic3r/test_toolordering_cyclic.cpp. Parser/apply_cyclic_ordercases were also exercised with a standalone C++17 harness (all passed). Fulllibslic3r_testswas not run in this environment (no configuredbuild/tree / deps). Please run:cmake --build build --target libslic3r_tests ./build/tests/libslic3r/libslic3r_tests "[ToolOrdering][Cyclic]" --order rand