FIX: support calibration for multi-nozzles with different diameters

github: 7543
Change-Id: Ifa20d786836f1991af35b3b95e25f91431d752e0
(cherry picked from commit 0c1053e962c928b253c268fc6658b8ec98f692ff)
This commit is contained in:
zhimin.zeng
2025-07-24 15:02:31 +08:00
committed by Noisyfox
parent b8bbb04527
commit 41da6a1ae7
4 changed files with 46 additions and 30 deletions

View File

@@ -978,11 +978,17 @@ NozzleVolumeType CalibrationPresetPage::get_nozzle_volume_type(int extruder_id)
ExtruderType CalibrationPresetPage::get_extruder_type(int extruder_id) const
{
if (m_extrder_types.size() > extruder_id)
return ExtruderType(m_extrder_types[extruder_id]);
else {
return ExtruderType::etDirectDrive;
if (curr_obj) {
int extruder_idx = 0;
if (curr_obj->is_multi_extruders()) {
if (extruder_id == RIGHT_EXTRUDER_ID) {
extruder_idx = 1;
}
}
if (m_extrder_types.size() > extruder_idx)
return m_extrder_types[extruder_idx];
}
return ExtruderType::etDirectDrive;
}
void CalibrationPresetPage::create_multi_extruder_filament_list_panel(wxWindow *parent)
@@ -1734,17 +1740,17 @@ 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;
}
}
//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()) {