From da589e2f00fa82cb30074be08eae46f2c3a3acb8 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Wed, 7 Jun 2023 16:20:09 +0200 Subject: [PATCH] Fix exclude materials CURA-10599 --- cura/Machines/MachineNode.py | 10 +++++++++- cura/Machines/VariantNode.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/cura/Machines/MachineNode.py b/cura/Machines/MachineNode.py index 88736826fd..578629b6a2 100644 --- a/cura/Machines/MachineNode.py +++ b/cura/Machines/MachineNode.py @@ -14,6 +14,7 @@ from cura.Machines.QualityChangesGroup import QualityChangesGroup # To construc from cura.Machines.QualityGroup import QualityGroup # To construct groups of quality profiles that belong together. from cura.Machines.QualityNode import QualityNode from cura.Machines.VariantNode import VariantNode +from cura.Machines.MaterialNode import MaterialNode import UM.FlameProfiler @@ -167,13 +168,20 @@ class MachineNode(ContainerNode): return self.global_qualities.get(self.preferred_quality_type, next(iter(self.global_qualities.values()))) + def is_excluded_material(self, material: MaterialNode) -> bool: + """Returns whether the material should be excluded from the list of materials.""" + for exclude_material in self.exclude_materials: + if exclude_material in material["id"]: + return True + return False + @UM.FlameProfiler.profile def _loadAll(self) -> None: """(Re)loads all variants under this printer.""" container_registry = ContainerRegistry.getInstance() if not self.has_variants: - self.variants["empty"] = VariantNode("empty_variant", machine = self) + self.variants["empty"] = VariantNode("empty_variant", machine=self) self.variants["empty"].materialsChanged.connect(self.materialsChanged) else: # Find all the variants for this definition ID. diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py index 39664946a3..e57c45e9dd 100644 --- a/cura/Machines/VariantNode.py +++ b/cura/Machines/VariantNode.py @@ -60,7 +60,7 @@ class VariantNode(ContainerNode): materials = list(materials_per_base_file.values()) # Filter materials based on the exclude_materials property. - filtered_materials = [material for material in materials if material["id"] not in self.machine.exclude_materials] + filtered_materials = [material for material in materials if not self.machine.is_excluded_material(material)] for material in filtered_materials: base_file = material["base_file"]