From 83681128e0c14c8f50952011122d6eceacce496a Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Wed, 30 Oct 2024 15:06:17 +0800 Subject: [PATCH] FIX: slice crash with incorrect filament_map of single printer jira: none Change-Id: I49bdcf03fc8abb24e41e0545e2d9cd3c55941df4 --- src/libslic3r/GCode/ToolOrdering.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 56236f87c..268bc8ce7 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -1130,6 +1130,23 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first std::transform(filament_maps.begin(), filament_maps.end(), filament_maps.begin(), [](int value) {return value - 1; }); } } + else if (nozzle_nums == 1) { + filament_maps = m_print->get_filament_maps(); + bool invalid = std::any_of(filament_maps.begin(), filament_maps.end(), [](int value) { return value != 1; }); + if (invalid) { + assert(false); + std::stringstream sstream; + for (size_t i = 0; i < filament_maps.size(); ++i) { + if (i != 0) + sstream << " "; + sstream << filament_maps[i]; + } + BOOST_LOG_TRIVIAL(error) << "The filament_map of single printer is invalid. filament_map = " << sstream.str(); + std::fill(filament_maps.begin(), filament_maps.end(), 1); + m_print->update_filament_maps_to_config(filament_maps); + } + std::transform(filament_maps.begin(), filament_maps.end(), filament_maps.begin(), [](int value) { return value - 1; }); + } std::vector>filament_sequences; std::vectorfilament_lists(number_of_extruders);