From 201c24a5fbf2b52686b3d1d98edd87483602917b Mon Sep 17 00:00:00 2001 From: thysson2701 Date: Tue, 9 Jun 2026 13:04:26 +0200 Subject: [PATCH] fix(preset): abgeleitete User-Presets bekommen eigene P-filament_id (Issue #52) save_current_preset() generierte eine P-ID nur bei leerem filament_id. Von Hersteller-Presets abgeleitete Presets erben aber dessen Vendor-ID (z.B. GFA001), wodurch sync_ams_list() auf das Vendor-Preset zurueckfiel. Bedingung an Preset::save() angeglichen: auch non-P IDs werden ersetzt. Co-Authored-By: Claude Opus 4.8 --- src/libslic3r/Preset.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index af3bfc05e1..871cb1e3f2 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -2852,7 +2852,9 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det else if (m_type == Preset::TYPE_FILAMENT) { preset.config.option("filament_settings_id", true)->values[0] = new_name; // Generate a unique filament_id for user presets that don't have one yet (PR #13315). - if (preset.filament_id.empty()) { + // Also regenerate when a derived preset still carries an inherited vendor id + // (non-P), otherwise AMS sync falls back to the vendor preset (Issue #52). + if (preset.filament_id.empty() || preset.filament_id.front() != 'P') { boost::uuids::detail::md5 hash; boost::uuids::detail::md5::digest_type digest; hash.process_bytes(new_name.data(), new_name.size());