ENH:auto switch use ams option

jira:[none]

Change-Id: Ia1d5231284515226277b16d771342141e654a23d
This commit is contained in:
tao wang 2025-03-26 15:40:10 +08:00 committed by Lane.Wei
parent 1b0e8cdb31
commit 956f1b9a59
4 changed files with 22 additions and 50 deletions

View File

@ -905,11 +905,6 @@ bool MachineObject::can_unload_filament()
return result; return result;
} }
bool MachineObject::is_support_ams_mapping()
{
return true;
}
bool MachineObject::is_support_amx_ext_mix_mapping() { bool MachineObject::is_support_amx_ext_mix_mapping() {
return true; return true;
} }

View File

@ -765,7 +765,6 @@ public:
void _parse_ams_status(int ams_status); void _parse_ams_status(int ams_status);
bool has_ams() { return ams_exist_bits != 0; } bool has_ams() { return ams_exist_bits != 0; }
bool can_unload_filament(); bool can_unload_filament();
bool is_support_ams_mapping();
bool is_support_amx_ext_mix_mapping(); bool is_support_amx_ext_mix_mapping();
void get_ams_colors(std::vector<wxColour>& ams_colors); void get_ams_colors(std::vector<wxColour>& ams_colors);

View File

@ -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_mapping = ams_mapping_array; m_print_job->task_ams_mapping2 = ams_mapping_array2;
m_print_job->task_ams_mapping2 = ams_mapping_array2; m_print_job->task_ams_mapping_info = ams_mapping_info;
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 = "";
}
/* build nozzles info for multi extruders printers */ /* build nozzles info for multi extruders printers */
if (build_nozzles_info(m_print_job->task_nozzles_info)) { 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++) { for (auto i = 0; i < m_ams_mapping_result.size(); i++) {
if (m_ams_mapping_result[i].id == wxAtoi(selection_data_arr[5])) { if (m_ams_mapping_result[i].id == wxAtoi(selection_data_arr[5])) {
m_ams_mapping_result[i].tray_id = evt.GetInt(); 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].ams_id = selection_data_arr[6].ToStdString();
m_ams_mapping_result[i].slot_id = selection_data_arr[7].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; 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(); MaterialHash::iterator iter = m_materialList.begin();
while (iter != m_materialList.end()) { while (iter != m_materialList.end()) {
Material* item = iter->second; Material* item = iter->second;
@ -4455,7 +4466,7 @@ void SelectMachineDialog::set_default_from_sdcard()
auto mouse_pos = ClientToScreen(e.GetPosition()); auto mouse_pos = ClientToScreen(e.GetPosition());
wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); wxPoint rect = item->ClientToScreen(wxPoint(0, 0));
if (obj_ && obj_->is_support_ams_mapping()) { if (obj_) {
if (m_mapping_popup.IsShown()) return; if (m_mapping_popup.IsShown()) return;
wxPoint pos = item->ClientToScreen(wxPoint(0, 0)); wxPoint pos = item->ClientToScreen(wxPoint(0, 0));
pos.y += item->GetRect().height; pos.y += item->GetRect().height;

View File

@ -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<wxString> 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<wxString> 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 (m_ams_mapping_res) {
if (has_timelapse_warning()) { if (has_timelapse_warning()) {
show_status(PrintDialogStatus::PrintStatusTimelapseWarning); 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::LEFT_AND_RIGHT);//special
} }
// m_mapping_popup.set_show_type(ShowType::RIGHT); // m_mapping_popup.set_show_type(ShowType::RIGHT);
if (obj_ && obj_->is_support_ams_mapping()) { if (obj_) {
if (m_mapping_popup.IsShown()) if (m_mapping_popup.IsShown())
return; return;
wxPoint pos = item->ClientToScreen(wxPoint(0, 0)); wxPoint pos = item->ClientToScreen(wxPoint(0, 0));