diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index acc3bf2050..3d1298f3e3 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -169,6 +169,11 @@ ToolOrdering::ToolOrdering(const Print &print, unsigned int first_extruder, bool this->fill_wipe_tower_partitions(print.config(), object_bottom_z, max_layer_height); if (this->insert_wipe_tower_extruder()) { + // Now convert the 0-based list to 1-based again, because that is what reorder_extruder expects. + for (LayerTools& lt : m_layer_tools) { + for (auto& extruder : lt.extruders) + ++extruder; + } this->reorder_extruders(first_extruder); this->fill_wipe_tower_partitions(print.config(), object_bottom_z, max_layer_height); } @@ -470,16 +475,15 @@ void ToolOrdering::fill_wipe_tower_partitions(const PrintConfig &config, coordf_ bool ToolOrdering::insert_wipe_tower_extruder() { // In case that wipe_tower_extruder is set to non-zero, we must make sure that the extruder will be in the list. - // The list is 1-based, as is the config value ! bool changed = false; if (m_print_config_ptr->wipe_tower_extruder != 0) { for (LayerTools& lt : m_layer_tools) { if (lt.wipe_tower_partitions > 0) { - lt.extruders.emplace_back(m_print_config_ptr->wipe_tower_extruder); + lt.extruders.emplace_back(m_print_config_ptr->wipe_tower_extruder - 1); sort_remove_duplicates(lt.extruders); changed = true; } - } + } } return changed; }