ENH: refine ams mapping valid logic
do not make mapping result valid for empty ams slot Change-Id: I2e6be7f973dea7784804ec1978c68cc2bd47c6c0 Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
parent
2b23e3c119
commit
b54870106d
1 changed files with 23 additions and 22 deletions
|
@ -855,34 +855,35 @@ int MachineObject::ams_filament_mapping(std::vector<FilamentInfo> filaments, std
|
|||
|
||||
bool MachineObject::is_valid_mapping_result(std::vector<FilamentInfo>& result)
|
||||
{
|
||||
if (is_support_ams_mapping()) {
|
||||
bool valid_ams_mapping_result = true;
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
if (result[i].tray_id == -1) {
|
||||
valid_ams_mapping_result = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return valid_ams_mapping_result;
|
||||
} else {
|
||||
bool is_valid = true;
|
||||
bool valid_ams_mapping_result = true;
|
||||
if (result.empty()) return false;
|
||||
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
// invalid mapping result
|
||||
if (result.empty()) return false;
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
// invalid mapping result
|
||||
if (result[i].tray_id < 0)
|
||||
is_valid = false;
|
||||
else {
|
||||
int ams_id = result[i].tray_id / 4;
|
||||
if (amsList.find(std::to_string(ams_id)) == amsList.end()) {
|
||||
if (result[i].tray_id < 0)
|
||||
valid_ams_mapping_result = false;
|
||||
else {
|
||||
int ams_id = result[i].tray_id / 4;
|
||||
auto ams_item = amsList.find(std::to_string(ams_id));
|
||||
if (ams_item == amsList.end()) {
|
||||
result[i].tray_id = -1;
|
||||
valid_ams_mapping_result = false;
|
||||
} else {
|
||||
int tray_id = result[i].tray_id % 4;
|
||||
auto tray_item = ams_item->second->trayList.find(std::to_string(tray_id));
|
||||
if (tray_item == ams_item->second->trayList.end()) {
|
||||
result[i].tray_id = -1;
|
||||
is_valid = false;
|
||||
valid_ams_mapping_result = false;
|
||||
} else {
|
||||
if (!tray_item->second->is_exists) {
|
||||
result[i].tray_id = -1;
|
||||
valid_ams_mapping_result = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return is_valid;
|
||||
}
|
||||
return true;
|
||||
return valid_ams_mapping_result;
|
||||
}
|
||||
|
||||
bool MachineObject::is_mapping_exceed_filament(std::vector<FilamentInfo> & result, int &exceed_index)
|
||||
|
|
Loading…
Reference in a new issue