From 19a6a20b23700b2b599a8d262fde5364619daea3 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Wed, 22 Jan 2025 11:44:07 +0800 Subject: [PATCH] FIX: sync extruder info when select preset when the connected machine is mutli_extruer and is the same as preset 2. fix the filament unprintable check bug jira: STUDIO-10047 Change-Id: I4e78003f080897d5b43c0a742852078b149eba45 (cherry picked from commit 1fbc179ae4874d24089dc1faf81608b9417481cb) --- src/slic3r/GUI/PartPlate.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 12a7670fb5..c95494608d 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1730,7 +1730,7 @@ std::vector PartPlate::get_used_filaments() bool PartPlate::check_filament_printable(const DynamicPrintConfig &config, wxString& error_message) { error_message.clear(); - FilamentMapMode mode = config.option>("filament_map_mode")->value; + FilamentMapMode mode = this->get_real_filament_map_mode(config); // only check printablity if we have explicit map result if (mode != fmmManual) return true; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 5e7d51597b..469533ea9c 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -7879,6 +7879,18 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) preset_name = physical_printers.get_selected_printer_preset_name(); else physical_printers.unselect_printer(); + + + // sync extruder info when select multi_extruder preset + if (Slic3r::DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager()) { + MachineObject *obj = dev->get_selected_machine(); + if (obj && obj->is_multi_extruders()) { + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + if (preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle) == obj->printer_type) { + GUI::wxGetApp().sidebar().sync_extruder_list(); + } + } + } } //BBS //wxWindowUpdateLocker noUpdates1(sidebar->print_panel());