diff --git a/src/libslic3r/FilamentGroup.cpp b/src/libslic3r/FilamentGroup.cpp index 3cbbaedab..2c893e61a 100644 --- a/src/libslic3r/FilamentGroup.cpp +++ b/src/libslic3r/FilamentGroup.cpp @@ -241,7 +241,7 @@ namespace Slic3r } } - if (tmp_cost < ams_color_dist_threshold && tmp_cost < best_cost) { + if (best_map.empty() || (tmp_cost < ams_color_dist_threshold && tmp_cost < best_cost)) { best_cost = tmp_cost; best_map = map; } diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 027acd8ae..ef65cfba0 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -23,6 +23,7 @@ namespace Slic3r { const static bool g_wipe_into_objects = false; +constexpr double similar_color_threshold_de2000 = 20.0; static std::setget_filament_by_type(const std::vector& used_filaments, const PrintConfig* print_config, const std::string& type) { @@ -1002,7 +1003,7 @@ std::vector ToolOrdering::get_recommended_filament_maps(const std::vector("filament_colour")->get_at(0)); ams_colors[i] = std::move(colors); } - ret = select_best_group_for_ams(memoryed_maps, used_filaments, used_colors, ams_colors); + ret = select_best_group_for_ams(memoryed_maps, used_filaments, used_colors, ams_colors, similar_color_threshold_de2000); } }