Browse Source

Revert "Revert "Write a list of object names to the global metadata of ufp files""

Was accidentally committed to master, now on a separate branch

CURA-6915

This reverts commit f660755b
Nino van Hooff 4 years ago
parent
commit
707745b2bf
1 changed files with 17 additions and 0 deletions
  1. 17 0
      plugins/UFPWriter/UFPWriter.py

+ 17 - 0
plugins/UFPWriter/UFPWriter.py

@@ -18,6 +18,9 @@ from cura.Snapshot import Snapshot
 from cura.Utils.Threading import call_on_qt_thread
 
 from UM.i18n import i18nCatalog
+
+METADATA_OBJECTS_PATH = "metadata/objects"
+
 catalog = i18nCatalog("cura")
 
 
@@ -53,6 +56,8 @@ class UFPWriter(MeshWriter):
         archive = VirtualFile()
         archive.openStream(stream, "application/x-ufp", OpenMode.WriteOnly)
 
+        self._writeObjectList(archive)
+
         #Store the g-code from the scene.
         archive.addContentType(extension = "gcode", mime_type = "text/x-gcode")
         gcode_textio = StringIO() #We have to convert the g-code into bytes.
@@ -139,3 +144,15 @@ class UFPWriter(MeshWriter):
             Logger.error(error_msg)
             return False
         return True
+
+    @staticmethod
+    def _writeObjectList(archive):
+        """Write a json list of object names to the METADATA_OBJECTS_PATH metadata field
+
+        To retrieve, use: `archive.getMetadata(METADATA_OBJECTS_PATH)`
+        """
+        objectsModel = CuraApplication.getInstance().getObjectsModel()
+        objectMetas = [{"name": item["name"]} for item in objectsModel.items]
+
+        data = {METADATA_OBJECTS_PATH: objectMetas}
+        archive.setMetadata(data)