FIX: add nozzle size filter for create preset dialog

jira: STUDIO-10969
Change-Id: Ideee88b35c41a34512e30aea55a6a518ca337f5e
This commit is contained in:
zhimin.zeng 2025-03-20 17:48:14 +08:00 committed by lane.wei
parent 815ab54c0c
commit 4f87d0de27
1 changed files with 17 additions and 0 deletions

View File

@ -2988,8 +2988,25 @@ wxArrayString CreatePrinterPresetDialog::printer_preset_sort_with_nozzle_diamete
{
std::vector<pair<float, std::string>> 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<Preset> printer_preset = iter->second;
if (printer_preset) {
auto nozzle_diameter = dynamic_cast<ConfigOptionFloatsNullable *>(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);