From 03c66e6e6285f3189f980583fd8aba811f7bed3a Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 29 Sep 2016 14:09:19 +0200 Subject: [PATCH] use resolveOrValue for adhesion_type. contributes to CURA-2232 --- cura/Settings/ExtruderManager.py | 8 +- cura/Settings/MachineManager.py | 15 +--- resources/definitions/fdmprinter.def.json | 90 +++++++++++------------ 3 files changed, 48 insertions(+), 65 deletions(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 29604abffd..24b9e01f07 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -143,9 +143,7 @@ class ExtruderManager(QObject): # Make sure the next stack is a stack that contains only the machine definition if not extruder_train.getNextStack(): - shallow_stack = UM.Settings.ContainerStack(machine_id + "_shallow") - shallow_stack.addContainer(machine_definition) - extruder_train.setNextStack(shallow_stack) + extruder_train.setNextStack(UM.Application.getInstance().getGlobalContainerStack()) changed = True if changed: self.extrudersChanged.emit(machine_id) @@ -264,9 +262,7 @@ class ExtruderManager(QObject): # Make sure the next stack is a stack that contains only the machine definition if not container_stack.getNextStack(): - shallow_stack = UM.Settings.ContainerStack(machine_id + "_shallow") - shallow_stack.addContainer(machine_definition) - container_stack.setNextStack(shallow_stack) + container_stack.setNextStack(UM.Application.getInstance().getGlobalContainerStack()) container_registry.addContainer(container_stack) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 4569e51098..f418693f7c 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -245,20 +245,7 @@ class MachineManager(QObject): def _onPropertyChanged(self, key, property_name): if property_name == "value": - # If a setting is not settable per extruder, but "has enabled" or "value" relations that are settable per extruder - # we need to copy the value to global, so that the front-end displays the right settings. - if not self._active_container_stack.getProperty(key, "settable_per_extruder"): - relations = self._global_container_stack.getBottom()._getDefinition(key).relations - for relation in filter(lambda r: (r.role == "enabled" or r.role == "value") and r.type == RelationType.RequiredByTarget, relations): - # Target setting is settable per extruder - if self._active_container_stack.getProperty(relation.target.key, "settable_per_extruder"): - new_value = self._global_container_stack.getProperty(key, "value") - stacks = [stack for stack in ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())] - for extruder_stack in stacks: - if extruder_stack.getProperty(key, "value") != new_value: - extruder_stack.getTop().setProperty(key, "value", new_value) - break - + # Notify UI items, such as the "changed" star in profile pull down menu. self.activeStackValueChanged.emit() if property_name == "validationState": diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ad9211fae3..4360d4a122 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -650,7 +650,7 @@ "default_value": 0.4, "type": "float", "value": "line_width", - "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"", + "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -935,7 +935,7 @@ "type": "float", "default_value": 2, "minimum_value": "0", - "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == \"grid\" else (3 if infill_pattern == \"triangles\" or infill_pattern == \"cubic\" else (4 if infill_pattern == \"tetrahedral\" else 1)))", + "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'cubic' else (4 if infill_pattern == 'tetrahedral' else 1)))", "settable_per_mesh": true } } @@ -1616,7 +1616,7 @@ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "300", "value": "speed_layer_0", - "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"", + "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2141,7 +2141,7 @@ "description": "The nozzle avoids already printed parts when traveling. This option is only available when combing is enabled.", "type": "bool", "default_value": true, - "enabled": "retraction_combing != \"off\"", + "enabled": "retraction_combing != 'off'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2155,7 +2155,7 @@ "value": "machine_nozzle_tip_outer_diameter / 2 * 1.25", "minimum_value": "0", "maximum_value_warning": "machine_nozzle_tip_outer_diameter * 5", - "enabled": "retraction_combing != \"off\" and travel_avoid_other_parts", + "enabled": "retraction_combing != 'off' and travel_avoid_other_parts", "settable_per_mesh": false, "settable_per_extruder": true } @@ -2242,7 +2242,7 @@ "unit": "mm", "type": "float", "default_value": 0.5, - "value": "0 if adhesion_type == \"raft\" else layer_height_0", + "value": "0 if resolveOrValue('adhesion_type') == 'raft' else layer_height_0", "minimum_value": "0", "maximum_value_warning": "10.0", "settable_per_mesh": false, @@ -2396,7 +2396,7 @@ "minimum_value": "0", "default_value": 2.66, "enabled": "support_enable", - "value": "(support_line_width * 100) / support_infill_rate * (2 if support_pattern == \"grid\" else (3 if support_pattern == \"triangles\" else 1))", + "value": "(support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2616,7 +2616,7 @@ "type": "float", "default_value": 0.4, "minimum_value": "0", - "value": "0 if support_interface_density == 0 else (support_interface_line_width * 100) / support_interface_density * (2 if support_interface_pattern == \"grid\" else (3 if support_interface_pattern == \"triangles\" else 1))", + "value": "0 if support_interface_density == 0 else (support_interface_line_width * 100) / support_interface_density * (2 if support_interface_pattern == 'grid' else (3 if support_interface_pattern == 'triangles' else 1))", "limit_to_extruder": "support_interface_extruder_nr", "enabled": "extruderValue(support_interface_extruder_nr, 'support_interface_enable') and support_enable", "settable_per_mesh": false, @@ -2753,7 +2753,7 @@ "default_value": 1, "minimum_value": "0", "maximum_value_warning": "10", - "enabled": "adhesion_type == \"skirt\"", + "enabled": "resolveOrValue('adhesion_type') == 'skirt'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2767,7 +2767,7 @@ "default_value": 3, "minimum_value_warning": "0", "maximum_value_warning": "100", - "enabled": "adhesion_type == \"skirt\"", + "enabled": "resolveOrValue('adhesion_type') == 'skirt'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2782,7 +2782,7 @@ "minimum_value": "0", "minimum_value_warning": "25", "maximum_value_warning": "2500", - "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"", + "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2795,7 +2795,7 @@ "default_value": 8.0, "minimum_value": "0.0", "maximum_value_warning": "100.0", - "enabled": "adhesion_type == \"brim\"", + "enabled": "resolveOrValue('adhesion_type') == 'brim'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr", @@ -2810,7 +2810,7 @@ "minimum_value": "0", "maximum_value_warning": "300", "value": "math.ceil(brim_width / skirt_brim_line_width)", - "enabled": "adhesion_type == \"brim\"", + "enabled": "resolveOrValue('adhesion_type') == 'brim'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2823,7 +2823,7 @@ "description": "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much.", "type": "bool", "default_value": true, - "enabled": "adhesion_type == \"brim\"", + "enabled": "resolveOrValue('adhesion_type') == 'brim'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2837,7 +2837,7 @@ "default_value": 15, "minimum_value_warning": "0", "maximum_value_warning": "10", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "limit_to_extruder": "adhesion_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2851,7 +2851,7 @@ "default_value": 0.3, "minimum_value": "0", "maximum_value_warning": "1.0", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2865,7 +2865,7 @@ "value": "raft_airgap / 2", "minimum_value": "0", "maximum_value_warning": "layer_height", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2878,7 +2878,7 @@ "default_value": 2, "minimum_value": "0", "maximum_value_warning": "20", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2893,7 +2893,7 @@ "value": "layer_height", "minimum_value": "0", "maximum_value_warning": "2.0", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2908,7 +2908,7 @@ "value": "line_width", "minimum_value": "0.0001", "maximum_value_warning": "machine_nozzle_size * 2", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2922,7 +2922,7 @@ "default_value": 0.4, "minimum_value": "0.0001", "maximum_value_warning": "5.0", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "value": "raft_surface_line_width", "settable_per_mesh": false, "settable_per_extruder": true, @@ -2938,7 +2938,7 @@ "value": "layer_height * 1.5", "minimum_value": "0", "maximum_value_warning": "5.0", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2953,7 +2953,7 @@ "value": "line_width * 2", "minimum_value": "0.0001", "maximum_value_warning": "machine_nozzle_size * 2", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2968,7 +2968,7 @@ "value": "raft_interface_line_width + 0.2", "minimum_value": "0", "maximum_value_warning": "15.0", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2983,7 +2983,7 @@ "value": "layer_height_0 * 1.2", "minimum_value": "0", "maximum_value_warning": "5.0", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -2998,7 +2998,7 @@ "minimum_value": "0.0001", "value": "machine_nozzle_size * 2", "maximum_value_warning": "machine_nozzle_size * 3", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -3013,7 +3013,7 @@ "value": "raft_base_line_width * 2", "minimum_value": "0.0001", "maximum_value_warning": "100", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -3028,7 +3028,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "200", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "value": "speed_print / 60 * 30", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3045,7 +3045,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "100", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "value": "raft_speed", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3062,7 +3062,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -3077,7 +3077,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "200", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "value": "0.75 * raft_speed", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3095,7 +3095,7 @@ "minimum_value_warning": "100", "maximum_value_warning": "10000", "value": "acceleration_print", - "enabled": "adhesion_type == \"raft\" and acceleration_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr", "children": { @@ -3109,7 +3109,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "adhesion_type == \"raft\" and acceleration_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, @@ -3123,7 +3123,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "adhesion_type == \"raft\" and acceleration_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, @@ -3137,7 +3137,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "adhesion_type == \"raft\" and acceleration_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and acceleration_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" } @@ -3153,7 +3153,7 @@ "minimum_value_warning": "5", "maximum_value_warning": "50", "value": "jerk_print", - "enabled": "adhesion_type == \"raft\" and jerk_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr", "children": { @@ -3167,7 +3167,7 @@ "minimum_value": "0.1", "minimum_value_warning": "5", "maximum_value_warning": "100", - "enabled": "adhesion_type == \"raft\" and jerk_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, @@ -3181,7 +3181,7 @@ "minimum_value": "0.1", "minimum_value_warning": "5", "maximum_value_warning": "50", - "enabled": "adhesion_type == \"raft\" and jerk_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, @@ -3195,7 +3195,7 @@ "minimum_value": "0.1", "minimum_value_warning": "5", "maximum_value_warning": "50", - "enabled": "adhesion_type == \"raft\" and jerk_enabled", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and jerk_enabled", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" } @@ -3211,7 +3211,7 @@ "default_value": 0, "settable_per_mesh": false, "settable_per_extruder": true, - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "limit_to_extruder": "adhesion_extruder_nr", "children": { @@ -3225,7 +3225,7 @@ "maximum_value": "100", "default_value": 0, "value": "raft_fan_speed", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -3240,7 +3240,7 @@ "maximum_value": "100", "default_value": 0, "value": "raft_fan_speed", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -3255,7 +3255,7 @@ "maximum_value": "100", "default_value": 0, "value": "raft_fan_speed", - "enabled": "adhesion_type == \"raft\"", + "enabled": "resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" @@ -3625,7 +3625,7 @@ "maximum_value_warning": "9999", "default_value": 10, "value": "10", - "enabled": "draft_shield_enabled and draft_shield_height_limitation == \"limited\"", + "enabled": "draft_shield_enabled and draft_shield_height_limitation == 'limited'", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3710,7 +3710,7 @@ "description": "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions.", "type": "bool", "default_value": false, - "enabled": "top_bottom_pattern != \"concentric\"", + "enabled": "top_bottom_pattern != 'concentric'", "settable_per_mesh": true }, "support_conical_enabled":