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.Logger import Logger
from UM.Settings.SettingRelation import RelationType
import UM.Settings
from cura.PrinterOutputDevice import PrinterOutputDevice
@ -240,15 +242,19 @@ class MachineManager(QObject):
def _onPropertyChanged(self, key, property_name):
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
# This is mainly the case for the "support_enable" setting.
if self._active_container_stack.getProperty(key, "settable_per_mesh") and 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:
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)
# If a setting is not settable per extruder, but "has enabled 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" 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
if property_name == "validationState":
if self._active_stack_valid:
@ -576,10 +582,15 @@ class MachineManager(QObject):
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()
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)
if not stack_quality:
criteria.pop("extruder")
@ -822,6 +833,9 @@ class MachineManager(QObject):
if definition.getMetaDataEntry("has_machine_quality"):
if material_container:
material_search_criteria["definition"] = material_container.getDefinition().id
if definition.getMetaDataEntry("has_variants"):
material_search_criteria["variant"] = material_container.getMetaDataEntry("variant")
else:
material_search_criteria["definition"] = definition.id

View File

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