diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index fae151ca4..58f4c3528 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -905,11 +905,6 @@ bool MachineObject::can_unload_filament() return result; } -bool MachineObject::is_support_ams_mapping() -{ - return true; -} - bool MachineObject::is_support_amx_ext_mix_mapping() { return true; } diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index dc48b51a9..138ec1137 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -765,7 +765,6 @@ public: void _parse_ams_status(int ams_status); bool has_ams() { return ams_exist_bits != 0; } bool can_unload_filament(); - bool is_support_ams_mapping(); bool is_support_amx_ext_mix_mapping(); void get_ams_colors(std::vector& ams_colors); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 59372688e..d1f198023 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -2610,15 +2610,9 @@ void SelectMachineDialog::on_send_print() } } - if (obj_->is_support_ams_mapping()) { - m_print_job->task_ams_mapping = ams_mapping_array; - m_print_job->task_ams_mapping2 = ams_mapping_array2; - m_print_job->task_ams_mapping_info = ams_mapping_info; - } else { - m_print_job->task_ams_mapping = ""; - m_print_job->task_ams_mapping2 = ""; - m_print_job->task_ams_mapping_info = ""; - } + m_print_job->task_ams_mapping = ams_mapping_array; + m_print_job->task_ams_mapping2 = ams_mapping_array2; + m_print_job->task_ams_mapping_info = ams_mapping_info; /* build nozzles info for multi extruders printers */ if (build_nozzles_info(m_print_job->task_nozzles_info)) { @@ -2745,6 +2739,9 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt) } } + int use_ext_count = 0; + int use_ams_count = 0; + for (auto i = 0; i < m_ams_mapping_result.size(); i++) { if (m_ams_mapping_result[i].id == wxAtoi(selection_data_arr[5])) { m_ams_mapping_result[i].tray_id = evt.GetInt(); @@ -2756,10 +2753,24 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt) m_ams_mapping_result[i].ams_id = selection_data_arr[6].ToStdString(); m_ams_mapping_result[i].slot_id = selection_data_arr[7].ToStdString(); + + if (m_ams_mapping_result[i].ams_id == std::to_string(VIRTUAL_TRAY_MAIN_ID) || m_ams_mapping_result[i].ams_id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) { + use_ext_count++; + } else if (m_ams_mapping_result[i].ams_id >= std::to_string(0)) { + use_ams_count++; + } } BOOST_LOG_TRIVIAL(trace) << "The ams mapping result: id is " << m_ams_mapping_result[i].id << "tray_id is " << m_ams_mapping_result[i].tray_id; } + /*check use ams options*/ + if (m_checkbox_list["use_ams"]->IsShown() && use_ext_count == m_ams_mapping_result.size()) { + m_checkbox_list["use_ams"]->setValue("off"); + } + else if (use_ams_count > 0) { + m_checkbox_list["use_ams"]->setValue("on"); + } + MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { Material* item = iter->second; @@ -4455,7 +4466,7 @@ void SelectMachineDialog::set_default_from_sdcard() auto mouse_pos = ClientToScreen(e.GetPosition()); wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); - if (obj_ && obj_->is_support_ams_mapping()) { + if (obj_) { if (m_mapping_popup.IsShown()) return; wxPoint pos = item->ClientToScreen(wxPoint(0, 0)); pos.y += item->GetRect().height; diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 82b3a744b..195723bd8 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -2600,39 +2600,6 @@ void SyncAmsInfoDialog::update_show_status() } } - if (!obj_->is_support_ams_mapping()) { - int exceed_index = -1; - if (obj_->is_mapping_exceed_filament(m_ams_mapping_result, exceed_index)) { - std::vector params; - params.push_back(wxString::Format("%02d", exceed_index + 1)); - show_status(PrintDialogStatus::PrintStatusNeedUpgradingAms, params); - } else { - if (obj_->is_valid_mapping_result(m_ams_mapping_result)) { - if (has_timelapse_warning()) { - show_status(PrintDialogStatus::PrintStatusTimelapseWarning); - } else { - show_status(PrintDialogStatus::PrintStatusAmsMappingByOrder); - } - - } else { - int mismatch_index = -1; - for (int i = 0; i < m_ams_mapping_result.size(); i++) { - if (m_ams_mapping_result[i].mapping_result == MappingResult::MAPPING_RESULT_TYPE_MISMATCH) { - mismatch_index = m_ams_mapping_result[i].id; - break; - } - } - std::vector params; - if (mismatch_index >= 0) { - params.push_back(wxString::Format("%02d", mismatch_index + 1)); - params.push_back(wxString::Format("%02d", mismatch_index + 1)); - } - show_status(PrintDialogStatus::PrintStatusAmsMappingU0Invalid, params); - } - } - return; - } - if (m_ams_mapping_res) { if (has_timelapse_warning()) { show_status(PrintDialogStatus::PrintStatusTimelapseWarning); @@ -2961,7 +2928,7 @@ void SyncAmsInfoDialog::reset_and_sync_ams_list() m_mapping_popup.set_show_type(ShowType::LEFT_AND_RIGHT);//special } // m_mapping_popup.set_show_type(ShowType::RIGHT); - if (obj_ && obj_->is_support_ams_mapping()) { + if (obj_) { if (m_mapping_popup.IsShown()) return; wxPoint pos = item->ClientToScreen(wxPoint(0, 0));