fix(sync): Vendor-Filter bei User-Presets überspringen (Issue #52)

filament_id_by_name() verwarf abgeleitete User-Presets, weil
filament_vendor vom Vendor-Parent (z.B. Anycubic) statt vom User-Preset
(Tinmorry) aufgelöst wird. Der Vendor-Filter wird jetzt nur noch auf
System-Presets angewandt; bei User-Presets ist der strikte Namensvergleich
ausreichend, sodass der AMS-Sync das korrekte Preset trifft statt aufs
Vendor-Preset zurückzufallen.
This commit is contained in:
thysson2701
2026-06-13 15:06:17 +02:00
parent b82162bfef
commit 080addbdab

View File

@@ -193,7 +193,13 @@ std::string filament_id_by_name(const Slic3r::PresetCollection& filaments,
<< " filament_id_empty=" << preset.filament_id.empty();
continue;
}
if (!normalized_vendor_filters.empty()) {
// Skip the vendor filter for user presets: a preset derived from a
// vendor-specific parent (e.g. "Anycubic PLA Matte @...") resolves
// filament_vendor from the PARENT ("Anycubic"), not from the user
// preset itself ("Tinmorry"), so the filter would wrongly drop it and
// the AMS sync falls back to the vendor preset (Issue #52). The strict
// name match below is discriminating enough for user presets.
if (!preset.is_user() && !normalized_vendor_filters.empty()) {
const std::string preset_vendor = normalize_filament_name_for_match(preset.config.opt_string("filament_vendor", 0u));
bool vendor_match = false;
for (const auto& vendor_filter : normalized_vendor_filters) {