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}; bool is_map{false};
std::string filament_color = ""; std::string filament_color = "";
std::string filament_preset = ""; std::string filament_preset = "";
std::vector<std::string> mutli_filament_color;
}; };
auto is_double_extruder = get_printer_extruder_count() == 2; auto is_double_extruder = get_printer_extruder_count() == 2;
std::vector<AmsInfo> ams_infos; 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; std::vector<AmsInfo> need_append_colors;
auto exist_colors = filament_color->values; auto exist_colors = filament_color->values;
auto exist_filament_presets = this->filament_presets; 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++) { for (size_t i = 0; i < exist_colors.size(); i++) {
if (maps.find(i) != maps.end()) {//mapping exist if (maps.find(i) != maps.end()) {//mapping exist
auto valid_index = get_map_index(ams_array_maps, maps[i]); auto valid_index = get_map_index(ams_array_maps, maps[i]);
if (valid_index >= 0 && valid_index < ams_filament_presets.size()) { if (valid_index >= 0 && valid_index < ams_filament_presets.size()) {
exist_colors[i] = ams_filament_colors[valid_index]; exist_colors[i] = ams_filament_colors[valid_index];
exist_filament_presets[i] = ams_filament_presets[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 { } else {
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "check error: array bound (mapping exist)"; 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; continue;
} }
ams_infos[i].filament_preset = ams_filament_presets[i]; 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) { if (!ams_infos[i].is_map) {
need_append_colors.emplace_back(ams_infos[i]); need_append_colors.emplace_back(ams_infos[i]);
ams_filament_colors[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_filament_presets.push_back(need_append_colors[i].filament_preset);
exist_colors.push_back(need_append_colors[i].filament_color); exist_colors.push_back(need_append_colors[i].filament_color);
std::vector<std::string> value = {need_append_colors[i].filament_color}; exist_multi_color_filment.push_back(need_append_colors[i].mutli_filament_color);
ams_multi_color_filment.push_back(value);
} }
} }
filament_color->resize(exist_colors.size()); filament_color->resize(exist_colors.size());
filament_color->values = exist_colors; filament_color->values = exist_colors;
ams_multi_color_filment = exist_multi_color_filment;
this->filament_presets = exist_filament_presets; this->filament_presets = exist_filament_presets;
filament_map->values.resize(exist_filament_presets.size(), 1); filament_map->values.resize(exist_filament_presets.size(), 1);
} }