From ca4a2059fe1cf4b451b335c4e762e1e50d870537 Mon Sep 17 00:00:00 2001 From: "jiaxi.chen" Date: Fri, 9 May 2025 10:59:25 +0800 Subject: [PATCH] ENH: add warning while using PVA with 0.2nozzle jira: STUDIO-12049 Change-Id: Id60f417a94d447915c93d0d36937853616076f3b --- src/slic3r/GUI/Plater.cpp | 22 ++++++++++++++++++---- src/slic3r/GUI/Plater.hpp | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index a40d4f5ca..c562ae20f 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -8446,7 +8446,10 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) Preset::remove_suffix_modified(wx_name.ToUTF8().data())); if (preset_type == Preset::TYPE_FILAMENT) { + std::string old_name = wxGetApp().preset_bundle->filaments.get_edited_preset().name; wxGetApp().preset_bundle->set_filament_preset(idx, preset_name); + if (!q->on_filament_change(idx)) + wxGetApp().preset_bundle->set_filament_preset(idx, old_name); wxGetApp().plater()->update_project_dirty_from_presets(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); dynamic_filament_list.update(); @@ -8456,7 +8459,6 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) } auto select_flag = combo->GetFlag(selection); combo->ShowBadge(select_flag == (int)PresetComboBox::FilamentAMSType::FROM_AMS); - q->on_filament_change(idx); } bool select_preset = !combo->selection_is_changed_according_to_physical_printers(); // TODO: ? @@ -15218,15 +15220,27 @@ bool Plater::search_string_getter(int idx, const char** label, const char** tool return false; } -void Plater::on_filament_change(size_t filament_idx) +bool Plater::on_filament_change(size_t filament_idx) { auto& filament_presets = wxGetApp().preset_bundle->filament_presets; if (filament_idx >= filament_presets.size()) - return; + return false; Slic3r::Preset* filament = wxGetApp().preset_bundle->filaments.find_preset(filament_presets[filament_idx]); if (filament == nullptr) - return; + return false; std::string filament_type = filament->config.option("filament_type")->values[0]; + if (filament_type == "PVA") { + auto nozzle_diameters = p->config->option("nozzle_diameter")->values; + if (std::find(nozzle_diameters.begin(), nozzle_diameters.end(), 0.2) != nozzle_diameters.end()) { + wxString msg_text = _(L("It is not recommended to use PVA filaments with 0.2mm nozzles.")); + msg_text += "\n" + _(L("Are you sure to use them? \n")); + MessageDialog dialog(wxGetApp().plater(), msg_text, "", wxICON_WARNING | wxYES | wxNO); + if (dialog.ShowModal() == wxID_NO) { + return false; + } + } + } + return true; } // BBS. diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 019969a0d..e16752a29 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -505,7 +505,7 @@ public: // BBS: return false if not changed bool leave_gizmos_stack(); - void on_filament_change(size_t filament_idx); + bool on_filament_change(size_t filament_idx); void on_filament_count_change(size_t extruders_count); void on_filaments_delete(size_t extruders_count, size_t filament_id, int replace_filament_id = -1); std::vector> get_extruders_colors();