diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index b4b81b35e..140e467ff 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -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(); } diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp index 34a377688..d91f9a68b 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -154,6 +154,7 @@ enum CaliPresetPageStatus CaliPresetStatusUnsupportedPrinter, CaliPresetStatusInConnecting, CaliPresetStatusFilamentIncompatible, + CaliPresetStatusDifferentNozzleDiameters }; class CalibrationPresetPage : public CalibrationWizardPage