diff options
author | Ghostkeeper <rubend@tutanota.com> | 2020-04-27 01:42:31 +0300 |
---|---|---|
committer | Ghostkeeper <rubend@tutanota.com> | 2020-04-27 01:42:31 +0300 |
commit | 8146030bc8ea56432ae5bd8916ee27640ff8a015 (patch) | |
tree | 088839e7267c20a8b93174b1c53f30b6712e633d /docs/profiles | |
parent | 302e7ddc0025787b8bd8ce16d6c28849ca6b3335 (diff) |
Add documentation on evaluating a setting from a definition
Diffstat (limited to 'docs/profiles')
-rw-r--r-- | docs/profiles/getting_a_setting_value.md | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/docs/profiles/getting_a_setting_value.md b/docs/profiles/getting_a_setting_value.md index 205ac35b9d..08ad12ea9c 100644 --- a/docs/profiles/getting_a_setting_value.md +++ b/docs/profiles/getting_a_setting_value.md @@ -32,4 +32,12 @@ Evaluating a Stack ---- After the resolve and limit to extruder properties have been checked, the setting value needs to be evaluated from an extruder stack. -This is explained in more detail in the [Container Stacks](container_stacks.md) documentation. In brief, Cura will check the highest container in the extruder stack first to see whether that container overrides the setting. If it does, it returns that as the setting value. Otherwise, it checks the second container on the stack to see if that one overrides it. If it does it returns that value, and otherwise it checks the third container, and so on. If a setting is not overridden by any container in the extruder stack, it continues downward in the global stack. If it is also not overridden there, it eventually arrives at the definition in the bottom of the global stack, where all settings must have a value.
\ No newline at end of file +This is explained in more detail in the [Container Stacks](container_stacks.md) documentation. In brief, Cura will check the highest container in the extruder stack first to see whether that container overrides the setting. If it does, it returns that as the setting value. Otherwise, it checks the second container on the stack to see if that one overrides it. If it does it returns that value, and otherwise it checks the third container, and so on. If a setting is not overridden by any container in the extruder stack, it continues downward in the global stack. If it is also not overridden there, it eventually arrives at the definition in the bottom of the global stack. + +Evaluating a Definition +---- +If the evaluation for a setting reaches the last entry of the global stack, its definition, a few more things can happen. + +Definition containers have an inheritance structure. For instance, the `ultimaker3` definition container specifies in its metadata that it inherits from `ultimaker`, which in turn inherits from `fdmprinter`. So again here, when evaluating a property from the `ultimaker3` definition it will first look to see if the property is overridden by the `ultimaker3` definition itself, and otherwise refer on to the `ultimaker` definition or otherwise finally to the `fdmprinter` definition. `fdmprinter` is the last line of defence, and it contains *all* properties for *all* settings. + +But even in `fdmprinter`, not all settings have a `value` property. It is not a required property. If the setting doesn't have a `value` property, the `default_value` property is returned, which is a required property. The distinction between `value` and `default_value` is made in order to allow CuraEngine to load a definition file as well when running from the command line (a debugging technique for CuraEngine). It then won't have all of the correct setting values but it at least doesn't need to evaluate all of the Python expressions and you'll be able to make some debugging slices.
\ No newline at end of file |