From 4f87d0de271026d0067f7ce449db0c3bdde5744d Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Thu, 20 Mar 2025 17:48:14 +0800 Subject: [PATCH] FIX: add nozzle size filter for create preset dialog jira: STUDIO-10969 Change-Id: Ideee88b35c41a34512e30aea55a6a518ca337f5e --- src/slic3r/GUI/CreatePresetsDialog.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 6ba44031b..04cfec4ac 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -2988,8 +2988,25 @@ wxArrayString CreatePrinterPresetDialog::printer_preset_sort_with_nozzle_diamete { std::vector> preset_sort; + auto get_nozzle_size_for_printer_model = [this](const std::string & model_name) -> size_t { + auto iter = m_printer_name_to_preset.find(model_name); + if (iter != m_printer_name_to_preset.end()) { + std::shared_ptr printer_preset = iter->second; + if (printer_preset) { + auto nozzle_diameter = dynamic_cast(printer_preset->config.option("nozzle_diameter", true)); + return nozzle_diameter->values.size(); + } + } + return 1; // default nozzle size + }; + + size_t selected_nozzle_size = get_nozzle_size_for_printer_model(into_u8(m_select_printer->GetStringSelection())); for (const Slic3r::VendorProfile::PrinterModel &model : vendor_profile.models) { std::string model_name = model.name; + size_t nozzle_size = get_nozzle_size_for_printer_model(model_name); + if (nozzle_size != selected_nozzle_size) + continue; + for (const Slic3r::VendorProfile::PrinterVariant &variant : model.variants) { try { float variant_diameter = std::stof(variant.name);