Merge branch 'master' of github.com:Ultimaker/Cura

This commit is contained in:
Jack Ha 2016-08-29 14:40:45 +02:00
commit b2068ce99b
2 changed files with 98 additions and 53 deletions

View File

@ -8,6 +8,8 @@ from UM.Application import Application
from UM.Preferences import Preferences from UM.Preferences import Preferences
from UM.Logger import Logger from UM.Logger import Logger
from UM.Settings.SettingRelation import RelationType
import UM.Settings import UM.Settings
from cura.PrinterOutputDevice import PrinterOutputDevice from cura.PrinterOutputDevice import PrinterOutputDevice
@ -240,15 +242,19 @@ class MachineManager(QObject):
def _onPropertyChanged(self, key, property_name): def _onPropertyChanged(self, key, property_name):
if property_name == "value": if property_name == "value":
# If a setting is not settable per extruder but at the same time settable per mesh, the engine needs a value in the extruder stack # If a setting is not settable per extruder, but "has enabled relations" that are settable per extruder
# This is mainly the case for the "support_enable" setting. # we need to copy the value to global, so that the front-end displays the right settings.
if self._active_container_stack.getProperty(key, "settable_per_mesh") and not self._active_container_stack.getProperty(key, "settable_per_extruder"): if not self._active_container_stack.getProperty(key, "settable_per_extruder"):
if self._active_container_stack and self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: relations = self._global_container_stack.getBottom()._getDefinition(key).relations
new_value = self._global_container_stack.getProperty(key, "value") for relation in filter(lambda r: r.role == "enabled" and r.type == RelationType.RequiredByTarget, relations):
stacks = [stack for stack in ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())] # Target setting is settable per extruder
for extruder_stack in stacks: if self._active_container_stack.getProperty(relation.target.key, "settable_per_extruder"):
if extruder_stack.getProperty(key, "value") != new_value: new_value = self._global_container_stack.getProperty(key, "value")
extruder_stack.getTop().setProperty(key, "value", new_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
if property_name == "validationState": if property_name == "validationState":
if self._active_stack_valid: if self._active_stack_valid:
@ -576,10 +582,15 @@ class MachineManager(QObject):
criteria = { "quality_type": quality_type, "extruder": extruder_id } criteria = { "quality_type": quality_type, "extruder": extruder_id }
if self._global_container_stack.getMetaDataEntry("has_machine_quality"): material = stack.findContainer(type = "material")
material = stack.findContainer(type = "material") if material and material is not self._empty_material_container:
criteria["material"] = material.getId() criteria["material"] = material.getId()
if self._global_container_stack.getMetaDataEntry("has_machine_quality"):
criteria["definition"] = self._global_container_stack.getBottom().getId()
else:
criteria["definition"] = "fdmprinter"
stack_quality = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**criteria) stack_quality = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**criteria)
if not stack_quality: if not stack_quality:
criteria.pop("extruder") criteria.pop("extruder")
@ -822,6 +833,9 @@ class MachineManager(QObject):
if definition.getMetaDataEntry("has_machine_quality"): if definition.getMetaDataEntry("has_machine_quality"):
if material_container: if material_container:
material_search_criteria["definition"] = material_container.getDefinition().id material_search_criteria["definition"] = material_container.getDefinition().id
if definition.getMetaDataEntry("has_variants"):
material_search_criteria["variant"] = material_container.getMetaDataEntry("variant")
else: else:
material_search_criteria["definition"] = definition.id material_search_criteria["definition"] = definition.id

View File

@ -628,7 +628,8 @@
"value": "line_width", "value": "line_width",
"enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"", "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"support_line_width": "support_line_width":
{ {
@ -1575,7 +1576,8 @@
"value": "speed_layer_0", "value": "speed_layer_0",
"enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"", "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"max_feedrate_z_override": "max_feedrate_z_override":
{ {
@ -1840,7 +1842,8 @@
"minimum_value_warning": "100", "minimum_value_warning": "100",
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "acceleration_enabled", "enabled": "acceleration_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
@ -2059,7 +2062,8 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"value": "jerk_layer_0", "value": "jerk_layer_0",
"enabled": "jerk_enabled", "enabled": "jerk_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
} }
} }
}, },
@ -2701,7 +2705,8 @@
"maximum_value_warning": "10", "maximum_value_warning": "10",
"enabled": "adhesion_type == \"skirt\"", "enabled": "adhesion_type == \"skirt\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"skirt_gap": "skirt_gap":
{ {
@ -2714,7 +2719,8 @@
"maximum_value_warning": "100", "maximum_value_warning": "100",
"enabled": "adhesion_type == \"skirt\"", "enabled": "adhesion_type == \"skirt\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"skirt_brim_minimal_length": "skirt_brim_minimal_length":
{ {
@ -2728,7 +2734,8 @@
"maximum_value_warning": "2500", "maximum_value_warning": "2500",
"enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"", "enabled": "adhesion_type == \"skirt\" or adhesion_type == \"brim\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"brim_width": "brim_width":
{ {
@ -2742,6 +2749,7 @@
"enabled": "adhesion_type == \"brim\"", "enabled": "adhesion_type == \"brim\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr",
"children": "children":
{ {
"brim_line_count": "brim_line_count":
@ -2755,7 +2763,8 @@
"value": "math.ceil(brim_width / skirt_brim_line_width)", "value": "math.ceil(brim_width / skirt_brim_line_width)",
"enabled": "adhesion_type == \"brim\"", "enabled": "adhesion_type == \"brim\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
} }
} }
}, },
@ -2767,7 +2776,8 @@
"default_value": true, "default_value": true,
"enabled": "adhesion_type == \"brim\"", "enabled": "adhesion_type == \"brim\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_margin": "raft_margin":
{ {
@ -2778,7 +2788,8 @@
"default_value": 15, "default_value": 15,
"minimum_value_warning": "0", "minimum_value_warning": "0",
"maximum_value_warning": "10", "maximum_value_warning": "10",
"enabled": "adhesion_type == \"raft\"" "enabled": "adhesion_type == \"raft\"",
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_airgap": "raft_airgap":
{ {
@ -2791,7 +2802,8 @@
"maximum_value_warning": "1.0", "maximum_value_warning": "1.0",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"layer_0_z_overlap": { "layer_0_z_overlap": {
"label": "Initial Layer Z Overlap", "label": "Initial Layer Z Overlap",
@ -2804,7 +2816,8 @@
"maximum_value_warning": "layer_height", "maximum_value_warning": "layer_height",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_surface_layers": "raft_surface_layers":
{ {
@ -2816,7 +2829,8 @@
"maximum_value_warning": "20", "maximum_value_warning": "20",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_surface_thickness": "raft_surface_thickness":
{ {
@ -2830,7 +2844,8 @@
"maximum_value_warning": "2.0", "maximum_value_warning": "2.0",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_surface_line_width": "raft_surface_line_width":
{ {
@ -2844,7 +2859,8 @@
"maximum_value_warning": "machine_nozzle_size * 2", "maximum_value_warning": "machine_nozzle_size * 2",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_surface_line_spacing": "raft_surface_line_spacing":
{ {
@ -2858,7 +2874,8 @@
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"value": "raft_surface_line_width", "value": "raft_surface_line_width",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_interface_thickness": "raft_interface_thickness":
{ {
@ -2872,7 +2889,8 @@
"maximum_value_warning": "5.0", "maximum_value_warning": "5.0",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_interface_line_width": "raft_interface_line_width":
{ {
@ -2886,7 +2904,8 @@
"maximum_value_warning": "machine_nozzle_size * 2", "maximum_value_warning": "machine_nozzle_size * 2",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_interface_line_spacing": "raft_interface_line_spacing":
{ {
@ -2900,7 +2919,8 @@
"maximum_value_warning": "15.0", "maximum_value_warning": "15.0",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_base_thickness": "raft_base_thickness":
{ {
@ -2914,7 +2934,8 @@
"maximum_value_warning": "5.0", "maximum_value_warning": "5.0",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_base_line_width": "raft_base_line_width":
{ {
@ -2928,7 +2949,8 @@
"maximum_value_warning": "machine_nozzle_size * 3", "maximum_value_warning": "machine_nozzle_size * 3",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_base_line_spacing": "raft_base_line_spacing":
{ {
@ -2942,7 +2964,8 @@
"maximum_value_warning": "100", "maximum_value_warning": "100",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_speed": "raft_speed":
{ {
@ -2958,6 +2981,7 @@
"value": "speed_print / 60 * 30", "value": "speed_print / 60 * 30",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr",
"children": "children":
{ {
"raft_surface_speed": "raft_surface_speed":
@ -2973,7 +2997,8 @@
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"value": "raft_speed", "value": "raft_speed",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_interface_speed": "raft_interface_speed":
{ {
@ -2988,7 +3013,8 @@
"maximum_value_warning": "150", "maximum_value_warning": "150",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_base_speed": "raft_base_speed":
{ {
@ -3003,13 +3029,11 @@
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"value": "0.75 * raft_speed", "value": "0.75 * raft_speed",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
} }
} }
}, },
"raft_acceleration": { "raft_acceleration": {
"label": "Raft Print Acceleration", "label": "Raft Print Acceleration",
"description": "The acceleration with which the raft is printed.", "description": "The acceleration with which the raft is printed.",
@ -3022,6 +3046,7 @@
"value": "acceleration_print", "value": "acceleration_print",
"enabled": "adhesion_type == \"raft\" and acceleration_enabled", "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
"settable_per_mesh": false, "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr",
"children": { "children": {
"raft_surface_acceleration": { "raft_surface_acceleration": {
"label": "Raft Top Print Acceleration", "label": "Raft Top Print Acceleration",
@ -3034,7 +3059,8 @@
"minimum_value_warning": "100", "minimum_value_warning": "100",
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "adhesion_type == \"raft\" and acceleration_enabled", "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_interface_acceleration": { "raft_interface_acceleration": {
"label": "Raft Middle Print Acceleration", "label": "Raft Middle Print Acceleration",
@ -3047,7 +3073,8 @@
"minimum_value_warning": "100", "minimum_value_warning": "100",
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "adhesion_type == \"raft\" and acceleration_enabled", "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_base_acceleration": { "raft_base_acceleration": {
"label": "Raft Base Print Acceleration", "label": "Raft Base Print Acceleration",
@ -3060,13 +3087,11 @@
"minimum_value_warning": "100", "minimum_value_warning": "100",
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "adhesion_type == \"raft\" and acceleration_enabled", "enabled": "adhesion_type == \"raft\" and acceleration_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
} }
} }
}, },
"raft_jerk": { "raft_jerk": {
"label": "Raft Print Jerk", "label": "Raft Print Jerk",
"description": "The jerk with which the raft is printed.", "description": "The jerk with which the raft is printed.",
@ -3079,6 +3104,7 @@
"value": "jerk_print", "value": "jerk_print",
"enabled": "adhesion_type == \"raft\" and jerk_enabled", "enabled": "adhesion_type == \"raft\" and jerk_enabled",
"settable_per_mesh": false, "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr",
"children": { "children": {
"raft_surface_jerk": { "raft_surface_jerk": {
"label": "Raft Top Print Jerk", "label": "Raft Top Print Jerk",
@ -3091,7 +3117,8 @@
"minimum_value_warning": "5", "minimum_value_warning": "5",
"maximum_value_warning": "100", "maximum_value_warning": "100",
"enabled": "adhesion_type == \"raft\" and jerk_enabled", "enabled": "adhesion_type == \"raft\" and jerk_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_interface_jerk": { "raft_interface_jerk": {
"label": "Raft Middle Print Jerk", "label": "Raft Middle Print Jerk",
@ -3104,7 +3131,8 @@
"minimum_value_warning": "5", "minimum_value_warning": "5",
"maximum_value_warning": "50", "maximum_value_warning": "50",
"enabled": "adhesion_type == \"raft\" and jerk_enabled", "enabled": "adhesion_type == \"raft\" and jerk_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_base_jerk": { "raft_base_jerk": {
"label": "Raft Base Print Jerk", "label": "Raft Base Print Jerk",
@ -3117,12 +3145,11 @@
"minimum_value_warning": "5", "minimum_value_warning": "5",
"maximum_value_warning": "50", "maximum_value_warning": "50",
"enabled": "adhesion_type == \"raft\" and jerk_enabled", "enabled": "adhesion_type == \"raft\" and jerk_enabled",
"settable_per_mesh": false "settable_per_mesh": false,
"global_inherits_stack": "adhesion_extruder_nr"
} }
} }
}, },
"raft_fan_speed": { "raft_fan_speed": {
"label": "Raft Fan Speed", "label": "Raft Fan Speed",
"description": "The fan speed for the raft.", "description": "The fan speed for the raft.",
@ -3134,6 +3161,7 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"global_inherits_stack": "adhesion_extruder_nr",
"children": "children":
{ {
"raft_surface_fan_speed": "raft_surface_fan_speed":
@ -3148,7 +3176,8 @@
"value": "raft_fan_speed", "value": "raft_fan_speed",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_interface_fan_speed": "raft_interface_fan_speed":
{ {
@ -3162,7 +3191,8 @@
"value": "raft_fan_speed", "value": "raft_fan_speed",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
}, },
"raft_base_fan_speed": "raft_base_fan_speed":
{ {
@ -3176,7 +3206,8 @@
"value": "raft_fan_speed", "value": "raft_fan_speed",
"enabled": "adhesion_type == \"raft\"", "enabled": "adhesion_type == \"raft\"",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true,
"global_inherits_stack": "adhesion_extruder_nr"
} }
} }
} }