FIX: Calibration limit left and right must be the same diameter

jira: none
Change-Id: I3ea572184a122abeaee882742eda8b75fb21c30d
This commit is contained in:
zhimin.zeng 2025-03-12 16:22:43 +08:00 committed by lane.wei
parent de449496b5
commit 79165e1ad4
2 changed files with 18 additions and 0 deletions

View File

@ -1768,6 +1768,18 @@ void CalibrationPresetPage::update_show_status()
return;
}
if (obj_->is_multi_extruders()) {
float diameter = obj_->m_extder_data.extders[0].current_nozzle_diameter;
bool is_same_diameter = std::all_of(obj_->m_extder_data.extders.begin(), obj_->m_extder_data.extders.end(),
[diameter](const Extder& extruder) {
return std::fabs(extruder.current_nozzle_diameter - diameter) < EPSILON;
});
if (!is_same_diameter) {
show_status(CaliPresetPageStatus::CaliPresetStatusDifferentNozzleDiameters);
return;
}
}
// check sdcard when if lan mode printer
if (obj_->is_lan_mode_printer()) {
if (obj_->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD) {
@ -1897,6 +1909,11 @@ void CalibrationPresetPage::show_status(CaliPresetPageStatus status)
update_print_status_msg(msg_text, true);
Enable_Send_Button(false);
}
else if (status == CaliPresetPageStatus::CaliPresetStatusDifferentNozzleDiameters) {
wxString msg_text = _L("Calibration only supports cases where the left and right nozzle diameters are identical.");
update_print_status_msg(msg_text, true);
Enable_Send_Button(false);
}
Layout();
}

View File

@ -154,6 +154,7 @@ enum CaliPresetPageStatus
CaliPresetStatusUnsupportedPrinter,
CaliPresetStatusInConnecting,
CaliPresetStatusFilamentIncompatible,
CaliPresetStatusDifferentNozzleDiameters
};
class CalibrationPresetPage : public CalibrationWizardPage