mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-13 21:05:54 +08:00
Merge pull request #6821 from Ultimaker/CURA-7070_fix_quality_search
CURA-7070 fix quality search
This commit is contained in:
commit
e8823d3529
@ -60,28 +60,41 @@ class MaterialNode(ContainerNode):
|
|||||||
container_registry = ContainerRegistry.getInstance()
|
container_registry = ContainerRegistry.getInstance()
|
||||||
# Find all quality profiles that fit on this material.
|
# Find all quality profiles that fit on this material.
|
||||||
if not self.variant.machine.has_machine_quality: # Need to find the global qualities.
|
if not self.variant.machine.has_machine_quality: # Need to find the global qualities.
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter")
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = "fdmprinter")
|
||||||
elif not self.variant.machine.has_materials:
|
elif not self.variant.machine.has_materials:
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type="quality", definition=self.variant.machine.quality_definition)
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition)
|
||||||
else:
|
else:
|
||||||
if self.variant.machine.has_variants:
|
if self.variant.machine.has_variants:
|
||||||
# Need to find the qualities that specify a material profile with the same material type.
|
# Need to find the qualities that specify a material profile with the same material type.
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name, material = self.container_id) # First try by exact material ID.
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition,
|
||||||
|
variant = self.variant.variant_name,
|
||||||
|
material = self.base_file) # First try by exact material ID.
|
||||||
|
# CURA-7070
|
||||||
|
# The quality profiles only reference a material with the material_root_id. They will never state something
|
||||||
|
# such as "generic_pla_ultimaker_s5_AA_0.4". So we search with the "base_file" which is the material_root_id.
|
||||||
else:
|
else:
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type="quality", definition=self.variant.machine.quality_definition, material=self.container_id)
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition,
|
||||||
|
material = self.base_file)
|
||||||
if not qualities:
|
if not qualities:
|
||||||
my_material_type = self.material_type
|
my_material_type = self.material_type
|
||||||
if self.variant.machine.has_variants:
|
if self.variant.machine.has_variants:
|
||||||
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name)
|
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition,
|
||||||
|
variant = self.variant.variant_name)
|
||||||
else:
|
else:
|
||||||
qualities_any_material = container_registry.findInstanceContainersMetadata(type="quality", definition = self.variant.machine.quality_definition)
|
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition)
|
||||||
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type):
|
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type):
|
||||||
qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["id"]))
|
qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["base_file"]))
|
||||||
|
|
||||||
if not qualities: # No quality profiles found. Go by GUID then.
|
if not qualities: # No quality profiles found. Go by GUID then.
|
||||||
my_guid = self.guid
|
my_guid = self.guid
|
||||||
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid):
|
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid):
|
||||||
qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["id"]))
|
qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["base_file"]))
|
||||||
|
|
||||||
if not qualities:
|
if not qualities:
|
||||||
# There are still some machines that should use global profiles in the extruder, so do that now.
|
# There are still some machines that should use global profiles in the extruder, so do that now.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user