|
@@ -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)}
|
|
|
+
|
|
|
+ right_brand_no_color_qualities = [quality for quality in qualities_any_material if quality.get("material") in all_material_base_files_right_brand]
|
|
|
|
|
|
- qualities.extend((quality for quality in qualities_any_material if quality.get("material") in all_material_base_files))
|
|
|
+ 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
|