diff --git a/cura/Machines/MachineNode.py b/cura/Machines/MachineNode.py index 67b8559b2e..3723cf4a7a 100644 --- a/cura/Machines/MachineNode.py +++ b/cura/Machines/MachineNode.py @@ -48,6 +48,7 @@ class MachineNode(ContainerNode): self.preferred_variant_name = my_metadata.get("preferred_variant_name", "") self.preferred_material = my_metadata.get("preferred_material", "") self.preferred_quality_type = my_metadata.get("preferred_quality_type", "") + self.supports_abstract_color = parseBool(my_metadata.get("supports_abstract_color", "false")) self._loadAll() diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py index e037c9259d..a9dd8aa96b 100644 --- a/cura/Machines/VariantNode.py +++ b/cura/Machines/VariantNode.py @@ -63,6 +63,9 @@ class VariantNode(ContainerNode): filtered_materials = [material for material in materials if not self.machine.isExcludedMaterialBaseFile(material["id"])] for material in filtered_materials: + if material.get("abstract_color", False): + if not self.machine.supports_abstract_color: + continue # do not show abstract color profiles if the machine does not support them base_file = material["base_file"] if base_file not in self.materials: self.materials[base_file] = MaterialNode(material["id"], variant = self) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 6893a77ec5..f756a79868 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -918,11 +918,6 @@ class XmlMaterialProfile(InstanceContainer): base_metadata["properties"] = property_values base_metadata["definition"] = "fdmprinter" - # Certain materials are loaded but should not be visible / selectable to the user. - # Only show abstract color profiles (Any Color) if the machine supports them - base_metadata["visible"] = (not base_metadata.get("abstract_color", False) - or base_metadata.get("supports_abstract_color", False)) - compatible_entries = data.iterfind("./um:settings/um:setting[@key='hardware compatible']", cls.__namespaces) try: common_compatibility = cls._parseCompatibleValue(next(compatible_entries).text) # type: ignore