mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Account for setting-function value that evaluates to another setting-function.
part of CURA-9859
This commit is contained in:
parent
78ca98f9bf
commit
0a079d9794
1 changed files with 12 additions and 16 deletions
|
@ -229,22 +229,24 @@ class UFPWriter(MeshWriter):
|
||||||
"quality": asdict(machine_manager.activeQualityDisplayNameMap()),
|
"quality": asdict(machine_manager.activeQualityDisplayNameMap()),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _retrieveValue(container: InstanceContainer, setting_: str):
|
||||||
|
value_ = container.getProperty(setting_, "value")
|
||||||
|
for _ in range(0, 1024): # Prevent possibly endless loop by not using a limit.
|
||||||
|
if not isinstance(value_, SettingFunction):
|
||||||
|
return value_ # Success!
|
||||||
|
value_ = value_(container)
|
||||||
|
return 0 # Fallback value after breaking possibly endless loop.
|
||||||
|
|
||||||
global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
|
global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
|
||||||
|
|
||||||
# Add global user or quality changes
|
# Add global user or quality changes
|
||||||
global_flattened_changes = InstanceContainer.createMergedInstanceContainer(global_stack.userChanges, global_stack.qualityChanges)
|
global_flattened_changes = InstanceContainer.createMergedInstanceContainer(global_stack.userChanges, global_stack.qualityChanges)
|
||||||
for setting in global_flattened_changes.getAllKeys():
|
for setting in global_flattened_changes.getAllKeys():
|
||||||
value = global_flattened_changes.getProperty(setting, "value")
|
settings["global"]["changes"][setting] = _retrieveValue(global_flattened_changes, setting)
|
||||||
if isinstance(value, SettingFunction):
|
|
||||||
value = value(global_flattened_changes)
|
|
||||||
settings["global"]["changes"][setting] = value
|
|
||||||
|
|
||||||
# Get global all settings values without user or quality changes
|
# Get global all settings values without user or quality changes
|
||||||
for setting in global_stack.getAllKeys():
|
for setting in global_stack.getAllKeys():
|
||||||
value = global_stack.getProperty(setting, "value")
|
settings["global"]["all_settings"][setting] = _retrieveValue(global_stack, setting)
|
||||||
if isinstance(value, SettingFunction):
|
|
||||||
value = value(global_stack)
|
|
||||||
settings["global"]["all_settings"][setting] = value
|
|
||||||
|
|
||||||
for i, extruder in enumerate(global_stack.extruderList):
|
for i, extruder in enumerate(global_stack.extruderList):
|
||||||
# Add extruder fields to settings dictionary
|
# Add extruder fields to settings dictionary
|
||||||
|
@ -256,16 +258,10 @@ class UFPWriter(MeshWriter):
|
||||||
# Add extruder user or quality changes
|
# Add extruder user or quality changes
|
||||||
extruder_flattened_changes = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder.qualityChanges)
|
extruder_flattened_changes = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder.qualityChanges)
|
||||||
for setting in extruder_flattened_changes.getAllKeys():
|
for setting in extruder_flattened_changes.getAllKeys():
|
||||||
value = extruder_flattened_changes.getProperty(setting, "value")
|
settings[f"extruder_{i}"]["changes"][setting] = _retrieveValue(extruder_flattened_changes, setting)
|
||||||
if isinstance(value, SettingFunction):
|
|
||||||
value = value(extruder_flattened_changes)
|
|
||||||
settings[f"extruder_{i}"]["changes"][setting] = value
|
|
||||||
|
|
||||||
# Get extruder all settings values without user or quality changes
|
# Get extruder all settings values without user or quality changes
|
||||||
for setting in extruder.getAllKeys():
|
for setting in extruder.getAllKeys():
|
||||||
value = extruder.getProperty(setting, "value")
|
settings[f"extruder_{i}"]["all_settings"][setting] = _retrieveValue(extruder, setting)
|
||||||
if isinstance(value, SettingFunction):
|
|
||||||
value = value(extruder)
|
|
||||||
settings[f"extruder_{i}"]["all_settings"][setting] = value
|
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue