FIX:add exist_multi_color_filment logic

jira: STUDIO-11477
Change-Id: If30e0289096b6d465eace503fbe706fb31742f0c
This commit is contained in:
zhou.xu 2025-04-10 14:33:21 +08:00 committed by lane.wei
parent bbf32fd6f7
commit 1ace58b950
1 changed files with 10 additions and 3 deletions

View File

@ -1917,6 +1917,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
bool is_map{false};
std::string filament_color = "";
std::string filament_preset = "";
std::vector<std::string> mutli_filament_color;
};
auto is_double_extruder = get_printer_extruder_count() == 2;
std::vector<AmsInfo> ams_infos;
@ -2038,13 +2039,18 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
std::vector<AmsInfo> need_append_colors;
auto exist_colors = filament_color->values;
auto exist_filament_presets = this->filament_presets;
std::vector<std::vector<std::string>> exist_multi_color_filment;
exist_multi_color_filment.resize(exist_colors.size());
for (int i = 0; i < exist_colors.size(); i++) {
exist_multi_color_filment[i] = {exist_colors[i]};
}
for (size_t i = 0; i < exist_colors.size(); i++) {
if (maps.find(i) != maps.end()) {//mapping exist
auto valid_index = get_map_index(ams_array_maps, maps[i]);
if (valid_index >= 0 && valid_index < ams_filament_presets.size()) {
exist_colors[i] = ams_filament_colors[valid_index];
exist_filament_presets[i] = ams_filament_presets[valid_index];
ams_multi_color_filment[i] = { ams_filament_colors[valid_index] };
exist_multi_color_filment[i] = ams_multi_color_filment[valid_index];
} else {
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "check error: array bound (mapping exist)";
}
@ -2057,6 +2063,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
continue;
}
ams_infos[i].filament_preset = ams_filament_presets[i];
ams_infos[i].mutli_filament_color = ams_multi_color_filment[i];
if (!ams_infos[i].is_map) {
need_append_colors.emplace_back(ams_infos[i]);
ams_filament_colors[i] = "";
@ -2098,12 +2105,12 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
}
exist_filament_presets.push_back(need_append_colors[i].filament_preset);
exist_colors.push_back(need_append_colors[i].filament_color);
std::vector<std::string> value = {need_append_colors[i].filament_color};
ams_multi_color_filment.push_back(value);
exist_multi_color_filment.push_back(need_append_colors[i].mutli_filament_color);
}
}
filament_color->resize(exist_colors.size());
filament_color->values = exist_colors;
ams_multi_color_filment = exist_multi_color_filment;
this->filament_presets = exist_filament_presets;
filament_map->values.resize(exist_filament_presets.size(), 1);
}