diff --git a/src/libslic3r/Calib.hpp b/src/libslic3r/Calib.hpp index b4d14c324..be05507c4 100644 --- a/src/libslic3r/Calib.hpp +++ b/src/libslic3r/Calib.hpp @@ -139,10 +139,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 ed1354aca..0a0ec72ce 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -519,7 +519,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].current_nozzle_diameter; select_index_info.cali_idx = -1; select_index_info.filament_id = selected_ams_id; @@ -661,6 +663,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].current_nozzle_diameter; auto cali_select_id = m_comboBox_cali_result->GetSelection(); @@ -700,6 +704,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].current_nozzle_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 361e7792b..5815b02ce 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -620,7 +620,9 @@ void PressureAdvanceWizard::update(MachineObject* obj) cali_version = obj->cali_version; PACalibExtruderInfo cali_info; cali_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_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 f774d714d..c75d9f2b3 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -258,7 +258,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 += "-"; @@ -2406,7 +2408,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 7f99735f5..ee3e5ffa4 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2954,7 +2954,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].current_nozzle_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 003648630..207ae2271 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -426,31 +426,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 123bc2482..ed573379a 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -46,9 +46,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);