diff --git a/cura/Machines/MaterialNode.py b/cura/Machines/MaterialNode.py index 53596f8db3..f39ece4f8c 100644 --- a/cura/Machines/MaterialNode.py +++ b/cura/Machines/MaterialNode.py @@ -74,14 +74,20 @@ class MaterialNode(ContainerNode): qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name) else: qualities_any_material = container_registry.findInstanceContainersMetadata(type="quality", definition = self.variant.machine.quality_definition) - qualities_any_material = [metadata for metadata in qualities_any_material if metadata.get("global_quality", "False") != "True"] for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type): - qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["id"])) + qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["id"])) + if not qualities: # No quality profiles found. Go by GUID then. my_guid = self.guid for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid): qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["id"])) + if not qualities: + # There are still some machines that should use global profiles in the extruder, so do that now. + # These are mostly older machines that haven't received updates (so single extruder machines without specific qualities + # but that do have materials and profiles specific to that machine) + qualities.extend([quality for quality in qualities_any_material if quality.get("global_quality", "False") != "False"]) + for quality in qualities: quality_id = quality["id"] if quality_id not in self.qualities: