From c9b2b89b2b566d77e522901b5c3172ae40625f57 Mon Sep 17 00:00:00 2001 From: Clifford Garwood Date: Thu, 1 Oct 2026 21:36:42 -0400 Subject: [PATCH] Correct the variant-keying note on the wipe tower estimate filament_minimal_purge_on_wipe_tower became variant-keyed upstream, which invalidated the comment claiming none of full_config's keys were. WipeTower2::extract_wipe_volumes indexes it by raw filament slot. Not reachable with shipped presets; noted rather than worked around. Co-Authored-By: Claude Opus 5 (1M context) --- src/slic3r/GUI/PartPlate.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index b616c146d3..f73a76394b 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1152,7 +1152,12 @@ Polygon PartPlate::imex_wipe_tower_hull() const Vec3d wt_pos, wt_size; // full_config(), not the print preset: wipe_tower_x/y are project options the estimate - // dereferences unchecked. apply_extruder=false - none of its keys are variant-keyed. + // dereferences unchecked. apply_extruder=false, so the per-filament arrays arrive as the + // concatenation of each preset's declared variants rather than one entry per filament. + // That matters now: filament_minimal_purge_on_wipe_tower became variant-keyed upstream and + // WipeTower2::extract_wipe_volumes indexes it by raw filament slot, so a multi-variant + // filament preset on a single-extruder-multi-material machine would estimate the tower + // from the wrong column. No shipped preset pairs the two today. // plate_extruder_size is a floor, not an override; the scene passes 0, and both counts // come from the same object walk. arrangement::ArrangePolygon ap = estimate_wipe_tower_polygon(preset_bundle->full_config(false), m_plate_index, wt_pos, wt_size, plate_extruder_size);