-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Profiles & Settings
Cura uses a stacked profile system. A schematic overview of this can be seen in the image below.
Each of the entries in the stack (eg; User, Quality, Material, etc) describes a profile. When we want to find out how much infill percentage should be used ("infill_sparse_density"), we simply ask the extruder stack what value it has. The extruder stack will then ask each of the profiles that it has (in sequence) if they have a value for the requested setting. The first profile to give an answer will define what the result is.
A slightly more complicated situation occurs when the value of a setting is defined by a function. Let's take the following example into consideration. We have a setting "foo" which value is defined by the formula "=bar / 2". This is defined in the quality profile of the left extruder. The value of "bar" is defined in the material only and is set to 50.
When we ask for the value of "foo", we expect to get 25 as a result. The following calls will be made in order:
- extruder_stack.getProperty("foo", "value")
- user.getProperty("foo", "value") -> Returns None
- quality_changes.getProperty("foo", "value") -> Returns None
- intent.getProperty("foo", "value") -> Returns None
- quality.getProperty("foo", "value") -> Returns "=bar/2"
- user.getProperty("bar", "value") -> returns None
- quality_changes.getProperty("bar", "value) -> Returns None
- intent.getProperty("bar", "value) -> Returns None
- quality.getProperty("bar", "value) -> Returns None
- material.getProperty("bar", "value) -> Returns 50
The profiles have some interdependency with one other, as can be seen in the picture below.
The user settings are all changes that are not stored to any profile. In the interface, a circular reset icon is shown for each of these settings. They are completely independant of the quality, quality_changes or intent. They are only "tied" to a machine.
Quality changes contain the settings that the user changed and stored to a profile. As such, a single profile generated by a user contains at least 2 files (one quality_change for the extruder and one for the global stack). The quality changes are only tied to the quality_type, since they describe a "delta" to be applied over a quality. So even if a quality changes because a material changes, the quality changes profile could stay the same (since it's only link, the quality_type remained the same)
Intent profiles contain settings that modify the quality by giving them an intent (eg: "Engineering" or "Smooth").). These profiles depend on the material, variant and quality_type
Quality profiles hold the resolution of the print by setting the layer height. Since all extruders must have the same layer height, this value is set in the global_stack part of the quality.
Hold all the settings as defined by the active material.
The variant, in case of the extruder, hold settings that have to do with nozzle size or specific settings that relate to this.
If a user makes changes to a certain machine, but not to such a degree that it should be considered an entirely new type of machines, the settings are stored here.
The machine default settings.
- Welcome
- Getting Started
- Reporting An Issue
- Core Development
- Plugins & Material Packages
- Printers
- Translations
- Best Practices
- Settings
- 3D Scene
- Profiling
- Cura User Files
- GitHub Actions