feat(wipe-tower): BBS no-sparse clearance and safe descend (Orca #15485) - #51
Merged
Merged
Conversation
…Slicer#15485) Port compacted prime-tower clearance validation, safe descend-after-travel, shared sparse-layer helpers, GLCanvas by-layer preview, and timelapse auto-disable so "No sparse layers" is usable on Bambu-style towers. Co-authored-by: aceRage <aceRage@users.noreply.github.com>
…rcaSlicer#15441) With no-sparse compaction the tower sits below the object, so custom toolchange G-code must run at real layer Z and only then return to the tower. Combined with OrcaSlicer#15485 defer-descend: lift/restore is a no-op when the nozzle never left layer Z, and deretraction is the in-tower descend. Verified against Orca OrcaSlicer#15441 head d1b31fe (OPEN, mergeable dirty; final-purge reverts already applied upstream). 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:
|
aceRage
marked this pull request as ready for review
September 20, 2026 18:41
Owner
Author
|
Status update (Sep 20): marked ready for review. Branch is up to date with Catch2 results on this branch (Windows, Release):
Remaining gate before merge: real multi-filament no-sparse slice to confirm descend-over-tower behavior and |
5 tasks
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 #15485 (MERGED,
7c742e09c7) onto Edgemain, plus a labeled second commit of the remaining Orca #15441 Z-restore.Makes No sparse layers usable on Bambu-style prime towers:
append_tcrdefer-descend + in-tower NC travel).compacted_wipe_tower_clearance_*) with plate highlight polygons.extruder_clearance_dist_to_rod(default-off / unused until a profile sets it).change_filament_gcoderuns at real layer Z, then Z returns to the tower.Fixes Orca OrcaSlicer#15381 / Orca OrcaSlicer#11703 class of collisions. Option stays default-off; default profiles should match baseline G-code.
Commits
feat(wipe-tower): BBS no-sparse clearance and safe descend (Orca #15485)— Print clearance, GCode descend/travel, WipeTower+WipeTower2 helpers, GLCanvas/PartPlate preview, config/UI/timelapse, Catch2.fix(wipe-tower): restore layer Z around change_filament_gcode (Orca #15441)— placeholders + restore/deretraction around toolchange. Verified against Orca fix: fix no sparse layers during a toolchange OrcaSlicer/OrcaSlicer#15441 headd1b31fee(OPEN,mergeable_state: dirty; the final-purge commits were already reverted upstream, so this is the remaining Z-restore only).OrcaSlicer#15441 coordination
Orca OrcaSlicer#15441 is still OPEN and not green (CI is effectively snyk-only). Policy was: re-diff every GCode/WipeTower hunk both PRs touch; include Z-restore as a second commit if it composes safely; otherwise land OrcaSlicer#15485 alone and document residual multi-toolhead risk.
Included. The remaining OrcaSlicer#15441 patch is small (+58/−1 upstream, 3 files) and composes with OrcaSlicer#15485:
GCode.cppappend_tcrinitial Zdefer_compacted_descend— do not drop onto the modelwill_go_downgates restore/deretraction aroundchange_filament_gcodewill_go_down && !defer_compacted_descendfor the immediate drop; restore is a no-op when still at layer Z; deretraction is the in-tower descend after custom G-codeGCode.cppappend_tcrafter toolchangecompacted_below_objectdescend injected into[filament_start_gcode][deretraction_from_wipe_tower_generator]after[change_filament_gcode]GCode.cppappend_tcr2set_extruderwhenwill_go_down && enable_prime_towerwill_go_down+[deretraction_from_wipe_tower_generator]WipeTower.cpptoolchange_Change[restore_layer_z_before_toolchange]/[deretraction_from_wipe_tower_generator]around[change_filament_gcode]WipeTower2.cpptoolchange_Change[restore_layer_z_before_toolchange]before[change_filament_gcode]If Orca OrcaSlicer#15441 later grows past
d1b31fee(e.g. the reverted final-purge work returns), re-diff before merging this.Edge adaptations (not a blind cherry-pick)
wrapping_detectionon Edge — omitted from the sparse-skip rule and from Catch2.wipe_tower_mesh_data.bottomor width/depth (nowtd.bbx/rib_offset). Extrusion-to-bed is rotate+translate only.sequential_print_clearance_valid,update_sequential_clearance,can_sequential_clearance_show_in_gizmoare not renamed. Compacted-tower preview is a parallel hook that reuses the same draw path (set_sequential_print_clearance_polygons).append_tcr) and WipeTower2 (append_tcr2) paths are updated.[filament_end_gcode]before the new restore placeholder.Screenshots/Recordings/Graphs
N/A in this environment (no GUI session). Expected plater behaviour: by-layer compacted-tower keep-out rings beside the existing sequential by-object gizmo; unsafe layouts get the shared clearance message and slicing is blocked.
Tests
tests/libslic3r/test_wipe_tower.cpp([WipeTower][NoSparseLayers]): sparse-skip rule, compacted Z, keep-out zone, per-object rise limits, ring/outline agreement, brim padding.depsbuild tree (CMakeCache.txtabsent). Please runcd build && ctest --output-on-failure -R libslic3r_tests(or./tests/libslic3r/libslic3r_tests "[NoSparseLayers]") after a normal slicer build.change_filament_gcodeat layer Z.Accept criteria
Residual if this second commit were dropped: Type2 /
!is_finish_firstcan still run custom G-code at tower Z and sweep through taller parts. With the second commit landed, that is the remaining risk only if a later OrcaSlicer#15441 revision diverges fromd1b31fee.