From da0e624bd07534e6bff418d007cee9fb97dccde0 Mon Sep 17 00:00:00 2001 From: "xun.zhang" Date: Thu, 26 Dec 2024 11:06:55 +0800 Subject: [PATCH] FIX: invalid unprintable limits in enum algorithm 1.Should use idx in used filaments in filament group algorithm jira:NONE Signed-off-by: xun.zhang Change-Id: I5acc849827d84db090e61a45e80a3df2866b2724 (cherry picked from commit 84c55c10edfda91df16843f317ebc7912205b202) (cherry picked from commit daaca0368626e68ba5bdb0ce6a90111292454119) --- src/libslic3r/FilamentGroup.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/FilamentGroup.cpp b/src/libslic3r/FilamentGroup.cpp index 763da616fe..2cd8595ee3 100644 --- a/src/libslic3r/FilamentGroup.cpp +++ b/src/libslic3r/FilamentGroup.cpp @@ -649,8 +649,8 @@ namespace Slic3r return count; }; - std::mapunplaceable_limits; - extract_unprintable_limit_indices(ctx.model_info.unprintable_filaments, used_filaments, unplaceable_limits); + std::mapunplaceable_limit_indices; + extract_unprintable_limit_indices(ctx.model_info.unprintable_filaments, used_filaments, unplaceable_limit_indices); int used_filament_num = used_filaments.size(); uint64_t max_group_num = (static_cast(1) << used_filament_num); @@ -663,14 +663,14 @@ namespace Slic3r std::vector>groups(2); for (int j = 0; j < used_filament_num; ++j) { if (i & (static_cast(1) << j)) - groups[1].insert(used_filaments[j]); + groups[1].insert(j); else - groups[0].insert(used_filaments[j]); + groups[0].insert(j); } int prefer_level = 0; - if (check_printable(groups, unplaceable_limits)) + if (check_printable(groups, unplaceable_limit_indices)) prefer_level += UNPLACEABLE_LIMIT_REWARD; if (groups[0].size() <= ctx.machine_info.max_group_size[0] && groups[1].size() <= ctx.machine_info.max_group_size[1]) prefer_level += MAX_SIZE_LIMIT_REWARD; @@ -679,9 +679,9 @@ namespace Slic3r std::vectorfilament_maps(used_filament_num); for (int i = 0; i < used_filament_num; ++i) { - if (groups[0].find(used_filaments[i]) != groups[0].end()) + if (groups[0].find(i) != groups[0].end()) filament_maps[i] = 0; - if (groups[1].find(used_filaments[i]) != groups[1].end()) + if (groups[1].find(i) != groups[1].end()) filament_maps[i] = 1; }