diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 32704c25cb..7718661cac 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -1993,7 +1993,7 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj) for (const AmsTray& vt_tray : obj->vt_slot) { if (vt_tray.id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) { AMSinfo info; - info.ReadExtInfo(vt_tray); + info.parse_ext_info(obj, vt_tray); info.ams_type = AMSModel::EXT_AMS; assert(m_main_ams_preview_list.size() == 4); @@ -2003,7 +2003,7 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj) } else if (vt_tray.id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) { AMSinfo info; - info.ReadExtInfo(vt_tray); + info.parse_ext_info(obj, vt_tray); info.ams_type = AMSModel::EXT_AMS; assert(m_deputy_ams_preview_list.size() == 4); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 8d11e61688..9dfb88434b 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2643,6 +2643,16 @@ void StatusPanel::update_ams(MachineObject *obj) ams_info.push_back(info); } } + std::vector ext_info; + ext_info.clear(); + for (auto slot : obj->vt_slot) { + AMSinfo info; + info.parse_ext_info(obj, slot); + if (ams_mode == AMSModel::AMS_LITE) info.ext_type = AMSModelOriginType::LITE_EXT; + ext_info.push_back(info); + } + std::string dev_id = obj->dev_id; + NozzleData data = obj->m_nozzle_data; //if (obj->ams_exist_bits != last_ams_exist_bits || obj->tray_exist_bits != last_tray_exist_bits || obj->tray_is_bbl_bits != last_tray_is_bbl_bits || // obj->tray_read_done_bits != last_read_done_bits || obj->ams_version != last_ams_version) { // m_ams_control->UpdateAms(ams_info, false); diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index 050f3e0889..ba5df3d447 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -120,23 +120,50 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo return true; } -void AMSinfo::ReadExtInfo(AmsTray tray) { +void AMSinfo::parse_ext_info(MachineObject* obj, AmsTray tray) { + this->ams_id = tray.id; this->ams_type = AMSModel::EXT_AMS; - Caninfo can; - can.can_id = std::to_string(0); - can.material_name = tray.filament_setting_id; - this->cans.push_back(can); - if (tray.id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) { + Caninfo info; + info.can_id = std::to_string(0); + this->cans.clear(); + + if (tray.id == std::to_string(VIRTUAL_TRAY_MAIN_ID)) this->nozzle_id = 0; + else if (tray.id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) + this->nozzle_id = 1; + + if (tray.is_tray_info_ready()) { + info.ctype = tray.ctype; + info.material_name = tray.get_display_filament_type(); + if (!tray.color.empty()) { + info.material_colour = AmsTray::decode_color(tray.color); + } + else { + // set to white by default + info.material_colour = AMS_TRAY_DEFAULT_COL; + } + + for (std::string cols : tray.cols) { + info.material_cols.push_back(AmsTray::decode_color(cols)); + } + info.material_remain = 100; } else { - this->nozzle_id = 1; + info.material_name = ""; + info.ctype = 0; + info.material_colour = AMS_TRAY_DEFAULT_COL; + wxColour(255, 255, 255); } - this->cans[0].material_state = AMSCanType::AMS_CAN_TYPE_VIRTUAL; - this->cans[0].material_colour = tray.decode_color(tray.color); - this->cans[0].material_remain = tray.remain; - this->cans[0].material_name = tray.type; + info.material_state = AMSCanType::AMS_CAN_TYPE_VIRTUAL; + if (tray.is_tray_info_ready() && obj->cali_version >= 0) { + CalibUtils::get_pa_k_n_value_by_cali_idx(obj, tray.cali_idx, info.k, info.n); + } + else { + info.k = tray.k; + info.n = tray.n; + } + this->cans.push_back(info); } /************************************************* diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index 7cc45bd72d..b42df8f2f3 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -219,7 +219,7 @@ public: }; bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false); - void ReadExtInfo(AmsTray tray); + void parse_ext_info(MachineObject* obj, AmsTray tray); bool support_drying() const { return (ams_type == AMSModel::N3S_AMS) || (ams_type == AMSModel::N3F_AMS); }; };