diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp index b0cea42410..d7db10fd81 100644 --- a/src/libslic3r/calib.hpp +++ b/src/libslic3r/calib.hpp @@ -136,10 +136,11 @@ struct PACalibIndexInfo struct PACalibExtruderInfo { - int extruder_id; + int extruder_id = -1; NozzleVolumeType nozzle_volume_type; float nozzle_diameter; std::string filament_id = ""; + bool use_extruder_id{true}; bool use_nozzle_volume_type{true}; }; diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 6d1fb66656..7e8d7cd8be 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -544,7 +544,9 @@ void AMSMaterialsSetting::on_select_reset(wxCommandEvent& event) { } else { PACalibIndexInfo select_index_info; - select_index_info.tray_id = slot_id; + select_index_info.tray_id = ams_id * 4 + slot_id; + select_index_info.ams_id = ams_id; + select_index_info.slot_id = slot_id; select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].diameter; select_index_info.cali_idx = -1; select_index_info.filament_id = selected_ams_id; @@ -676,6 +678,8 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event) if (obj->cali_version >= 0) { PACalibIndexInfo select_index_info; select_index_info.tray_id = vt_tray; + select_index_info.ams_id = vt_tray; + select_index_info.slot_id = 0; select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].diameter; auto cali_select_id = m_comboBox_cali_result->GetSelection(); @@ -715,6 +719,8 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event) if (obj->cali_version >= 0) { PACalibIndexInfo select_index_info; select_index_info.tray_id = cali_tray_id; + select_index_info.ams_id = ams_id; + select_index_info.slot_id = slot_id; select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].diameter; auto cali_select_id = m_comboBox_cali_result->GetSelection(); diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index 65edb84581..7c826a15ab 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -498,7 +498,9 @@ void PressureAdvanceWizard::update(MachineObject* obj) cali_version = obj->cali_version; PACalibExtruderInfo cali_info; cali_info.nozzle_diameter = obj->m_extder_data.extders[0].diameter; - CalibUtils::emit_get_PA_calib_info(cali_info); + cali_info.use_extruder_id = false; + cali_info.use_nozzle_volume_type = false; + CalibUtils::emit_get_PA_calib_infos(cali_info); } } } diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index e12ba39168..54f9b52de2 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -207,7 +207,9 @@ wxString generate_nozzle_id(NozzleVolumeType nozzle_type, const std::string& dia nozzle_id += "H"; break; } - default: break; + default: + nozzle_id += "H"; + break; } nozzle_id += "00"; nozzle_id += "-"; @@ -2282,7 +2284,8 @@ int MachineObject::command_get_pa_calibration_tab(const PACalibExtruderInfo &cal j["print"]["command"] = "extrusion_cali_get"; j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); j["print"]["filament_id"] = calib_info.filament_id; - j["print"]["extruder_id"] = calib_info.extruder_id; + if (calib_info.use_extruder_id) + j["print"]["extruder_id"] = calib_info.extruder_id; if (calib_info.use_nozzle_volume_type) j["print"]["nozzle_id"] = generate_nozzle_id(calib_info.nozzle_volume_type, to_string_nozzle_diameter(calib_info.nozzle_diameter)).ToStdString(); j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(calib_info.nozzle_diameter); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index ac99aad878..5d64ceb344 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2588,7 +2588,9 @@ void StatusPanel::update_ams(MachineObject *obj) last_cali_version = obj->cali_version; PACalibExtruderInfo cali_info; cali_info.nozzle_diameter = obj->m_extder_data.extders[0].diameter; - CalibUtils::emit_get_PA_calib_info(cali_info); + cali_info.use_extruder_id = false; + cali_info.use_nozzle_volume_type = false; + CalibUtils::emit_get_PA_calib_infos(cali_info); } bool is_support_virtual_tray = obj->ams_support_virtual_tray; diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index db08f1566e..0bde1163b2 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -412,31 +412,6 @@ bool CalibUtils::get_PA_calib_tab(std::vector &pa_calib_infos) return obj_->has_get_pa_calib_tab; } -void CalibUtils::emit_get_PA_calib_info(const PACalibExtruderInfo &cali_info) -{ - DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return; - - MachineObject *obj_ = dev->get_selected_machine(); - if (obj_ == nullptr) return; - - obj_->command_get_pa_calibration_tab(cali_info); -} - -bool CalibUtils::get_PA_calib_info(PACalibResult & pa_calib_info) { - DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return false; - - MachineObject *obj_ = dev->get_selected_machine(); - if (obj_ == nullptr) return false; - - if (!obj_->pa_calib_tab.empty()) { - pa_calib_info = obj_->pa_calib_tab.front(); - return true; - } - return false; -} - void CalibUtils::set_PA_calib_result(const std::vector &pa_calib_values, bool is_auto_cali) { DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); diff --git a/src/slic3r/Utils/CalibUtils.hpp b/src/slic3r/Utils/CalibUtils.hpp index e3b6cedd52..d6b774ee9e 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -45,9 +45,6 @@ public: static void emit_get_PA_calib_infos(const PACalibExtruderInfo &cali_info); static bool get_PA_calib_tab(std::vector &pa_calib_infos); - static void emit_get_PA_calib_info(const PACalibExtruderInfo& cali_info); - static bool get_PA_calib_info(PACalibResult &pa_calib_info); - static void set_PA_calib_result(const std::vector& pa_calib_values, bool is_auto_cali); static void select_PA_calib_result(const PACalibIndexInfo &pa_calib_info); static void delete_PA_calib_result(const PACalibIndexInfo &pa_calib_info);