Merge pull request #8000 from Ultimaker/CURA-6915_identify_objects_on_buildplate

Write a list of object names to the global metadata objects to UFP file
This commit is contained in:
Jaime van Kessel 2020-07-01 14:43:25 +02:00 committed by GitHub
commit a825e81daa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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)`
"""
objects_model = CuraApplication.getInstance().getObjectsModel()
object_metas = [{"name": item["name"]} for item in objects_model.items]
data = {METADATA_OBJECTS_PATH: object_metas}
archive.setMetadata(data)