From e8ae3d17530a02b3cc55d0bbeb9c5411ccc88c33 Mon Sep 17 00:00:00 2001 From: "weiting.ji" Date: Wed, 30 Jul 2025 10:01:30 +0800 Subject: [PATCH] FIX: Client uses default preset when reopening from project with non-local printer Change-Id: Ieded9d63338d74ca841e89aca16a9510355ee417 Jira: STUDIO-13490 (cherry picked from commit df2ee1cc533e2a7f5f71b4d880b08a6665b028ee) --- src/libslic3r/Preset.cpp | 10 +++++++--- src/libslic3r/Preset.hpp | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 9817f69203..b148138cbb 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -2746,7 +2746,7 @@ size_t PresetCollection::first_visible_idx() const size_t first_visible = -1; size_t idx = m_default_suppressed ? m_num_default_presets : 0; for (; idx < m_presets.size(); ++ idx) - if (m_presets[idx].is_visible) { + if (m_presets[idx].is_visible && m_presets[idx].get_printer_id() == "BBL") { if (first_visible == -1) first_visible = idx; if (m_type != Preset::TYPE_FILAMENT) @@ -2758,8 +2758,12 @@ size_t PresetCollection::first_visible_idx() const } } } - if (first_visible == -1) - first_visible = 0; + if (first_visible == -1) { + if (m_presets.size() > 1 && m_default_suppressed) + first_visible = m_presets.size() == m_num_default_presets ? 0 : m_num_default_presets; + else + first_visible = 0; + } return first_visible; } diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 2c9da0b4dd..1bf7066396 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -335,6 +335,7 @@ public: std::string get_current_printer_type(PresetBundle *preset_bundle); // get current preset type static void get_extruder_names_and_keysets(Type type, std::string& extruder_id_name, std::string& extruder_variant_name, std::set** p_key_set1, std::set** p_key_set2); + std::string get_printer_id() const { return vendor ? vendor->id : ""; } bool has_lidar(PresetBundle *preset_bundle); bool is_custom_defined();