FIX: Incorrect color of a layer after slicing

Change-Id: I8b53d4cdf23d8f3389b1063ec84572ede3706ca2
(cherry picked from commit 608150a1b823e5c728540dc62df9a03571acfe9a)
This commit is contained in:
zhimin.zeng 2022-09-27 11:26:13 +08:00 committed by Lane.Wei
parent e2d65994f9
commit 92a59a60b4
1 changed files with 18 additions and 8 deletions

View File

@ -46,9 +46,15 @@ void dfs_get_all_sorted_extruders(const std::vector<std::vector<float>>&
{
if (sorted_extruders.size() == all_extruders.size()) {
volumes_to_extruder_order.insert(std::pair(flush_volume, sorted_extruders));
return;
}
for (auto extruder_id : all_extruders) {
if (sorted_extruders.empty()) {
sorted_extruders.push_back(extruder_id);
dfs_get_all_sorted_extruders(wipe_volumes, all_extruders, sorted_extruders, flush_volume, volumes_to_extruder_order);
sorted_extruders.pop_back();
} else {
auto itor = std::find(sorted_extruders.begin(), sorted_extruders.end(), extruder_id);
if (itor == sorted_extruders.end()) {
float delta_flush_volume = wipe_volumes[sorted_extruders.back()][extruder_id];
@ -60,15 +66,19 @@ void dfs_get_all_sorted_extruders(const std::vector<std::vector<float>>&
}
}
}
}
std::vector<unsigned int> get_extruders_order(const std::vector<std::vector<float>> &wipe_volumes,
std::vector<unsigned int> all_extruders,
unsigned int start_extruder_id)
{
std::vector<unsigned int> sorted_extruders;
sorted_extruders.push_back(start_extruder_id);
std::map<float, std::vector<unsigned int>> volumes_to_extruder_order;
if (all_extruders.size() > 1) {
std::vector<unsigned int> sorted_extruders;
auto iter = std::find(all_extruders.begin(), all_extruders.end(), start_extruder_id);
if (iter != all_extruders.end()) {
sorted_extruders.push_back(start_extruder_id);
}
std::map<float, std::vector<unsigned int>> volumes_to_extruder_order;
dfs_get_all_sorted_extruders(wipe_volumes, all_extruders, sorted_extruders, 0, volumes_to_extruder_order);
if(volumes_to_extruder_order.size() > 0)
return volumes_to_extruder_order.begin()->second;