From 9c5f33fd5782b74d43b581243d43d3efa8268f66 Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Thu, 14 May 2026 12:55:55 -0300 Subject: [PATCH] Fix Filament for Features (#13607) --- src/libslic3r/PrintObject.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 4e41fa7151..f572d3bbb1 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -3396,10 +3396,18 @@ static constexpr const std::initializer_list keys_extrud static void apply_to_print_region_config(PrintRegionConfig &out, const DynamicPrintConfig &in) { - // 1) Copy the "extruder key to sparse_infill_filament and wall_filament. + // 1) Map legacy "extruder" to feature filament keys as a fallback only. + // If any feature-specific filament is explicitly set, keep those values. auto *opt_extruder = in.opt(key_extruder); + auto *opt_sparse_infill_filament = in.opt("sparse_infill_filament"); + auto *opt_solid_infill_filament = in.opt("solid_infill_filament"); + auto *opt_wall_filament = in.opt("wall_filament"); + const bool has_feature_filament_override = + (opt_sparse_infill_filament != nullptr && opt_sparse_infill_filament->value > 0) || + (opt_solid_infill_filament != nullptr && opt_solid_infill_filament->value > 0) || + (opt_wall_filament != nullptr && opt_wall_filament->value > 0); if (opt_extruder) - if (int extruder = opt_extruder->value; extruder != 0) { + if (int extruder = opt_extruder->value; extruder > 1 && ! has_feature_filament_override) { // Not a default extruder. out.sparse_infill_filament.value = extruder; out.solid_infill_filament.value = extruder;