When a user creates a new filament preset by inheriting from an
existing one (e.g., "Brand ABS @BBL H2D" inheriting from "Generic
ABS @BBL H2D"), the resulting preset previously had no filament_id
of its own. This caused two problems:
1. The AMS sync pipeline could not distinguish the user preset from
its parent, so syncing filaments from the printer always resolved
to the generic base preset instead of the user's custom one.
2. External tools that rely on filament_id for preset identification
(e.g., Bambuddy, see maziggy/bambuddy#1053) could not assign or
recognize user-created inherited presets in AMS slots.
The root cause was twofold:
- No filament_id was generated during save_current_preset() for
inherited filament presets. Only base (non-inheriting) presets
received one via the CreatePresetsDialog flow.
- The AMS matching logic in sync_ams_list(), get_ams_cobox_infos(),
and get_filament_presets() filtered candidates with
`get_preset_base(f) == &f`, which by definition excludes any
preset with a non-empty inherits() field.
This commit:
- Generates a unique filament_id (MD5 hash of preset name, prefixed
with "P", truncated to 8 chars) when creating a new filament
preset in PresetCollection::save_current_preset(). This matches
the existing ID generation scheme used for base filaments in
CreatePresetsDialog::get_filament_id().
- Persists filament_id into the JSON when saving inherited presets
via Preset::save() and get_differed_values_to_update().
- Broadens the AMS filament matching predicates to also consider
user presets that carry their own filament_id, rather than
requiring them to be base presets.
Files changed:
src/libslic3r/Preset.cpp - ID generation, save, lookup
src/libslic3r/PresetBundle.cpp - AMS sync matching predicates
This PR adds a new filament sync mode setting for device-based filament synchronization.
Users can now choose between syncing both filament preset + color (current behavior) or syncing color only, so calibrated local filament profiles are preserved while still updating slot colors from the printer.
It also includes small UI improvements for the new preference entry and sync status messaging.
<img width="665" height="671" alt="image" src="https://github.com/user-attachments/assets/23980846-0113-48ab-84aa-adf5cdab8ab6" />
* Fix active filament preset not matching wizard selection on first run
After completing the setup wizard with only a non-PLA filament selected
(e.g. Generic ABS), the active filament preset defaulted to Generic PLA
instead of the user's selection. This happened because load_presets()
falls back to Generic PLA when the initial printer differs from the
preferred printer, and the first_added_filament override was disabled.
Add post-load correction in apply_config() that switches the active
filament to the first compatible wizard-selected filament when the
current active filament is not in the wizard selection. Also fix the
guide JS (22.js, 23.js) to use the filalist attribute for building
the filament array, and add platform-specific build test commands to
CLAUDE.md.
* Replace @System filaments with vendor-specific overrides in wizard
When the wizard selects a generic filament like "Generic ABS @System",
check if a vendor-specific override exists (e.g. BBL "Generic ABS")
and use that instead. This ensures printer-tuned profiles are preferred,
preventing load_installed_filaments from adding unwanted BBL defaults.
When printers from the default bundle are also selected, both variants
are kept since those printers need the @System version.
Also adds diagnostic logging for filament loading in LoadProfileFamily.
* Guard against persisting presets for Default Printer and fix filament override logic
Prevent export_selections from saving stale preset settings for the
built-in "Default Printer" placeholder, which is only the initial state
before a real printer is loaded. Also require a non-default vendor printer
to be selected before replacing @System filaments with vendor-specific
overrides in the wizard, avoiding incorrect filament substitution when
only the default bundle is present.
* The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed
* Merge branch 'main' into main
* Merge branch 'SoftFever:main' into main
* Revert "The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed"
This reverts commit 8d296720b8de58b1bfa4f008a24cee841a8472c6.
* Update Qidi Q2 0.4 nozzle.json
修改Q2打印高度
* Merge branch 'SoftFever:main' into main
* Merge branch 'SoftFever:main' into main
* change machine_gcode
* Merge branch 'main' of https://github.com/HYzd766/OrcaSlicer
* Merge branch 'SoftFever:main' into main
* Multi-color code compatible with QIDI models
* Merge branch 'main' into main
* toggle axis visibility on canvas (#9666)
* toggle axis visibility on canvas
* set show_axes config on toggle
* fix: Add pause and filament change to machine gcodes for Sovol SV08 MAX (#11214)
* Add fixed Ironing Angle setting for uniform surface finish (#11195)
* Initial working fixed ironing angle implemented with new Fixed ironing angle setting
* update documentation
* Combine Fill.is_using_template_angle and Fill.alternate_fill_direction into Fill.fixed_angle
* Rename SurfaceFillParams.is_using_template_angle to SurfaceFillParam.fixed_angle.
Due to the decimal portion of floating-point numbers generated during square root extraction, mismatched matrix sizes were mistakenly considered consistent, resulting in the flush matrix size not being corrected. Now we compare the square value to avoid errors.
jira: STUDIO-13727
Change-Id: I1f3768dab186b25c9ac4e85d4eff24913f15b3dc
(cherry picked from commit d0e9a8c3f3086b4ad2bc14bbfebd3d6ceff9eefc)
- Add a filament picker dialog for official color selection
- Enable displaying multiple filament colors in the picker dialog and preview sidebar
- Introduce two new config options:
- `filament_multi_colors`
- `filament_color_types`
to both the application config and the 3MF config
jira: STUDIO-12346
Change-Id: I66f8c1ec9147df4f5948c8a329c1737551280e63
(cherry picked from commit 522dc0bbca49033a1ba9725ca7f6c3ea729691a6)
/run/build/BambuStudio/src/libslic3r/PresetBundle.cpp: In member function ‘unsigned int Slic3r::PresetBundle::sync_ams_list(std::vector<std::pair<Slic3r::DynamicPrintConfig*, std::__cxx11::basic_string<char> > >&, bool, std::map<int, Slic3r::AMSMapInfo>&, bool, Slic3r::MergeFilamentInfo&)’:
/run/build/BambuStudio/src/libslic3r/PresetBundle.cpp:1973:49: error: ‘L’ was not declared in this scope
1973 | unknowns.emplace_back(&ams, L("The filament model is unknown. Still using the previous filament preset."));
| ^
(cherry picked from commit a8d792ecf8508c030e27aae139eeaf45884ebdc7)
when adding double-head related material parameters
jira: none
Change-Id: I666e1069746d2c284f59ca2ac0f44c664c578a63
(cherry picked from commit 4af6386302ac8daf7349099009f2ad73111d1b0c)