5.6 KiB
Preset naming
A preset's name is the loader's key, not decoration. The index registers it; inherits,
compatible_printers and the default_* keys reference it by the exact string; renamed_from depends
on it; and setting_id / filament_id hash it (see ids.md). Two presets of one type in a
bundle may not share a name (check_preset_name_uniqueness). Treat a name change as an identity change,
not a relabel.
Naming is convention only where the loader does not parse it. What the loader actually acts on:
| Type | Shape | Acted on |
|---|---|---|
machine_model |
<Model> |
the exact string, named by a variant's printer_model |
machine |
<Model> <nozzle> nozzle |
the exact string, named by compatible_printers; printer_variant must equal a nozzle diameter |
process |
<lh>mm <Quality> @<target> |
the exact string when referenced or selected; the @<target> half is a label |
filament |
<Product> @<target> |
text before the first @ is the alias, used for shadowing; the rest is a label |
machine_model
<Model> — the vendor-prefixed model name (Bambu Lab X1 Carbon, Creality K1, Prusa CORE One). A
variant names it verbatim in printer_model; a mismatch makes the variant invalid. check_name_consistency
forces the index entry to equal the file's name, and the variant's printer_model targets this string
(A machine_model is not a config preset).
It is also the <Model>_cover.png and bed-asset stem.
machine (variant)
<Model> <nozzle> nozzle is near-universal (Bambu Lab X1 Carbon 0.4 nozzle). printer_variant holds
the bare nozzle (0.4) and must be an exact member of the model's nozzle_diameter list — the hard
rules are in The machine variant. Casing varies
(nozzle / Nozzle): match the bundle, not this page. A variant that is not nozzle-specific (a special
toolhead, a multi-material build) may drop the suffix — still an exact reference. Bases are named
fdm_machine_common / fdm_<vendor>_common.
process
<layer height>mm <quality> @<target> — process-profiles.md has the
quality ladder and the fdm_process_* base names. The quality label stays before @ and the printer
target after it: a printer model in the quality slot leaves the tier undescribed. The @<target> is a
human label, not a reference: it usually does not equal a real variant, and compatibility comes from the
resolved compatible_printers list or condition.
filament
<Product> @<target>. The product half is what filament_id hashes and what survives as the alias up
to the first @; the target half is a label except for reserved forms:
@base— a non-instantiated product root.@baseis convention; a base is really identified byinstantiation: "false"and nosetting_id(the three-part shape).@System— the OrcaFilamentLibrary selectable shim, and the convention for an all-printer product (<Product> @System, emptycompatible_printers); not enforced, so a deviation is worth a review comment. The literalGeneric <mat> @Systemis load-bearing for 3MF/project recovery, beyond the alias rule (alias shadowing).@<Vendor>,@<Vendor> <Model>,@<Vendor> <Model> <nozzle> nozzle— printer tunes, BBL's shape. Other vendors differ (a bare model, a printer serial, Creality's@<Model>-all). Specificity is judged fromcompatible_printers, not the name (one variant, one profile).- Color is not part of the product name:
<Product> <Color>presets are not authored; the color is chosen at runtime (color is a runtime property).
Checking names
Check every newly added profile's name against its type and role: model, selectable preset or base.
Apply the same checks to an intentional name change. The human-readable naming shapes are not enforced
by check: inspect the added or renamed profiles in the diff, using neighbouring names as context and
following the bundle's established style where the type-specific conventions allow variation.
For bases (instantiation: "false"), use the type-specific conventions:
| Type | Base names |
|---|---|
machine |
fdm_machine_common, fdm_<vendor>_common, or an established machine-family base name |
process |
fdm_process_*, including shared roots and per-layer-height / per-nozzle bases such as fdm_process_single_0.20 |
filament |
fdm_filament_* material roots or <Product> @base product roots |
Shared base names across bundles are intentional, including product roots such as Fiberon PA6-CF @base.
Investigate a newly authored base that retains an unrelated selectable preset's name from a copy.
Name uniqueness is checked by CI. check_preset_name_uniqueness checks type + name within each
bundle. check_machine_model_name_uniqueness checks model names across the entire tree, even with
--vendor: Preset::get_printer_type matches printer_model against all vendors' models and returns
the first match, so a duplicate makes lookup depend on vendor order. Both run as part of
python3 scripts/orca_profile_tool.py check.
Not the same as the filename
The loader keys off name, and a filename that disagrees usually still loads. Index name must equal the
file's name, and the filename should match sub_path; a mismatch that differs only in case breaks
another platform (cross-platform paths).