From 125ab80729a74be29e84811b52c9db84ae633d04 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Thu, 16 Jan 2025 10:46:29 +0800 Subject: [PATCH] FIX: the extruder_id of cali is incorrect with N3S jira: STUDIO-9888 Change-Id: I25c4a436e322923a247d1c6d3c3de9f0319bb420 (cherry picked from commit 13355ca669229839e8c8943f80cc50533256d0d7) --- src/slic3r/GUI/CalibrationWizard.cpp | 32 ++++--------------- src/slic3r/GUI/CalibrationWizard.hpp | 1 - .../GUI/CalibrationWizardPresetPage.cpp | 7 +++- src/slic3r/Utils/CalibUtils.cpp | 19 +++++++++++ src/slic3r/Utils/CalibUtils.hpp | 2 ++ 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index 95a7487489..f051f5d8d0 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -129,26 +129,6 @@ CalibrationWizard::~CalibrationWizard() ; } -void CalibrationWizard::get_tray_ams_and_slot_id(int in_tray_id, int &ams_id, int &slot_id, int &tray_id) -{ - assert(curr_obj); - if (!curr_obj) - return; - - if (in_tray_id == VIRTUAL_TRAY_MAIN_ID || in_tray_id == VIRTUAL_TRAY_DEPUTY_ID) { - ams_id = in_tray_id; - slot_id = 0; - tray_id = ams_id; - if (!curr_obj->is_enable_np) - tray_id = VIRTUAL_TRAY_DEPUTY_ID; - } - else { - ams_id = in_tray_id / 4; - slot_id = in_tray_id % 4; - tray_id = in_tray_id; - } -} - void CalibrationWizard::on_cali_job_finished(wxCommandEvent& event) { this->on_cali_job_finished(event.GetString()); @@ -414,7 +394,7 @@ void CalibrationWizard::cache_preset_info(MachineObject* obj, float nozzle_dia) if (obj->is_multi_extruders()) { int ams_id, slot_id, tray_id; - get_tray_ams_and_slot_id(result.tray_id, ams_id, slot_id, tray_id); + get_tray_ams_and_slot_id(curr_obj, result.tray_id, ams_id, slot_id, tray_id); result.extruder_id = preset_page->get_extruder_id(ams_id); result.nozzle_volume_type = preset_page->get_nozzle_volume_type(result.extruder_id); result.nozzle_diameter = preset_page->get_nozzle_diameter(result.extruder_id); @@ -733,7 +713,7 @@ void PressureAdvanceWizard::on_cali_start() } X1CCalibInfos::X1CCalibInfo calib_info; - get_tray_ams_and_slot_id(item.first, calib_info.ams_id, calib_info.slot_id, calib_info.tray_id); + get_tray_ams_and_slot_id(curr_obj, item.first, calib_info.ams_id, calib_info.slot_id, calib_info.tray_id); calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id); @@ -771,7 +751,7 @@ void PressureAdvanceWizard::on_cali_start() int selected_tray_id = 0; CalibInfo calib_info; calib_info.dev_id = curr_obj->dev_id; - get_tray_ams_and_slot_id(selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id); + get_tray_ams_and_slot_id(curr_obj, selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id); calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id); @@ -1190,7 +1170,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow X1CCalibInfos::X1CCalibInfo calib_info; calib_info.tray_id = item.first; - get_tray_ams_and_slot_id(item.first, calib_info.ams_id, calib_info.slot_id, calib_info.tray_id); + get_tray_ams_and_slot_id(curr_obj, item.first, calib_info.ams_id, calib_info.slot_id, calib_info.tray_id); calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id); @@ -1243,7 +1223,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow if (!selected_filaments.empty()) { int selected_tray_id = 0; - get_tray_ams_and_slot_id(selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id); + get_tray_ams_and_slot_id(curr_obj, selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id); calib_info.select_ams = "[" + std::to_string(selected_tray_id) + "]"; calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); @@ -1652,7 +1632,7 @@ void MaxVolumetricSpeedWizard::on_cali_start() calib_info.dev_id = curr_obj->dev_id; if (!selected_filaments.empty()) { int selected_tray_id = 0; - get_tray_ams_and_slot_id(selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id); + get_tray_ams_and_slot_id(curr_obj, selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id); calib_info.select_ams = "[" + std::to_string(selected_tray_id) + "]"; calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); diff --git a/src/slic3r/GUI/CalibrationWizard.hpp b/src/slic3r/GUI/CalibrationWizard.hpp index a187c434f0..25f0049d82 100644 --- a/src/slic3r/GUI/CalibrationWizard.hpp +++ b/src/slic3r/GUI/CalibrationWizard.hpp @@ -78,7 +78,6 @@ public: protected: void on_cali_go_home(); - void get_tray_ams_and_slot_id(int in_tray_id, int &ams_id, int &slot_id, int &tray_id); protected: /* wx widgets*/ diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 7ea5b83436..6847958c12 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -1390,6 +1390,11 @@ bool CalibrationPresetPage::is_filaments_compatiable(const std::mapGetValue() && wxGetApp().app_config->get("skip_ams_blacklist_check") != "true") { bool in_blacklist = false; std::string action; @@ -1400,7 +1405,7 @@ bool CalibrationPresetPage::is_filament_in_blacklist(int tray_id, Preset* preset auto vendor = dynamic_cast (preset->config.option("filament_vendor")); if (vendor && (vendor->values.size() > 0)) { std::string vendor_name = vendor->values[0]; - DeviceManager::check_filaments_in_blacklist(vendor_name, filamnt_type, tray_id, in_blacklist, action, info); + DeviceManager::check_filaments_in_blacklist(vendor_name, filamnt_type, ams_id, in_blacklist, action, info); } if (in_blacklist) { diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index ec903017bc..e4066b2a79 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -69,6 +69,25 @@ wxString get_nozzle_volume_type_name(NozzleVolumeType type) return wxString(); } +void get_tray_ams_and_slot_id(MachineObject* obj, int in_tray_id, int &ams_id, int &slot_id, int &tray_id) +{ + assert(obj); + if (!obj) + return; + + if (in_tray_id == VIRTUAL_TRAY_MAIN_ID || in_tray_id == VIRTUAL_TRAY_DEPUTY_ID) { + ams_id = in_tray_id; + slot_id = 0; + tray_id = ams_id; + if (!obj->is_enable_np) + tray_id = VIRTUAL_TRAY_DEPUTY_ID; + } else { + ams_id = in_tray_id / 4; + slot_id = in_tray_id % 4; + tray_id = in_tray_id; + } +} + std::string get_calib_mode_name(CalibMode cali_mode, int stage) { switch(cali_mode) { diff --git a/src/slic3r/Utils/CalibUtils.hpp b/src/slic3r/Utils/CalibUtils.hpp index 8cd9310a3e..ce8f1c5637 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -80,6 +80,8 @@ private: static void send_to_print(const CalibInfo &calib_info, wxString& error_message, int flow_ratio_mode = 0); // 0: none 1: coarse 2: fine }; +extern void get_tray_ams_and_slot_id(MachineObject* obj, int in_tray_id, int &ams_id, int &slot_id, int &tray_id); + extern void get_default_k_n_value(const std::string &filament_id, float &k, float &n); extern wxString get_nozzle_volume_type_name(NozzleVolumeType type);