mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-13 03:29:02 +08:00
Insert "generic color same brand" logic for qualities
So instead of always falling back to generic brand and generic color, we first try to fall back to generic color with the same brand for qualities CURA-10953
This commit is contained in:
parent
8eb7866694
commit
331ff75315
@ -31,6 +31,7 @@ class MaterialNode(ContainerNode):
|
||||
my_metadata = container_registry.findContainersMetadata(id = container_id)[0]
|
||||
self.base_file = my_metadata["base_file"]
|
||||
self.material_type = my_metadata["material"]
|
||||
self.brand = my_metadata["brand"]
|
||||
self.guid = my_metadata["GUID"]
|
||||
self._loadAll()
|
||||
container_registry.containerRemoved.connect(self._onRemoved)
|
||||
@ -80,6 +81,7 @@ class MaterialNode(ContainerNode):
|
||||
# such as "generic_pla_ultimaker_s5_AA_0.4". So we search with the "base_file" which is the material_root_id.
|
||||
else:
|
||||
qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, material = self.base_file)
|
||||
|
||||
if not qualities:
|
||||
my_material_type = self.material_type
|
||||
if self.variant.machine.has_variants:
|
||||
@ -89,9 +91,22 @@ class MaterialNode(ContainerNode):
|
||||
else:
|
||||
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition)
|
||||
|
||||
all_material_base_files = {material_metadata["base_file"] for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type)}
|
||||
# First we attempt to find materials that have the same brand but not the right color
|
||||
all_material_base_files_right_brand = {material_metadata["base_file"] for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type, brand = self.brand)}
|
||||
|
||||
qualities.extend((quality for quality in qualities_any_material if quality.get("material") in all_material_base_files))
|
||||
right_brand_no_color_qualities = [quality for quality in qualities_any_material if quality.get("material") in all_material_base_files_right_brand]
|
||||
|
||||
if right_brand_no_color_qualities:
|
||||
# We found qualties for materials with the right brand but not with the right color. Use those.
|
||||
qualities.extend(right_brand_no_color_qualities)
|
||||
else:
|
||||
# Fall back to generic
|
||||
all_material_base_files = {material_metadata["base_file"] for material_metadata in
|
||||
container_registry.findInstanceContainersMetadata(type="material",
|
||||
material=my_material_type)}
|
||||
no_brand_no_color_qualities = (quality for quality in qualities_any_material if
|
||||
quality.get("material") in all_material_base_files)
|
||||
qualities.extend(no_brand_no_color_qualities)
|
||||
|
||||
if not qualities: # No quality profiles found. Go by GUID then.
|
||||
my_guid = self.guid
|
||||
|
Loading…
x
Reference in New Issue
Block a user