From dd3abf7ff08d670e37bace267c93aecdb11ba4c2 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 22 Jun 2022 14:05:56 +0200 Subject: [PATCH 1/2] Add check for empty material instance containers before trying to fetch material metadata. This fixes failing to save a project on a printer with no materials (UM2 for example). CURA-9412 --- plugins/3MFWriter/ThreeMFWriter.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index c507703823..3bb1d44e01 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -12,6 +12,7 @@ from UM.Application import Application from UM.Message import Message from UM.Resources import Resources from UM.Scene.SceneNode import SceneNode +from UM.Settings.EmptyInstanceContainer import EmptyInstanceContainer from cura.CuraApplication import CuraApplication from cura.CuraPackageManager import CuraPackageManager @@ -268,6 +269,10 @@ class ThreeMFWriter(MeshWriter): # Don't export materials not in use continue + if type(extruder.material) is EmptyInstanceContainer: + # This is an empty material container, no material to export + continue + if package_manager.isMaterialBundled(extruder.material.getFileName(), extruder.material.getMetaDataEntry("GUID")): # Don't export bundled materials continue From 9aaf59ae8634a04fa3d0b45f7b37ca3ffdcfac1c Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Fri, 24 Jun 2022 14:29:50 +0200 Subject: [PATCH 2/2] Suggested changes CURA-9412 --- plugins/3MFWriter/ThreeMFWriter.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 3bb1d44e01..7dd5dac8a3 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -12,6 +12,7 @@ from UM.Application import Application from UM.Message import Message from UM.Resources import Resources from UM.Scene.SceneNode import SceneNode +from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.EmptyInstanceContainer import EmptyInstanceContainer from cura.CuraApplication import CuraApplication @@ -269,7 +270,7 @@ class ThreeMFWriter(MeshWriter): # Don't export materials not in use continue - if type(extruder.material) is EmptyInstanceContainer: + if isinstance(extruder.material, type(ContainerRegistry.getInstance().getEmptyInstanceContainer())): # This is an empty material container, no material to export continue