From 484d70efb5a0fbcef7f736c8ed8f1a6f6068fde6 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Thu, 20 Mar 2025 14:27:32 +0800 Subject: [PATCH] FIX: show sync ams unknown details Change-Id: I1febb10b73a87f98a477fea5fbe2583c752ab330 Jira: STUDIO-10969, STUDIO-10973, STUDIO-11011 (cherry picked from commit f1eb5e829288236282e2322a961e012884ad90cf) --- src/libslic3r/PresetBundle.cpp | 12 +++++++----- src/libslic3r/PresetBundle.hpp | 2 +- src/slic3r/GUI/Plater.cpp | 29 ++++++++++++++++++++--------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 5b7cfa2c46..e4e1ebdd3e 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -2035,7 +2035,7 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info) } } -unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns, bool use_map, std::map &maps,bool enable_append, MergeFilamentInfo &merge_info) +unsigned int PresetBundle::sync_ams_list(std::vector> &unknowns, bool use_map, std::map &maps,bool enable_append, MergeFilamentInfo &merge_info) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "use_map:" << use_map << " enable_append:" << enable_append; std::vector ams_filament_presets; @@ -2106,16 +2106,18 @@ unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns, bool use_map, s ams_filament_presets.push_back(this->filament_presets[ams_filament_presets.size()]); ams_filament_colors.push_back(filament_color); ams_multi_color_filment.push_back(filament_multi_color); - ++unknowns; + unknowns.emplace_back(&ams, L("The filament model is unknown. Still using the previous filament preset.")); continue; } - iter = std::find_if(filaments.begin(), filaments.end(), [&filament_type](auto &f) { - return f.is_compatible && f.is_system; + iter = std::find_if(filaments.begin(), filaments.end(), [](auto &f) { + return f.is_compatible && f.is_system; }); if (iter == filaments.end()) continue; } - ++unknowns; + unknowns.emplace_back(&ams, boost::algorithm::starts_with(iter->name, filament_type) + ? L("The filament may not be compatible with the current machine settings. Generic filament presets will be used.") + : L("The filament model is unknown. A random filament preset will be used.")); filament_id = iter->filament_id; } ams_filament_presets.push_back(iter->name); diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index ab91180e83..54b0a3390f 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -162,7 +162,7 @@ public: void update_num_filaments(unsigned int to_del_flament_id); void get_ams_cobox_infos(AMSComboInfo &combox_info); - unsigned int sync_ams_list(unsigned int &unknowns, bool use_map, std::map &maps,bool enable_append, MergeFilamentInfo& merge_info); + unsigned int sync_ams_list(std::vector> &unknowns, bool use_map, std::map &maps,bool enable_append, MergeFilamentInfo& merge_info); //BBS: check whether this is the only edited filament bool is_the_only_edited_filament(unsigned int filament_index); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f1ca3478b7..271d164ff6 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -207,6 +207,13 @@ wxDEFINE_EVENT(EVT_ADD_FILAMENT, SimpleEvent); wxDEFINE_EVENT(EVT_DEL_FILAMENT, SimpleEvent); wxDEFINE_EVENT(EVT_ADD_CUSTOM_FILAMENT, ColorEvent); wxDEFINE_EVENT(EVT_NOTICE_CHILDE_SIZE_CHANGED, SimpleEvent); + +#define PRINTER_THUMBNAIL_SIZE (wxSize(FromDIP(48), FromDIP(48))) +#define PRINTER_THUMBNAIL_SIZE_SMALL (wxSize(FromDIP(32), FromDIP(32))) +#define PRINTER_PANEL_SIZE_SMALL (wxSize(FromDIP(98), FromDIP(68))) +#define PRINTER_PANEL_SIZE_WIDEN (wxSize(FromDIP(136), FromDIP(68))) +#define PRINTER_PANEL_SIZE (wxSize(FromDIP(98), FromDIP(98))) + bool Plater::has_illegal_filename_characters(const wxString& wxs_name) { std::string name = into_u8(wxs_name); @@ -519,6 +526,7 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) vsizer->Add(hsizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(8)); vsizer->Add(combo_printer, 0, wxEXPAND | wxALL, FromDIP(4)); panel_printer_preset->SetSizer(vsizer); + panel_printer_bed->SetMinSize(PRINTER_PANEL_SIZE_SMALL); } else { wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL); hsizer->AddSpacer(FromDIP(4)); @@ -527,6 +535,7 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) hsizer->Add(combo_printer, 1, wxALIGN_CENTRE | wxLEFT | wxRIGHT, FromDIP(6)); hsizer->AddSpacer(FromDIP(8)); panel_printer_preset->SetSizer(hsizer); + panel_printer_bed->SetMinSize(PRINTER_PANEL_SIZE_WIDEN); } } @@ -1366,11 +1375,6 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj) } } -#define PRINTER_THUMBNAIL_SIZE (wxSize(FromDIP(48), FromDIP(48))) -#define PRINTER_THUMBNAIL_SIZE_SMALL (wxSize(FromDIP(32), FromDIP(32))) -#define PRINTER_PANEL_SIZE_SMALL (wxSize(FromDIP(98), FromDIP(68))) -#define PRINTER_PANEL_SIZE (wxSize(FromDIP(98), FromDIP(98))) - void Sidebar::update_sync_ams_btn_enable(wxUpdateUIEvent &e) { if (m_last_slice_state != p->plater->is_background_process_slicing()) { @@ -2386,6 +2390,7 @@ void Sidebar::msw_rescale() p->btn_sync_printer->SetPaddingSize({FromDIP(6), FromDIP(12)}); p->btn_sync_printer->SetMinSize(PRINTER_PANEL_SIZE); p->btn_sync_printer->SetMaxSize(PRINTER_PANEL_SIZE); + p->panel_printer_bed->SetMinSize(isDual ? PRINTER_PANEL_SIZE : PRINTER_PANEL_SIZE_WIDEN); p->btn_sync_printer->Rescale(); #if 0 if (p->mode_sizer) @@ -2939,21 +2944,27 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) color_before_sync.push_back(color_opt->values[i]); } MergeFilamentInfo merge_info; - unsigned int unknowns = 0; + std::vector> unknowns; auto enable_append = wxGetApp().app_config->get_bool("enable_append_color_by_sync_ams"); auto n = wxGetApp().preset_bundle->sync_ams_list(unknowns, !sync_result.direct_sync, sync_result.sync_maps, enable_append, merge_info); + wxString detail; + for (auto & uk : unknowns) { + auto tray_name = uk.first->opt_string("tray_name", 0u); + auto filament_type = uk.first->opt_string("filament_type", 0u); + detail += from_u8("\n- " + tray_name + "(" + filament_type + ") ") + _L(uk.second); + } if (n == 0) { MessageDialog dlg(this, - _L("There are no compatible filaments, and sync is not performed."), + _L("There are no compatible filaments, and sync is not performed.") + detail, _L("Sync filaments with AMS"), wxOK); dlg.ShowModal(); return; } ams_filament_ids = boost::algorithm::join(list2, ","); wxGetApp().app_config ->set("ams_filament_ids", p->ams_list_device, ams_filament_ids); - if (unknowns > 0) { + if (!unknowns.empty()) { MessageDialog dlg(this, - _L("There are some unknown filaments mapped to generic preset. Please update Orca Slicer or restart Orca Slicer to check if there is an update to system presets."), + _L("There are some unknown or uncompatible filaments mapped to generic preset.\nPlease update Orca Slicer or restart Orca Slicer to check if there is an update to system presets.") + detail, _L("Sync filaments with AMS"), wxOK); dlg.ShowModal(); }