From ed6539812e104355be0507b85bd9d258d22b1083 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 9 Oct 2019 17:12:06 +0200 Subject: [PATCH 1/4] Ensure that all material profiles get metadata updates CURA-6868 --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 7dfa6483d2..fe0f73f2b3 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -87,7 +87,6 @@ class XmlMaterialProfile(InstanceContainer): container.metaDataChanged.emit(container) for k, v in new_setting_values_dict.items(): self.setProperty(k, "value", v) - return ## Overridden from InstanceContainer, similar to setMetaDataEntry. # without this function the setName would only set the name of the specific nozzle / material / machine combination container From 44cb810c855406a467d5b06a93f84ffc5c101c5c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 9 Oct 2019 22:28:55 +0200 Subject: [PATCH 2/4] If None crash CURA-6869 --- cura/Settings/MachineManager.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index b62b3516f6..2fbc5b4fd6 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -619,7 +619,10 @@ class MachineManager(QObject): global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() if not global_container_stack: return False - return self.activeQualityGroup().is_experimental + active_quality_group = self.activeQualityGroup() + if active_quality_group is None: + return False + return active_quality_group.is_experimental @pyqtProperty(str, notify = activeIntentChanged) def activeIntentCategory(self) -> str: From d60b26db159083896f49079c8a415562ca3fd91f Mon Sep 17 00:00:00 2001 From: Nino van Hooff Date: Thu, 10 Oct 2019 09:27:23 +0200 Subject: [PATCH 3/4] None-check for material diameter. Fixes a crash for materials which don't have that metadata-entry, such as an empty material (UM2) CURA-6873 --- cura/Machines/VariantNode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py index fa0c61bd3d..27e359afb1 100644 --- a/cura/Machines/VariantNode.py +++ b/cura/Machines/VariantNode.py @@ -84,7 +84,7 @@ class VariantNode(ContainerNode): 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")): + if material_node.getMetaDataEntry("approximate_diameter") and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): return 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( From ec4817db8725bb3012ca0b980e8eaec0a99a0ea4 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 10 Oct 2019 09:55:17 +0200 Subject: [PATCH 4/4] Fix crash when syncing with configuration that has no printcores active CURA-6826 --- cura/Settings/MachineManager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 2fbc5b4fd6..3fb55c0e70 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1434,6 +1434,8 @@ class MachineManager(QObject): else: machine_node = ContainerTree.getInstance().machines.get(self._global_container_stack.definition.getId()) variant_node = machine_node.variants.get(extruder_configuration.hotendID) + if variant_node is None: + continue self._setVariantNode(position, variant_node) # Find the material profile that the printer has stored.