From 263180ddf06ecc879b77e3a57482082552c52da0 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Sat, 15 Feb 2025 11:29:59 +0800 Subject: [PATCH] FIX: fix error sync when switch third part preset jira: STUDIO-10443 Change-Id: I5cf8c2af9945cf19a7bd2819379e4a782299343e --- src/slic3r/GUI/Plater.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 715b77442..59db71ecf 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -8092,8 +8092,19 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) 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(); + Preset& cur_preset = preset_bundle->printers.get_edited_preset(); + if (cur_preset.get_printer_type(preset_bundle) == obj->printer_type) { + double preset_nozzle_diameter = cur_preset.config.option("nozzle_diameter")->values[0]; + bool same_nozzle_diameter = true; + for (const Extder &extruder : obj->m_extder_data.extders) { + if (!is_approx(extruder.current_nozzle_diameter, float(preset_nozzle_diameter))) { + same_nozzle_diameter = false; + } + } + + if (cur_preset.is_system || (!cur_preset.is_system && same_nozzle_diameter)) { + GUI::wxGetApp().sidebar().sync_extruder_list(); + } } } }