From fdc6fbbac16865ab3cb13360d0a38ef317514d5b Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Thu, 11 May 2017 17:50:12 +0200 Subject: [PATCH 01/10] Handle limit_to_extruder in {Extruder,Global}Stack getProperty This way we do not need to special case limit_to_extruder and instead always use limit_to_extruder if it is set. Contributest to CURA-3738 --- cura/Settings/ExtruderStack.py | 6 ++++++ cura/Settings/GlobalStack.py | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 18a9969828..5fca888e4d 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -59,6 +59,12 @@ class ExtruderStack(CuraContainerStack): if not super().getProperty(key, "settable_per_extruder"): return self.getNextStack().getProperty(key, property_name) + limit_to_extruder = super().getProperty(key, "limit_to_extruder") + if (limit_to_extruder is not None and limit_to_extruder != "-1") and self.getMetaDataEntry("position") != str(limit_to_extruder): + result = self.getNextStack().extruders[int(limit_to_extruder)].getProperty(key, property_name) + if result is not None: + return result + return super().getProperty(key, property_name) @override(CuraContainerStack) diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index cee141cf93..2f5cb48743 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -71,6 +71,7 @@ class GlobalStack(CuraContainerStack): if not self.definition.findDefinitions(key = key): return None + # Handle the "resolve" property. if self._shouldResolve(key, property_name): self._resolving_settings.add(key) resolve = super().getProperty(key, "resolve") @@ -78,6 +79,13 @@ class GlobalStack(CuraContainerStack): if resolve is not None: return resolve + # Handle the "limit_to_extruder" property. + limit_to_extruder = super().getProperty(key, "limit_to_extruder") + if limit_to_extruder is not None and limit_to_extruder != "-1": + result = self._extruders[int(limit_to_extruder)].getProperty(key, property_name) + if result is not None: + return result + return super().getProperty(key, property_name) ## Overridden from ContainerStack From 94881f59f5d49d50d4ed0592645141164fabf2d9 Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Thu, 11 May 2017 17:51:10 +0200 Subject: [PATCH 02/10] Remove most of the "extruderValue" calls from fdmprinter support settings Since limit_to_extruder is now handled by the stacks themselves, we no longer need to account for it in the definition. Contributes to CURA-3738 --- resources/definitions/fdmprinter.def.json | 42 +++++++++++------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 46b3b125a4..85c4a40be7 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3170,7 +3170,7 @@ "default_value": 0.1, "type": "float", "enabled": "support_enable", - "value": "extruderValue(support_extruder_nr, 'support_z_distance')", + "value": "support_z_distance", "limit_to_extruder": "support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr", "settable_per_mesh": true }, @@ -3182,7 +3182,7 @@ "minimum_value": "0", "maximum_value_warning": "machine_nozzle_size", "default_value": 0.1, - "value": "extruderValue(support_extruder_nr, 'support_z_distance') if resolveOrValue('support_type') == 'everywhere' else 0", + "value": "support_z_distance if support_type == 'everywhere' else 0", "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr", "type": "float", "enabled": "support_enable and resolveOrValue('support_type') == 'everywhere'", @@ -3225,11 +3225,11 @@ "unit": "mm", "type": "float", "minimum_value": "0", - "maximum_value_warning": "extruderValue(support_infill_extruder_nr, 'support_xy_distance')", + "maximum_value_warning": "support_xy_distance", "default_value": 0.2, "value": "machine_nozzle_size / 2", "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable and extruderValue(support_infill_extruder_nr, 'support_xy_overrides_z') == 'z_overrides_xy'", + "enabled": "support_enable and support_xy_overrides_z == 'z_overrides_xy'", "settable_per_mesh": true }, "support_bottom_stair_step_height": @@ -3327,10 +3327,10 @@ "type": "float", "default_value": 1, "minimum_value": "0", - "minimum_value_warning": "0.2 + resolveOrValue('layer_height')", + "minimum_value_warning": "0.2 + layer_height", "maximum_value_warning": "10", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", + "enabled": "support_interface_enable and support_enable", "settable_per_mesh": true, "children": { @@ -3342,7 +3342,7 @@ "type": "float", "default_value": 1, "minimum_value": "0", - "minimum_value_warning": "0.2 + resolveOrValue('layer_height')", + "minimum_value_warning": "0.2 + layer_height", "maximum_value_warning": "10", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_height')", "limit_to_extruder": "support_roof_extruder_nr", @@ -3358,7 +3358,7 @@ "default_value": 1, "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_height')", "minimum_value": "0", - "minimum_value_warning": "min(0.2 + resolveOrValue('layer_height'), extruderValue(support_bottom_extruder_nr, 'support_bottom_stair_step_height'))", + "minimum_value_warning": "min(0.2 + layer_height, extruderValue(support_bottom_extruder_nr, 'support_bottom_stair_step_height'))", "maximum_value_warning": "10", "limit_to_extruder": "support_bottom_extruder_nr", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", @@ -3375,7 +3375,7 @@ "minimum_value": "0", "maximum_value_warning": "support_interface_height", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", + "enabled": "support_interface_enable and support_enable", "settable_per_mesh": true }, "support_interface_density": @@ -3388,7 +3388,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", + "enabled": "support_interface_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3403,7 +3403,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", + "enabled": "support_roof_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3419,7 +3419,7 @@ "minimum_value_warning": "support_roof_line_width - 0.0001", "value": "0 if support_roof_density == 0 else (support_roof_line_width * 100) / support_roof_density * (2 if support_roof_pattern == 'grid' else (3 if support_roof_pattern == 'triangles' else 1))", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", + "enabled": "support_roof_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3435,7 +3435,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", + "enabled": "support_bottom_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3451,7 +3451,7 @@ "minimum_value_warning": "support_bottom_line_width - 0.0001", "value": "0 if support_bottom_density == 0 else (support_bottom_line_width * 100) / support_bottom_density * (2 if support_bottom_pattern == 'grid' else (3 if support_bottom_pattern == 'triangles' else 1))", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", + "enabled": "support_bottom_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3475,7 +3475,7 @@ }, "default_value": "concentric", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", + "enabled": "support_interface_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3497,7 +3497,7 @@ "default_value": "concentric", "value": "support_interface_pattern", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", + "enabled": "support_roof_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -3518,7 +3518,7 @@ "default_value": "concentric", "value": "support_interface_pattern", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", + "enabled": "support_bottom_enable and support_enable", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3545,7 +3545,7 @@ "minimum_value": "0", "minimum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "20", - "enabled": "support_enable and extruderValue(support_infill_extruder_nr, 'support_use_towers')", + "enabled": "support_enable and support_use_towers", "settable_per_mesh": true }, "support_minimal_diameter": @@ -3559,8 +3559,8 @@ "minimum_value": "0", "minimum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "20", - "maximum_value": "extruderValue(support_infill_extruder_nr, 'support_tower_diameter')", - "enabled": "support_enable and extruderValue(support_infill_extruder_nr, 'support_use_towers')", + "maximum_value": "support_tower_diameter", + "enabled": "support_enable and support_use_towers", "settable_per_mesh": true }, "support_tower_roof_angle": @@ -3573,7 +3573,7 @@ "maximum_value": "90", "default_value": 65, "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable and extruderValue(support_infill_extruder_nr, 'support_use_towers')", + "enabled": "support_enable and support_use_towers", "settable_per_mesh": true } } From 434aaed767d609d2d5bf03e4cc76d3889c4d11f4 Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Thu, 11 May 2017 17:56:31 +0200 Subject: [PATCH 03/10] Remove extruderValue call from raft setting Contiributes to CURA-3738 --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 85c4a40be7..32df02f94d 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3926,7 +3926,7 @@ "default_value": 1.6, "value": "raft_base_line_width * 2", "minimum_value": "0", - "minimum_value_warning": "extruderValue(adhesion_extruder_nr, 'raft_base_line_width')", + "minimum_value_warning": "raft_base_line_width", "maximum_value_warning": "100", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, From da63932a9596ef771bad9568fc7e91e583d8170b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 15 May 2017 11:36:02 +0200 Subject: [PATCH 04/10] Fixes unit fallthrough unit test CURA-3738 --- tests/Settings/TestExtruderStack.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Settings/TestExtruderStack.py b/tests/Settings/TestExtruderStack.py index 4e55411d9d..4cafde5127 100644 --- a/tests/Settings/TestExtruderStack.py +++ b/tests/Settings/TestExtruderStack.py @@ -250,7 +250,8 @@ def test_getPropertyFallThrough(extruder_stack): container_indices = cura.Settings.CuraContainerStack._ContainerIndexes #Cache. for type_id, type_name in container_indices.IndexTypeMap.items(): container = unittest.mock.MagicMock() - container.getProperty = lambda key, property, type_id = type_id: type_id if (key == "layer_height" and property == "value") else None #Returns the container type ID as layer height, in order to identify it. + # Return type_id when asking for value and -1 when asking for limit_to_extruder + container.getProperty = lambda key, property, type_id = type_id: type_id if (key == "layer_height" and property == "value") else (None if property != "limit_to_extruder" else "-1") #Returns the container type ID as layer height, in order to identify it. container.hasProperty = lambda key, property: key == "layer_height" container.getMetaDataEntry = unittest.mock.MagicMock(return_value = type_name) mock_layer_heights[type_id] = container From 06dc1d070e4f8908ee6ea0ce108725dd9801227d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 15 May 2017 11:46:22 +0200 Subject: [PATCH 05/10] Fixed two remaining failing unit tests CURA-3738 --- tests/Settings/TestGlobalStack.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Settings/TestGlobalStack.py b/tests/Settings/TestGlobalStack.py index 1eb3c43746..5b28e401d8 100755 --- a/tests/Settings/TestGlobalStack.py +++ b/tests/Settings/TestGlobalStack.py @@ -350,7 +350,7 @@ def test_getPropertyResolveInInstance(global_stack): instance_containers = {} for container_type in container_indices.IndexTypeMap: instance_containers[container_type] = unittest.mock.MagicMock() #Sets the resolve and value for bed temperature. - instance_containers[container_type].getProperty = lambda key, property: (7.5 if property == "resolve" else (InstanceState.User if property == "state" else 5)) if (key == "material_bed_temperature") else None #7.5 resolve, 5 value. + instance_containers[container_type].getProperty = lambda key, property: (7.5 if property == "resolve" else (InstanceState.User if property == "state" else (5 if property != "limit_to_extruder" else "-1"))) if (key == "material_bed_temperature") else None #7.5 resolve, 5 value. instance_containers[container_type].getMetaDataEntry = unittest.mock.MagicMock(return_value = container_indices.IndexTypeMap[container_type]) #Make queries for the type return the desired type. instance_containers[container_indices.Definition].getProperty = lambda key, property: 10 if (key == "material_bed_temperature" and property == "value") else None #Definition only has value. with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): #To guard against the type checking. @@ -374,7 +374,7 @@ def test_getPropertyResolveInInstance(global_stack): # definitions. def test_getPropertyInstancesBeforeResolve(global_stack): value = unittest.mock.MagicMock() #Sets just the value. - value.getProperty = lambda key, property: (10 if property == "value" else InstanceState.User) if key == "material_bed_temperature" else None + value.getProperty = lambda key, property: (10 if property == "value" else (InstanceState.User if property != "limit_to_extruder" else "-1")) if key == "material_bed_temperature" else None value.getMetaDataEntry = unittest.mock.MagicMock(return_value = "quality") resolve = unittest.mock.MagicMock() #Sets just the resolve. resolve.getProperty = lambda key, property: 7.5 if (key == "material_bed_temperature" and property == "resolve") else None From 2cc56c5edf1f92ef24a3b23cc216c40c86a46afb Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 15 May 2017 11:55:32 +0200 Subject: [PATCH 06/10] Fixed type hinting for Extruder stack --- cura/Settings/ExtruderStack.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 5fca888e4d..f1bb5aec5f 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -1,7 +1,7 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from typing import Any +from typing import Any, TYPE_CHECKING, Optional from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot @@ -17,6 +17,9 @@ from . import Exceptions from .CuraContainerStack import CuraContainerStack from .ExtruderManager import ExtruderManager +if TYPE_CHECKING: + from cura.Settings.GlobalStack import GlobalStack + ## Represents an Extruder and its related containers. # # @@ -38,6 +41,10 @@ class ExtruderStack(CuraContainerStack): # For backward compatibility: Register the extruder with the Extruder Manager ExtruderManager.getInstance().registerExtruder(self, stack.id) + @override(ContainerStack) + def getNextStack(self) -> Optional["GlobalStack"]: + return super().getNextStack() + @classmethod def getLoadingPriority(cls) -> int: return 3 From ba8842f48999faf6cd6a1350bf1ad47e9433b889 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 15 May 2017 11:56:19 +0200 Subject: [PATCH 07/10] Removed unused imports --- cura/Settings/ExtruderStack.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index f1bb5aec5f..9187ecb35d 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -3,14 +3,10 @@ from typing import Any, TYPE_CHECKING, Optional -from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot - from UM.Decorators import override from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase -from UM.Settings.ContainerStack import ContainerStack, InvalidContainerStackError +from UM.Settings.ContainerStack import ContainerStack from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.InstanceContainer import InstanceContainer -from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.Interfaces import ContainerInterface from . import Exceptions From 02f04188897ddb713321b6f7fcaee1fd516199f8 Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Tue, 16 May 2017 13:42:28 +0200 Subject: [PATCH 08/10] Prevent infinite recursion relating to limit_to_extruder With limit_to_extruder, we always try to get the value of a setting from an extruder. However, if the setting is not settable_per_extruder we bypass the extruder and go directly to the global stack. This would cause an infinite recursion. Contributes to CURA-3738 --- cura/Settings/GlobalStack.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index 2f5cb48743..7d13f22180 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -82,9 +82,12 @@ class GlobalStack(CuraContainerStack): # Handle the "limit_to_extruder" property. limit_to_extruder = super().getProperty(key, "limit_to_extruder") if limit_to_extruder is not None and limit_to_extruder != "-1": - result = self._extruders[int(limit_to_extruder)].getProperty(key, property_name) - if result is not None: - return result + if super().getProperty(key, "settable_per_extruder"): + result = self._extruders[int(limit_to_extruder)].getProperty(key, property_name) + if result is not None: + return result + else: + Logger.log("e", "Setting {setting} has limit_to_extruder but is not settable per extruder!", setting = key) return super().getProperty(key, property_name) From a7bf205dbca820206c8ba47db63f1fa701240acd Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Wed, 17 May 2017 10:58:28 +0200 Subject: [PATCH 09/10] Turn GlobalStack's extruders property into a dict We do not load the extruders in a fixed order, thus we cannot assume that addExtruder is called in the right order. This means that index 0 of the extruders is not necessarily the extruder with position 0. So instead, use the extruder position as a dict key. Contributes to CURA-3738 --- cura/Settings/ExtruderStack.py | 2 +- cura/Settings/GlobalStack.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 9187ecb35d..70d2b0f6e4 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -64,7 +64,7 @@ class ExtruderStack(CuraContainerStack): limit_to_extruder = super().getProperty(key, "limit_to_extruder") if (limit_to_extruder is not None and limit_to_extruder != "-1") and self.getMetaDataEntry("position") != str(limit_to_extruder): - result = self.getNextStack().extruders[int(limit_to_extruder)].getProperty(key, property_name) + result = self.getNextStack().extruders[str(limit_to_extruder)].getProperty(key, property_name) if result is not None: return result diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index 7d13f22180..33dc9ab2b5 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -1,7 +1,7 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from typing import Any +from typing import Any, Dict from PyQt5.QtCore import pyqtProperty @@ -24,7 +24,7 @@ class GlobalStack(CuraContainerStack): self.addMetaDataEntry("type", "machine") # For backward compatibility - self._extruders = [] + self._extruders = {} # This property is used to track which settings we are calculating the "resolve" for # and if so, to bypass the resolve to prevent an infinite recursion that would occur @@ -34,8 +34,8 @@ class GlobalStack(CuraContainerStack): ## Get the list of extruders of this stack. # # \return The extruders registered with this stack. - @pyqtProperty("QVariantList") - def extruders(self) -> list: + @pyqtProperty("QVariantMap") + def extruders(self) -> Dict[str, "ExtruderStack"]: return self._extruders @classmethod @@ -53,7 +53,7 @@ class GlobalStack(CuraContainerStack): if extruder_count and len(self._extruders) + 1 > extruder_count: Logger.log("w", "Adding extruder {meta} to {id} but its extruder count is {count}".format(id = self.id, count = extruder_count, meta = str(extruder.getMetaData()))) - self._extruders.append(extruder) + self._extruders[extruder.getMetaDataEntry("position", "0")] = extruder ## Overridden from ContainerStack # @@ -83,7 +83,7 @@ class GlobalStack(CuraContainerStack): limit_to_extruder = super().getProperty(key, "limit_to_extruder") if limit_to_extruder is not None and limit_to_extruder != "-1": if super().getProperty(key, "settable_per_extruder"): - result = self._extruders[int(limit_to_extruder)].getProperty(key, property_name) + result = self._extruders[str(limit_to_extruder)].getProperty(key, property_name) if result is not None: return result else: From 61faaf47763595ad20d565d3b8a5538bdf99bdf0 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 17 May 2017 11:02:16 +0200 Subject: [PATCH 10/10] Removed unneeded calls to extruder value CURA-3738 --- resources/definitions/fdmprinter.def.json | 54 +++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6c50a63b13..be283f134f 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1953,7 +1953,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", + "enabled": "support_interface_enable and support_enable", "limit_to_extruder": "support_interface_extruder_nr", "value": "speed_support / 1.5", "settable_per_mesh": false, @@ -1970,7 +1970,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", + "enabled": "support_roof_enable and support_enable", "limit_to_extruder": "support_roof_extruder_nr", "value": "speed_support_interface", "settable_per_mesh": false, @@ -1986,7 +1986,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", + "enabled": "support_bottom_enable and support_enable", "limit_to_extruder": "support_bottom_extruder_nr", "value": "speed_support_interface", "settable_per_mesh": false, @@ -2275,7 +2275,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled') and extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", + "enabled": "resolveOrValue('acceleration_enabled') and support_interface_enable and support_enable", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -2292,7 +2292,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled') and extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", + "enabled": "resolveOrValue('acceleration_enabled') and support_roof_enable and support_enable", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2308,7 +2308,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled') and extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", + "enabled": "resolveOrValue('acceleration_enabled') and support_bottom_enable and support_enable", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2540,7 +2540,7 @@ "value": "jerk_support", "minimum_value": "0.1", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and support_enable", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -2556,7 +2556,7 @@ "value": "jerk_support_interface", "minimum_value": "0.1", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and support_enable", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2571,7 +2571,7 @@ "value": "jerk_support_interface", "minimum_value": "0.1", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and support_enable", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3330,9 +3330,9 @@ "minimum_value": "0", "minimum_value_warning": "0.2 + layer_height", "maximum_value_warning": "10", - "value": "extruderValue(support_roof_extruder_nr, 'support_interface_height')", + "value": "support_interface_height", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", + "enabled": "support_roof_enable and support_enable", "settable_per_mesh": true }, "support_bottom_height": @@ -3342,12 +3342,12 @@ "unit": "mm", "type": "float", "default_value": 1, - "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_height')", + "value": "support_interface_height", "minimum_value": "0", - "minimum_value_warning": "min(0.2 + layer_height, extruderValue(support_bottom_extruder_nr, 'support_bottom_stair_step_height'))", + "minimum_value_warning": "min(0.2 + layer_height, support_bottom_stair_step_height)", "maximum_value_warning": "10", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", + "enabled": "support_bottom_enable and support_enable", "settable_per_mesh": true } } @@ -3785,7 +3785,7 @@ "value": "resolveOrValue('layer_height')", "minimum_value": "0.001", "minimum_value_warning": "0.04", - "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'machine_nozzle_size')", + "maximum_value_warning": "0.75 * machine_nozzle_size", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3800,8 +3800,8 @@ "default_value": 0.4, "value": "line_width", "minimum_value": "0.001", - "minimum_value_warning": "extruderValue(adhesion_extruder_nr, 'machine_nozzle_size') * 0.1", - "maximum_value_warning": "extruderValue(adhesion_extruder_nr, 'machine_nozzle_size') * 2", + "minimum_value_warning": "machine_nozzle_size * 0.1", + "maximum_value_warning": "machine_nozzle_size * 2", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3815,8 +3815,8 @@ "type": "float", "default_value": 0.4, "minimum_value": "0", - "minimum_value_warning": "extruderValue(adhesion_extruder_nr, 'raft_surface_line_width')", - "maximum_value_warning": "extruderValue(adhesion_extruder_nr, 'raft_surface_line_width') * 3", + "minimum_value_warning": "raft_surface_line_width", + "maximum_value_warning": "raft_surface_line_width * 3", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "value": "raft_surface_line_width", "settable_per_mesh": false, @@ -3833,7 +3833,7 @@ "value": "resolveOrValue('layer_height') * 1.5", "minimum_value": "0.001", "minimum_value_warning": "0.04", - "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'machine_nozzle_size')", + "maximum_value_warning": "0.75 * machine_nozzle_size", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3848,8 +3848,8 @@ "default_value": 0.7, "value": "line_width * 2", "minimum_value": "0.001", - "minimum_value_warning": "extruderValue(adhesion_extruder_nr, 'machine_nozzle_size') * 0.5", - "maximum_value_warning": "extruderValue(adhesion_extruder_nr, 'machine_nozzle_size') * 3", + "minimum_value_warning": "machine_nozzle_size * 0.5", + "maximum_value_warning": "machine_nozzle_size * 3", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3864,7 +3864,7 @@ "default_value": 0.9, "value": "raft_interface_line_width + 0.2", "minimum_value": "0", - "minimum_value_warning": "extruderValue(adhesion_extruder_nr, 'raft_interface_line_width')", + "minimum_value_warning": "raft_interface_line_width", "maximum_value_warning": "15.0", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, @@ -3881,7 +3881,7 @@ "value": "resolveOrValue('layer_height_0') * 1.2", "minimum_value": "0.001", "minimum_value_warning": "0.04", - "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'raft_base_line_width')", + "maximum_value_warning": "0.75 * raft_base_line_width", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3895,9 +3895,9 @@ "type": "float", "default_value": 0.8, "minimum_value": "0.001", - "value": "extruderValue(adhesion_extruder_nr, 'machine_nozzle_size') * 2", - "minimum_value_warning": "extruderValue(adhesion_extruder_nr, 'machine_nozzle_size') * 0.5", - "maximum_value_warning": "extruderValue(adhesion_extruder_nr, 'machine_nozzle_size') * 3", + "value": "machine_nozzle_size * 2", + "minimum_value_warning": "machine_nozzle_size * 0.5", + "maximum_value_warning": "machine_nozzle_size * 3", "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true,