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;
}
bool MachineObject::is_support_ams_mapping()
{
return true;
}
bool MachineObject::is_support_amx_ext_mix_mapping() {
return true;
}

View File

@ -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<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_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;

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 (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));