diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index c4170ebfcf..d0442e083b 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Ultimaker B.V. +# Copyright (c) 2021 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from configparser import ConfigParser @@ -412,7 +412,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): quality_container_id = parser["containers"][str(_ContainerIndexes.Quality)] quality_type = "empty_quality" if quality_container_id not in ("empty", "empty_quality"): - quality_type = instance_container_info_dict[quality_container_id].parser["metadata"]["quality_type"] + if quality_container_id in instance_container_info_dict: + quality_type = instance_container_info_dict[quality_container_id].parser["metadata"]["quality_type"] + else: # If a version upgrade changed the quality profile in the stack, we'll need to look for it in the built-in profiles instead of the workspace. + quality_matches = ContainerRegistry.getInstance().findContainersMetadata(id = quality_container_id) + if quality_matches: # If there's no profile with this ID, leave it empty_quality. + quality_type = quality_matches[0]["quality_type"] # Get machine info serialized = archive.open(global_stack_file).read().decode("utf-8")