Browse Source

Exclude HIPS and PETG material for UM
CURA-5149

Aleksei S 7 years ago
parent
commit
2240c38fd7

+ 7 - 56
cura/Machines/Models/GenericMaterialsModel.py

@@ -1,10 +1,8 @@
 # Copyright (c) 2018 Ultimaker B.V.
 # Cura is released under the terms of the LGPLv3 or higher.
 
-from typing import Dict
 from UM.Logger import Logger
 from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel
-from cura.Machines.MaterialNode import MaterialNode
 
 
 class GenericMaterialsModel(BaseMaterialsModel):
@@ -33,6 +31,7 @@ class GenericMaterialsModel(BaseMaterialsModel):
             self.setItems([])
             return
         extruder_stack = global_stack.extruders[extruder_position]
+        exclude_materials = set(global_stack.definition.getMetaDataEntry("exclude_materials", []))
 
         available_material_dict = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack,
                                                                                                  extruder_stack)
@@ -40,25 +39,12 @@ class GenericMaterialsModel(BaseMaterialsModel):
             self.setItems([])
             return
 
-        # Check if it's an Ultimaker printer
-        printer_manufacturer = global_stack.getMetaDataEntry("manufacturer", "")
-        is_ultimaker_printer = "ultimaker" in printer_manufacturer.lower()
-
-        # For Ultimaker printers, only show the generic materials that are supported.
-        if not is_ultimaker_printer:
-            item_list = self._getGenericProfiles(available_material_dict)
-        else:
-            item_list = self._getUltimakerGenericProfiles(available_material_dict)
-
-        # Sort the item list by material name alphabetically
-        item_list = sorted(item_list, key = lambda d: d["name"].upper())
-
-        self.setItems(item_list)
-
-    def _getGenericProfiles(self, available_material_dict):
         item_list = []
         for root_material_id, container_node in available_material_dict.items():
             metadata = container_node.metadata
+            # Skip excluded materials
+            if metadata["id"] in exclude_materials:
+                continue
             # Only add results for generic materials
             if metadata["brand"].lower() != "generic":
                 continue
@@ -73,42 +59,7 @@ class GenericMaterialsModel(BaseMaterialsModel):
                     }
             item_list.append(item)
 
-        return item_list
-
-    ## The method filters available materials by name. If material is not defined for Ultimaker printers
-    #  then it will be removed
-    #  \available_material_dict \type{dictionary}
-    #  \return The filtered list
-    def _getUltimakerGenericProfiles(self, available_material_dict: Dict[str, MaterialNode]):
-        generic_item_list = []
-        ultimaker_item_set = set()
-
-        for root_material_id, container_node in available_material_dict.items():
-            metadata = container_node.metadata
-
-            is_ultimaker_brand = False
-            brand_name = metadata["brand"].lower()
-
-            if brand_name != "generic":
-                if brand_name == 'ultimaker':
-                    is_ultimaker_brand = True
-                else:
-                    continue
-
-            item = {"root_material_id": root_material_id,
-                    "id": metadata["id"],
-                    "name": metadata["name"],
-                    "brand": metadata["brand"],
-                    "material": metadata["material"],
-                    "color_name": metadata["color_name"],
-                    "container_node": container_node
-                    }
-            if is_ultimaker_brand:
-                ultimaker_item_set.add(item['material'])
-            else:
-                generic_item_list.append(item)
-
-        # If material is not in ultimaker list then remove it
-        item_list = [material for material in generic_item_list if material['material'] in ultimaker_item_set]
+        # Sort the item list by material name alphabetically
+        item_list = sorted(item_list, key = lambda d: d["name"].upper())
 
-        return item_list
+        self.setItems(item_list)

+ 2 - 1
resources/definitions/ultimaker.def.json

@@ -6,7 +6,8 @@
         "author": "Ultimaker",
         "manufacturer": "Ultimaker B.V.",
         "category": "Ultimaker",
-        "visible": false
+        "visible": false,
+        "exclude_materials": [ "generic_hips", "generic_petg" ]
     },
     "overrides": {
         "machine_max_feedrate_e": {