From cbe9c99c202bd5f337d4a2db1fe05202db10b2ee Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Wed, 12 Mar 2025 16:22:43 +0800 Subject: [PATCH] FIX: Calibration limit left and right must be the same diameter jira: none Change-Id: I3ea572184a122abeaee882742eda8b75fb21c30d (cherry picked from commit 79165e1ad484f18ab376ce5451a58e729c2b3100) --- src/slic3r/GUI/CalibrationWizardPresetPage.cpp | 17 +++++++++++++++++ src/slic3r/GUI/CalibrationWizardPresetPage.hpp | 1 + 2 files changed, 18 insertions(+) diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 32828b0428..b36001fe8d 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -1687,6 +1687,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) { @@ -1816,6 +1828,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 28cb341eee..10440c8ab1 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -151,6 +151,7 @@ enum CaliPresetPageStatus CaliPresetStatusUnsupportedPrinter, CaliPresetStatusInConnecting, CaliPresetStatusFilamentIncompatible, + CaliPresetStatusDifferentNozzleDiameters }; class CalibrationPresetPage : public CalibrationWizardPage