mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-16 11:17:49 -06:00
Merge branch 'global_quality_profiles' of github.com:Ultimaker/Cura into 2.3
This commit is contained in:
commit
53f360ca1c
6 changed files with 90 additions and 13 deletions
|
@ -82,8 +82,9 @@ class QualityManager:
|
||||||
# \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then
|
# \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then
|
||||||
# the current set of selected materials is used.
|
# the current set of selected materials is used.
|
||||||
# \return the matching quality container \type{ContainerInstance}
|
# \return the matching quality container \type{ContainerInstance}
|
||||||
def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None):
|
def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None, **kwargs):
|
||||||
criteria = {"type": "quality"}
|
criteria = kwargs
|
||||||
|
criteria["type"] = "quality"
|
||||||
if quality_type:
|
if quality_type:
|
||||||
criteria["quality_type"] = quality_type
|
criteria["quality_type"] = quality_type
|
||||||
result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria)
|
result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria)
|
||||||
|
@ -218,7 +219,7 @@ class QualityManager:
|
||||||
result = []
|
result = []
|
||||||
for container in containers:
|
for container in containers:
|
||||||
# If the machine specifies we should filter by material, exclude containers that do not match any active material.
|
# If the machine specifies we should filter by material, exclude containers that do not match any active material.
|
||||||
if filter_by_material and container.getMetaDataEntry("material") not in material_ids:
|
if filter_by_material and container.getMetaDataEntry("material") not in material_ids and not "global_quality" in kwargs:
|
||||||
continue
|
continue
|
||||||
result.append(container)
|
result.append(container)
|
||||||
return result
|
return result
|
||||||
|
|
|
@ -225,11 +225,26 @@ class MachineManager(QObject):
|
||||||
self._global_container_stack.nameChanged.connect(self._onMachineNameChanged)
|
self._global_container_stack.nameChanged.connect(self._onMachineNameChanged)
|
||||||
self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
|
self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
|
||||||
self._global_container_stack.propertyChanged.connect(self._onPropertyChanged)
|
self._global_container_stack.propertyChanged.connect(self._onPropertyChanged)
|
||||||
material = self._global_container_stack.findContainer({"type": "material"})
|
|
||||||
material.nameChanged.connect(self._onMaterialNameChanged)
|
|
||||||
|
|
||||||
quality = self._global_container_stack.findContainer({"type": "quality"})
|
if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1:
|
||||||
quality.nameChanged.connect(self._onQualityNameChanged)
|
# For multi-extrusion machines, we do not want variant or material profiles in the stack,
|
||||||
|
# because these are extruder specific and may cause wrong values to be used for extruders
|
||||||
|
# that did not specify a value in the extruder.
|
||||||
|
global_variant = self._global_container_stack.findContainer(type = "variant")
|
||||||
|
if global_variant != self._empty_variant_container:
|
||||||
|
self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_variant), self._empty_variant_container)
|
||||||
|
|
||||||
|
global_material = self._global_container_stack.findContainer(type = "material")
|
||||||
|
if global_material != self._empty_material_container:
|
||||||
|
self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_material), self._empty_material_container)
|
||||||
|
|
||||||
|
else:
|
||||||
|
material = self._global_container_stack.findContainer({"type": "material"})
|
||||||
|
material.nameChanged.connect(self._onMaterialNameChanged)
|
||||||
|
|
||||||
|
quality = self._global_container_stack.findContainer({"type": "quality"})
|
||||||
|
quality.nameChanged.connect(self._onQualityNameChanged)
|
||||||
|
|
||||||
|
|
||||||
def _onActiveExtruderStackChanged(self):
|
def _onActiveExtruderStackChanged(self):
|
||||||
self.blurSettings.emit() # Ensure no-one has focus.
|
self.blurSettings.emit() # Ensure no-one has focus.
|
||||||
|
@ -769,8 +784,13 @@ class MachineManager(QObject):
|
||||||
|
|
||||||
if extruder_stacks:
|
if extruder_stacks:
|
||||||
# Add an extra entry for the global stack.
|
# Add an extra entry for the global stack.
|
||||||
result.append({"stack": global_container_stack, "quality": result[0]["quality"],
|
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = "True")
|
||||||
"quality_changes": empty_quality_changes})
|
|
||||||
|
if not global_quality:
|
||||||
|
global_quality = self._empty_quality_container
|
||||||
|
|
||||||
|
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": empty_quality_changes})
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
## Determine the quality and quality changes settings for the current machine for a quality changes name.
|
## Determine the quality and quality changes settings for the current machine for a quality changes name.
|
||||||
|
@ -793,7 +813,10 @@ class MachineManager(QObject):
|
||||||
# For the global stack, find a quality which matches the quality_type in
|
# For the global stack, find a quality which matches the quality_type in
|
||||||
# the quality changes profile and also satisfies any material constraints.
|
# the quality changes profile and also satisfies any material constraints.
|
||||||
quality_type = global_quality_changes.getMetaDataEntry("quality_type")
|
quality_type = global_quality_changes.getMetaDataEntry("quality_type")
|
||||||
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material])
|
if global_container_stack.getProperty("machine_extruder_count", "value") > 1:
|
||||||
|
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = True)
|
||||||
|
else:
|
||||||
|
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material])
|
||||||
|
|
||||||
# Find the values for each extruder.
|
# Find the values for each extruder.
|
||||||
extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
|
extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
|
||||||
|
@ -814,9 +837,10 @@ class MachineManager(QObject):
|
||||||
result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes})
|
result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes})
|
||||||
|
|
||||||
if extruder_stacks:
|
if extruder_stacks:
|
||||||
# Duplicate the quality from the 1st extruder into the global stack. If anyone
|
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material], global_quality = "True")
|
||||||
# then looks in the global stack, they should get a reasonable view.
|
if not global_quality:
|
||||||
result.append({"stack": global_container_stack, "quality": result[0]["quality"], "quality_changes": global_quality_changes})
|
global_quality = self._empty_quality_container
|
||||||
|
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes})
|
||||||
else:
|
else:
|
||||||
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes})
|
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes})
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[general]
|
||||||
|
version = 2
|
||||||
|
name = Draft Quality
|
||||||
|
definition = ultimaker3
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
type = quality
|
||||||
|
quality_type = draft
|
||||||
|
global_quality = True
|
||||||
|
weight = -2
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.2
|
|
@ -0,0 +1,13 @@
|
||||||
|
[general]
|
||||||
|
version = 2
|
||||||
|
name = Fast Quality
|
||||||
|
definition = ultimaker3
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
global_quality = True
|
||||||
|
weight = -1
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.15
|
|
@ -0,0 +1,13 @@
|
||||||
|
[general]
|
||||||
|
version = 2
|
||||||
|
name = High Quality
|
||||||
|
definition = ultimaker3
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
type = quality
|
||||||
|
quality_type = high
|
||||||
|
global_quality = True
|
||||||
|
weight = 0
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.06
|
|
@ -0,0 +1,13 @@
|
||||||
|
[general]
|
||||||
|
version = 2
|
||||||
|
name = Normal Quality
|
||||||
|
definition = ultimaker3
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
global_quality = True
|
||||||
|
weight = 0
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.1
|
Loading…
Add table
Add a link
Reference in a new issue