From ec8f1265f61cd6aa3a93e32b489652138fabc678 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Tue, 2 Aug 2022 11:24:41 +0800 Subject: [PATCH] ENH: display partial mapping result for U0 firmware Change-Id: I181b88e451478d0b75a1d948cd6e83ddbf60b4f9 Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 20 +++++++++++++++++--- src/slic3r/GUI/SelectMachine.cpp | 5 +++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index f6a0c824b..454b6aae2 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -648,7 +648,20 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std for (int i = 0; i < filaments.size(); i++) { FilamentInfo info; info.id = filaments[i].id; - info.tray_id = filaments[i].id; + int ams_id = filaments[i].id / 4; + auto ams_it = amsList.find(std::to_string(ams_id)); + if (ams_it == amsList.end()) { + info.tray_id = -1; + } else { + info.tray_id = filaments[i].id; + + int tray_id = filaments[i].id % 4; + auto tray_it = ams_it->second->trayList.find(std::to_string(tray_id)); + if (tray_it != ams_it->second->trayList.end()) { + info.color = tray_it->second->color; + info.type = tray_it->second->type; + } + } result.push_back(info); } return 1; @@ -808,11 +821,12 @@ bool MachineObject::is_valid_mapping_result(std::vector& result) for (int i = 0; i < result.size(); i++) { // invalid mapping result if (result[i].tray_id < 0) - return false; + is_valid = false; else { int ams_id = result[i].tray_id / 4; if (amsList.find(std::to_string(ams_id)) == amsList.end()) { - return false; + result[i].tray_id = -1; + is_valid = false; } } } diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 56d4cc7f8..aa6da4dba 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1110,8 +1110,8 @@ bool SelectMachineDialog::do_ams_mapping(MachineObject *obj_) } else { // do not support ams mapping try to use order mapping bool is_valid = obj_->is_valid_mapping_result(m_ams_mapping_result); - if (!is_valid) { - // reset invalid result + if (result != 1 && !is_valid) { + //reset invalid result for (int i = 0; i < m_ams_mapping_result.size(); i++) { m_ams_mapping_result[i].tray_id = -1; m_ams_mapping_result[i].distance = 99999; @@ -1693,6 +1693,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) } if (obj) { + obj->command_get_version(); dev->set_selected_machine(m_printer_last_select); update_select_layout(obj->printer_type); } else {