mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-30 01:55:55 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
504eacce66
@ -140,7 +140,7 @@ class MachineNode(ContainerNode):
|
||||
elif groups_by_name[name].intent_category == "default": # Intent category should be stored as "default" if everything is default or as the intent if any of the extruder have an actual intent.
|
||||
groups_by_name[name].intent_category = quality_changes.get("intent_category", "default")
|
||||
|
||||
if "position" in quality_changes: # An extruder profile.
|
||||
if quality_changes.get("position") is not None: # An extruder profile.
|
||||
groups_by_name[name].metadata_per_extruder[int(quality_changes["position"])] = quality_changes
|
||||
else: # Global profile.
|
||||
groups_by_name[name].metadata_for_global = quality_changes
|
||||
|
@ -6,6 +6,7 @@ from typing import Dict, Set
|
||||
from PyQt5.QtCore import Qt, QTimer, pyqtSignal, pyqtProperty
|
||||
|
||||
from UM.Qt.ListModel import ListModel
|
||||
from UM.Logger import Logger
|
||||
|
||||
import cura.CuraApplication # Imported like this to prevent a circular reference.
|
||||
from cura.Machines.ContainerTree import ContainerTree
|
||||
@ -153,7 +154,12 @@ class BaseMaterialsModel(ListModel):
|
||||
if not extruder_stack:
|
||||
return
|
||||
nozzle_name = extruder_stack.variant.getName()
|
||||
materials = ContainerTree.getInstance().machines[global_stack.definition.getId()].variants[nozzle_name].materials
|
||||
machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()]
|
||||
if nozzle_name not in machine_node.variants:
|
||||
Logger.log("w", "Unable to find variant %s in container tree", nozzle_name)
|
||||
self._available_materials = {}
|
||||
return
|
||||
materials = machine_node.variants[nozzle_name].materials
|
||||
approximate_material_diameter = extruder_stack.getApproximateMaterialDiameter()
|
||||
self._available_materials = {key: material for key, material in materials.items() if float(material.getMetaDataEntry("approximate_diameter", -1)) == approximate_material_diameter}
|
||||
|
||||
|
@ -139,9 +139,33 @@ def test_preferredMaterialExactMatch(empty_variant_node):
|
||||
"some_different_material": MagicMock(getMetaDataEntry = lambda x: 3),
|
||||
"preferred_material": MagicMock(getMetaDataEntry = lambda x: 3) # Exact match.
|
||||
}
|
||||
empty_variant_node.machine.preferred_material = "preferred_material"
|
||||
|
||||
assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material"], "It should match exactly on this one since it's the preferred material."
|
||||
|
||||
## Tests the preferred material when a submaterial is available in the
|
||||
# materials list for this node.
|
||||
def test_preferredMaterialSubmaterial(empty_variant_node):
|
||||
empty_variant_node.materials = {
|
||||
"some_different_material": MagicMock(getMetaDataEntry = lambda x: 3),
|
||||
"preferred_material_base_file_aa04": MagicMock(getMetaDataEntry = lambda x: 3) # This is a submaterial of the preferred material.
|
||||
}
|
||||
empty_variant_node.machine.preferred_material = "preferred_material_base_file_aa04"
|
||||
|
||||
assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material_base_file_aa04"], "It should match on the submaterial just as well."
|
||||
|
||||
## Tests the preferred material matching on the approximate diameter of the
|
||||
# filament.
|
||||
def test_preferredMaterialDiameter(empty_variant_node):
|
||||
empty_variant_node.materials = {
|
||||
"some_different_material": MagicMock(getMetaDataEntry = lambda x: 3),
|
||||
"preferred_material_wrong_diameter": MagicMock(getMetaDataEntry = lambda x: 2), # Approximate diameter is 2 instead of 3.
|
||||
"preferred_material_correct_diameter": MagicMock(getMetaDataEntry = lambda x: 3) # Correct approximate diameter.
|
||||
}
|
||||
empty_variant_node.machine.preferred_material = "preferred_material_correct_diameter"
|
||||
|
||||
assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material_correct_diameter"], "It should match only on the material with correct diameter."
|
||||
|
||||
## Tests the preferred material matching on a different material if the
|
||||
# diameter is wrong.
|
||||
def test_preferredMaterialDiameterNoMatch(empty_variant_node):
|
||||
|
Loading…
x
Reference in New Issue
Block a user