diff --git a/cura/Machines/MaterialNode.py b/cura/Machines/MaterialNode.py index 91b6601dc8..7d71b24939 100644 --- a/cura/Machines/MaterialNode.py +++ b/cura/Machines/MaterialNode.py @@ -1,7 +1,7 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Any, TYPE_CHECKING +from typing import Any, Optional, TYPE_CHECKING from UM.Logger import Logger from UM.Settings.ContainerRegistry import ContainerRegistry @@ -29,7 +29,10 @@ class MaterialNode(ContainerNode): self.base_file = my_metadata["base_file"] self.material_type = my_metadata["material"] self.guid = my_metadata["GUID"] - self.diameter = my_metadata["properties"]["diameter"] + # MaterialNode can represent an empty_material container, which has no diameter. + self.diameter = None # type: Optional[str] + if "properties" in my_metadata: + self.diameter = my_metadata["properties"]["diameter"] self._loadAll() container_registry.containerRemoved.connect(self._onRemoved) container_registry.containerMetaDataChanged.connect(self._onMetadataChanged) @@ -130,7 +133,8 @@ class MaterialNode(ContainerNode): self.material_type = new_metadata["material"] old_guid = self.guid self.guid = new_metadata["GUID"] - self.diameter = new_metadata["properties"]["diameter"] + if "properties" in new_metadata: + self.diameter = new_metadata["properties"]["diameter"] if self.base_file != old_base_file or self.material_type != old_material_type or self.guid != old_guid: # List of quality profiles could've changed. self.qualities = {} self._loadAll() # Re-load the quality profiles for this node.