diff --git a/src/libslic3r/FilamentGroup.cpp b/src/libslic3r/FilamentGroup.cpp index 3cbbaedab7..2c893e61a8 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 9096e11499..de720a5fdf 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -24,6 +24,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) { @@ -1003,7 +1004,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); } }