Fix preferring correct diameter over correct preference

If the diameter doesn't match up, then the print fails. If the preference is not held up, then it chooses some random material and the user will understand what it chose.

Done during Turbo Testing and Tooling because a test was failing.
This commit is contained in:
Ghostkeeper 2019-10-04 17:35:38 +02:00
parent 862504f603
commit 54c1980f78
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276

View file

@ -82,6 +82,10 @@ class VariantNode(ContainerNode):
for base_material, material_node in self.materials.items(): for base_material, material_node in self.materials.items():
if self.machine.preferred_material in base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): if self.machine.preferred_material in base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")):
return material_node return material_node
# First fallback: Choose any material with matching diameter.
for material_node in self.materials.values():
if approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")):
return material_node
fallback = next(iter(self.materials.values())) # Should only happen with empty material node. fallback = next(iter(self.materials.values())) # Should only happen with empty material node.
Logger.log("w", "Could not find preferred material {preferred_material} with diameter {diameter} for variant {variant_id}, falling back to {fallback}.".format( Logger.log("w", "Could not find preferred material {preferred_material} with diameter {diameter} for variant {variant_id}, falling back to {fallback}.".format(
preferred_material = self.machine.preferred_material, preferred_material = self.machine.preferred_material,