Use proper method to check for excluded materials

CURA-11501
This commit is contained in:
Erwan MATHIEU 2024-08-15 11:13:15 +02:00
parent 83fc0b764c
commit 1e5fa8523f
2 changed files with 4 additions and 5 deletions

View File

@ -14,7 +14,6 @@ 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.QualityGroup import QualityGroup # To construct groups of quality profiles that belong together.
from cura.Machines.QualityNode import QualityNode from cura.Machines.QualityNode import QualityNode
from cura.Machines.VariantNode import VariantNode from cura.Machines.VariantNode import VariantNode
from cura.Machines.MaterialNode import MaterialNode
import UM.FlameProfiler import UM.FlameProfiler
@ -168,10 +167,10 @@ class MachineNode(ContainerNode):
return self.global_qualities.get(self.preferred_quality_type, next(iter(self.global_qualities.values()))) return self.global_qualities.get(self.preferred_quality_type, next(iter(self.global_qualities.values())))
def isExcludedMaterial(self, material: MaterialNode) -> bool: def isExcludedMaterial(self, material_base_file: str) -> bool:
"""Returns whether the material should be excluded from the list of materials.""" """Returns whether the material should be excluded from the list of materials."""
for exclude_material in self.exclude_materials: for exclude_material in self.exclude_materials:
if exclude_material in material["id"]: if exclude_material in material_base_file:
return True return True
return False return False

View File

@ -60,7 +60,7 @@ class VariantNode(ContainerNode):
materials = list(materials_per_base_file.values()) materials = list(materials_per_base_file.values())
# Filter materials based on the exclude_materials property. # Filter materials based on the exclude_materials property.
filtered_materials = [material for material in materials if not self.machine.isExcludedMaterial(material)] filtered_materials = [material for material in materials if not self.machine.isExcludedMaterial(material["id"])]
for material in filtered_materials: for material in filtered_materials:
base_file = material["base_file"] base_file = material["base_file"]
@ -127,7 +127,7 @@ class VariantNode(ContainerNode):
material_definition = container.getMetaDataEntry("definition") material_definition = container.getMetaDataEntry("definition")
base_file = container.getMetaDataEntry("base_file") base_file = container.getMetaDataEntry("base_file")
if base_file in self.machine.exclude_materials: if self.machine.isExcludedMaterial(base_file):
return # Material is forbidden for this printer. return # Material is forbidden for this printer.
if base_file not in self.materials: # Completely new base file. Always better than not having a file as long as it matches our set-up. if base_file not in self.materials: # Completely new base file. Always better than not having a file as long as it matches our set-up.
if material_definition != "fdmprinter" and material_definition != self.machine.container_id: if material_definition != "fdmprinter" and material_definition != self.machine.container_id: