From 6fadf2da5c16c6dfc7c2140c5dae57dd849fb8bc Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 17 Jun 2025 20:34:14 +0800 Subject: [PATCH] FIX: add nozzle volume type for single printer jira: STUDIO-12765 Change-Id: If1134e759c16a162537241e9e9b7db084263fb97 (cherry picked from commit 3a7d55e713117ee8249b2f67e2f399fa0b8a3b70) --- .../GUI/CalibrationWizardPresetPage.cpp | 57 +++++++++++++++---- .../GUI/CalibrationWizardPresetPage.hpp | 1 + 2 files changed, 48 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 40b483ef89..ada979f80e 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -642,6 +642,19 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent) single_nozzle_sizer->Add(m_nozzle_diameter_tips, 0, wxALL, 0); single_nozzle_sizer->AddSpacer(PRESET_GAP); + auto nozzle_volume_type_text = new Label(m_single_nozzle_info_panel, _L("Nozzle Flow")); + nozzle_volume_type_text->SetFont(Label::Head_14); + nozzle_volume_type_text->Wrap(-1); + + m_comboBox_nozzle_volume = new ComboBox(m_single_nozzle_info_panel, wxID_ANY, "", wxDefaultPosition, CALIBRATION_COMBOX_SIZE, 0, nullptr, wxCB_READONLY); + m_comboBox_nozzle_volume->Disable(); + + single_nozzle_sizer->Add(nozzle_volume_type_text, 0, wxALL, 0); + single_nozzle_sizer->AddSpacer(FromDIP(5)); + single_nozzle_sizer->Add(m_comboBox_nozzle_volume, 0, wxALL, 0); + single_nozzle_sizer->AddSpacer(FromDIP(5)); + single_nozzle_sizer->AddSpacer(PRESET_GAP); + m_single_nozzle_info_panel->SetSizer(single_nozzle_sizer); panel_sizer->Add(m_single_nozzle_info_panel); } @@ -788,12 +801,24 @@ float nozzle_diameter_list[NOZZLE_LIST_COUNT] = {0.2, 0.4, 0.6, 0.8 }; void CalibrationPresetPage::init_selection_values() { - // init nozzle diameter - m_comboBox_nozzle_dia->Clear(); - for (int i = 0; i < NOZZLE_LIST_COUNT; i++) { - m_comboBox_nozzle_dia->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i])); + // init nozzle diameter and nozzle volume + { + m_comboBox_nozzle_dia->Clear(); + for (int i = 0; i < NOZZLE_LIST_COUNT; i++) { + m_comboBox_nozzle_dia->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i])); + } + m_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT); + + m_comboBox_nozzle_volume->Clear(); + const ConfigOptionDef *nozzle_volume_type_def = print_config_def.get("nozzle_volume_type"); + if (nozzle_volume_type_def && nozzle_volume_type_def->enum_keys_map) { + for (auto item : nozzle_volume_type_def->enum_labels) { + m_comboBox_nozzle_volume->AppendString(_L(item)); + } + } + + m_comboBox_nozzle_volume->SetSelection(int(NozzleVolumeType::nvtStandard)); } - m_comboBox_nozzle_dia->SetSelection(NOZZLE_LIST_DEFAULT); Preset* cur_printer_preset = get_printer_preset(curr_obj, 0.4); @@ -948,11 +973,16 @@ float CalibrationPresetPage::get_nozzle_diameter(int extruder_id) const NozzleVolumeType CalibrationPresetPage::get_nozzle_volume_type(int extruder_id) const { - if (extruder_id == LEFT_EXTRUDER_ID) { - return NozzleVolumeType(m_left_comboBox_nozzle_volume->GetSelection()); - } - else if (extruder_id == RIGHT_EXTRUDER_ID) { - return NozzleVolumeType(m_right_comboBox_nozzle_volume->GetSelection()); + if (curr_obj) { + if (curr_obj->is_multi_extruders()) { + if (extruder_id == LEFT_EXTRUDER_ID) { + return NozzleVolumeType(m_left_comboBox_nozzle_volume->GetSelection()); + } else if (extruder_id == RIGHT_EXTRUDER_ID) { + return NozzleVolumeType(m_right_comboBox_nozzle_volume->GetSelection()); + } + } + else + return NozzleVolumeType(m_comboBox_nozzle_volume->GetSelection()); } return NozzleVolumeType::nvtStandard; } @@ -2139,6 +2169,13 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj) m_filament_list_panel->Hide(); } else { + + if ((obj->m_extder_data.extders.size() > 0) && (obj->m_extder_data.extders[0].current_nozzle_flow_type != NozzleFlowType::NONE_FLOWTYPE)) { + m_comboBox_nozzle_volume->SetSelection(obj->m_extder_data.extders[0].current_nozzle_flow_type - 1); + } else { + m_comboBox_nozzle_volume->SetSelection(0); + } + m_single_nozzle_info_panel->Show(); m_multi_nozzle_info_panel->Hide(); m_multi_exutrder_filament_list_panel->Hide(); diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp index fa23f9aee0..57c443b4ac 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -289,6 +289,7 @@ protected: // m_selection_panel widgets ComboBox* m_comboBox_nozzle_dia; + ComboBox* m_comboBox_nozzle_volume; ComboBox* m_comboBox_bed_type; ComboBox* m_comboBox_process; Label* m_nozzle_diameter_tips{nullptr};