ENH:selecting AMS slots with consisten materials

When there are multiple AMS slots, priority should be given to selecting the AMS slot that is consistent with the filament idx
JIRA:STUDIO-2564
Change-Id: I9aa208ba24f01ae20913f11c34a7f75a0a2581d5
This commit is contained in:
hu.wang 2023-08-09 11:35:33 +08:00 committed by Lane.Wei
parent 743f485fad
commit 37feb7fbfa
2 changed files with 12 additions and 1 deletions

View file

@ -814,6 +814,7 @@ int MachineObject::ams_filament_mapping(std::vector<FilamentInfo> filaments, std
info.color = tray->second->color;
info.type = tray->second->get_filament_type();
info.id = tray_index;
info.filament_id=tray->second->setting_id;
tray_filaments.emplace(std::make_pair(tray_index, info));
}
}
@ -936,9 +937,14 @@ int MachineObject::ams_filament_mapping(std::vector<FilamentInfo> filaments, std
if (distance_map[i][j].is_same_color
&& distance_map[i][j].is_type_match) {
if (min_val > distance_map[i][j].distance) {
min_val = distance_map[i][j].distance;
picked_src_idx = i;
picked_tar_idx = j;
}
else if (min_val == distance_map[i][j].distance && filaments[i].filament_id == tray_filaments[j].filament_id) {
picked_src_idx = i;
picked_tar_idx = j;
}
}
}
@ -950,6 +956,7 @@ int MachineObject::ams_filament_mapping(std::vector<FilamentInfo> filaments, std
result[picked_src_idx].color = tray->second.color;
result[picked_src_idx].type = tray->second.type;
result[picked_src_idx].distance = tray->second.distance;
result[picked_src_idx].filament_id = tray->second.filament_id;
}
else {
FilamentInfo info;