From 21fa492d8aa06c63002ff7e795e927eed9d1a448 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 29 Oct 2024 15:24:37 +0800 Subject: [PATCH] FIX: show k value when select default pa profile jira: STUDIO-8540 Change-Id: I487e740ee7c37e5d8d4c0d9b26984d034ed70347 --- src/slic3r/GUI/AMSMaterialsSetting.cpp | 25 ------------------------- src/slic3r/GUI/Widgets/AMSControl.cpp | 17 ++++++++++++++++- src/slic3r/GUI/Widgets/AMSControl.hpp | 18 +++++++++++------- src/slic3r/Utils/CalibUtils.cpp | 24 ++++++++++++++++++++++++ src/slic3r/Utils/CalibUtils.hpp | 2 ++ 5 files changed, 53 insertions(+), 33 deletions(-) diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 818d1df41..345176c67 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -13,31 +13,6 @@ namespace Slic3r { namespace GUI { wxDEFINE_EVENT(EVT_SELECTED_COLOR, wxCommandEvent); -static void get_default_k_n_value(const std::string &filament_id, float &k, float &n) -{ - if (filament_id.compare("GFG00") == 0) { - // PETG - k = 0.04; - n = 1.0; - } else if (filament_id.compare("GFB00") == 0 || filament_id.compare("GFB50") == 0) { - // ABS - k = 0.04; - n = 1.0; - } else if (filament_id.compare("GFU01") == 0) { - // TPU - k = 0.2; - n = 1.0; - } else if (filament_id.compare("GFB01") == 0) { - // ASA - k = 0.04; - n = 1.0; - } else { - // PLA , other - k = 0.02; - n = 1.0; - } -} - static std::string float_to_string_with_precision(float value, int precision = 3) { std::stringstream stream; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 9014a32ec..305fdd957 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -54,6 +54,8 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo info.can_id = it->second->id; info.ctype = it->second->ctype; info.material_name = it->second->get_display_filament_type(); + info.cali_idx = it->second->cali_idx; + info.filament_id = it->second->filament_setting_id; if (!it->second->color.empty()) { info.material_colour = AmsTray::decode_color(it->second->color); } else { @@ -82,6 +84,8 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo } else { info.can_id = it->second->id; info.material_name = ""; + info.cali_idx = -1; + info.filament_id = ""; info.ctype = 0; info.material_colour = AMS_TRAY_DEFAULT_COL; info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND; @@ -853,9 +857,12 @@ void AMSLib::render_extra_text(wxDC& dc) void AMSLib::render_generic_text(wxDC &dc) { bool show_k_value = true; - if (m_obj && (m_obj->cali_version >= 0) && (abs(m_info.k - 0) < 1e-3)) { + if (m_info.material_name.empty()) { show_k_value = false; } + else if (m_info.cali_idx == -1) { + get_default_k_n_value(m_info.filament_id, m_info.k, m_info.n); + } auto tmp_lib_colour = m_info.material_colour; change_the_opacity(tmp_lib_colour); @@ -3366,8 +3373,12 @@ void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj) m_vams_info.material_name = tray.get_display_filament_type(); m_vams_info.material_colour = tray.get_color(); + m_vams_info.cali_idx = tray.cali_idx; + m_vams_info.filament_id = tray.filament_setting_id; m_vams_lib->m_info.material_name = tray.get_display_filament_type(); m_vams_lib->m_info.material_colour = tray.get_color(); + m_vams_lib->m_info.cali_idx = tray.cali_idx; + m_vams_lib->m_info.filament_id = tray.filament_setting_id; if (last_k_value != m_vams_info.k || last_n_value != m_vams_info.n) { m_vams_lib->Refresh(); @@ -3380,8 +3391,12 @@ void AMSControl::reset_vams() m_vams_lib->m_info.n = 0; m_vams_lib->m_info.material_name = wxEmptyString; m_vams_lib->m_info.material_colour = AMS_CONTROL_WHITE_COLOUR; + m_vams_lib->m_info.cali_idx = -1; + m_vams_lib->m_info.filament_id = ""; m_vams_info.material_name = wxEmptyString; m_vams_info.material_colour = AMS_CONTROL_WHITE_COLOUR; + m_vams_info.cali_idx = -1; + m_vams_info.filament_id = ""; m_vams_lib->Refresh(); } diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index a87f63a70..22ed4ee5c 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -142,20 +142,24 @@ struct Caninfo AMSCanType material_state; int ctype=0; int material_remain = 100; + int cali_idx = -1; + std::string filament_id; float k = 0.0f; float n = 0.0f; std::vector material_cols; bool operator==(const Caninfo &other) const { - return can_id == other.can_id && - material_name == other.material_name && - material_colour == other.material_colour && + return can_id == other.can_id && + material_name == other.material_name && + material_colour == other.material_colour && material_state == other.material_state && - ctype == other.ctype && - material_remain == other.material_remain && - k == other.k && - n == other.n && + ctype == other.ctype && + material_remain == other.material_remain && + cali_idx == other.cali_idx && + filament_id == other.filament_id && + k == other.k && + n == other.n && material_cols == other.material_cols; } }; diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 224a8788a..f8f23079e 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -30,6 +30,30 @@ static std::string MachineBedTypeString[6] = { "pte" }; +void get_default_k_n_value(const std::string &filament_id, float &k, float &n) +{ + if (filament_id.compare("GFG00") == 0) { + // PETG + k = 0.04; + n = 1.0; + } else if (filament_id.compare("GFB00") == 0 || filament_id.compare("GFB50") == 0) { + // ABS + k = 0.04; + n = 1.0; + } else if (filament_id.compare("GFU01") == 0) { + // TPU + k = 0.2; + n = 1.0; + } else if (filament_id.compare("GFB01") == 0) { + // ASA + k = 0.04; + n = 1.0; + } else { + // PLA , other + k = 0.02; + n = 1.0; + } +} std::string get_calib_mode_name(CalibMode cali_mode, int stage) { diff --git a/src/slic3r/Utils/CalibUtils.hpp b/src/slic3r/Utils/CalibUtils.hpp index 980ba30c1..6927aa2ae 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -74,5 +74,7 @@ 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_default_k_n_value(const std::string &filament_id, float &k, float &n); + } } \ No newline at end of file