diff --git a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp index 6ff593a16ec..ffa278b04ae 100644 --- a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp +++ b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp @@ -203,7 +203,13 @@ std::string filament_id_by_name(const Slic3r::PresetCollection& filaments, if (pass == 1 && !preset.is_compatible) { continue; // Pass 1: only compatible presets } - 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) {