Exclude HIPS and PETG material for UM

CURA-5149
This commit is contained in:
Aleksei S 2018-03-26 17:11:38 +02:00
parent 80c2b3b7e8
commit 2240c38fd7
2 changed files with 9 additions and 57 deletions

View file

@ -1,10 +1,8 @@
# Copyright (c) 2018 Ultimaker B.V. # Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
from typing import Dict
from UM.Logger import Logger from UM.Logger import Logger
from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel
from cura.Machines.MaterialNode import MaterialNode
class GenericMaterialsModel(BaseMaterialsModel): class GenericMaterialsModel(BaseMaterialsModel):
@ -33,6 +31,7 @@ class GenericMaterialsModel(BaseMaterialsModel):
self.setItems([]) self.setItems([])
return return
extruder_stack = global_stack.extruders[extruder_position] 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, available_material_dict = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack,
extruder_stack) extruder_stack)
@ -40,25 +39,12 @@ class GenericMaterialsModel(BaseMaterialsModel):
self.setItems([]) self.setItems([])
return 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 = [] item_list = []
for root_material_id, container_node in available_material_dict.items(): for root_material_id, container_node in available_material_dict.items():
metadata = container_node.metadata metadata = container_node.metadata
# Skip excluded materials
if metadata["id"] in exclude_materials:
continue
# Only add results for generic materials # Only add results for generic materials
if metadata["brand"].lower() != "generic": if metadata["brand"].lower() != "generic":
continue continue
@ -73,42 +59,7 @@ class GenericMaterialsModel(BaseMaterialsModel):
} }
item_list.append(item) item_list.append(item)
return item_list # Sort the item list by material name alphabetically
item_list = sorted(item_list, key = lambda d: d["name"].upper())
## The method filters available materials by name. If material is not defined for Ultimaker printers self.setItems(item_list)
# 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]
return item_list

View file

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