fix(sync): Vendor-Filter bei User-Presets überspringen (Issue #52)
Some checks failed
Build all / build_linux (push) Has started running
Build all / build_windows (push) Has been cancelled
Build all / build_macos_arch (arm64) (push) Has been cancelled
Build all / build_macos_arch (x86_64) (push) Has been cancelled
Build all / Build macOS Universal (push) Has been cancelled
Build all / Unit Tests (push) Has been cancelled
Build all / Flatpak (map[arch:aarch64 runner:ubuntu-24.04-arm]) (push) Has been cancelled
Build all / Flatpak (map[arch:x86_64 runner:ubuntu-24.04]) (push) Has been cancelled
Some checks failed
Build all / build_linux (push) Has started running
Build all / build_windows (push) Has been cancelled
Build all / build_macos_arch (arm64) (push) Has been cancelled
Build all / build_macos_arch (x86_64) (push) Has been cancelled
Build all / Build macOS Universal (push) Has been cancelled
Build all / Unit Tests (push) Has been cancelled
Build all / Flatpak (map[arch:aarch64 runner:ubuntu-24.04-arm]) (push) Has been cancelled
Build all / Flatpak (map[arch:x86_64 runner:ubuntu-24.04]) (push) Has been cancelled
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.
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user