From 79165e1ad484f18ab376ce5451a58e729c2b3100 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 --- 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 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