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..44f73ae2d7 100644 --- a/cura/Machines/VariantNode.py +++ b/cura/Machines/VariantNode.py @@ -63,6 +63,8 @@ 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) and 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) @@ -126,6 +128,8 @@ class VariantNode(ContainerNode): return # We won't add any materials. material_definition = container.getMetaDataEntry("definition") + if (not self.machine.supports_abstract_color) and container.getMetaDataEntry("abstract_color", False): + return base_file = container.getMetaDataEntry("base_file") if self.machine.isExcludedMaterialBaseFile(base_file): return # Material is forbidden for this printer. diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index eb2bb2a788..f756a79868 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -918,9 +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. - base_metadata["visible"] = not base_metadata.get("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 diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 571d501212..88c5811430 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -16,7 +16,8 @@ "preferred_quality_type": "normal", "machine_extruder_trains": { "0": "fdmextruder" }, "supports_usb_connection": true, - "supports_network_connection": false + "supports_network_connection": false, + "supports_abstract_color": false }, "settings": { diff --git a/resources/definitions/ultimaker_factor4.def.json b/resources/definitions/ultimaker_factor4.def.json index 5945d3a262..909f180b09 100644 --- a/resources/definitions/ultimaker_factor4.def.json +++ b/resources/definitions/ultimaker_factor4.def.json @@ -39,6 +39,7 @@ "preferred_quality_type": "draft", "preferred_variant_name": "AA 0.4", "supported_actions": [ "DiscoverUM3Action" ], + "supports_abstract_color": true, "supports_material_export": true, "supports_network_connection": true, "supports_usb_connection": false, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 3c35c84a00..3bc3f7b50c 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -48,6 +48,7 @@ "preferred_variant_buildplate_name": "Glass", "preferred_variant_name": "AA 0.4", "supported_actions": [ "DiscoverUM3Action" ], + "supports_abstract_color": true, "supports_material_export": true, "supports_network_connection": true, "supports_usb_connection": false, diff --git a/resources/definitions/ultimaker_s7.def.json b/resources/definitions/ultimaker_s7.def.json index bb3f5a938d..12cd714dd9 100644 --- a/resources/definitions/ultimaker_s7.def.json +++ b/resources/definitions/ultimaker_s7.def.json @@ -36,6 +36,7 @@ "preferred_variant_name": "AA 0.4", "quality_definition": "ultimaker_s5", "supported_actions": [ "DiscoverUM3Action" ], + "supports_abstract_color": true, "supports_material_export": true, "supports_network_connection": true, "supports_usb_connection": false,