From ce625a5c367a80b44846fcec6aa07b12af726a21 Mon Sep 17 00:00:00 2001 From: daid303 Date: Fri, 26 Apr 2013 13:49:30 +0200 Subject: [PATCH] Support basic saving of AMF. --- Cura/util/meshLoaders/amf.py | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/Cura/util/meshLoaders/amf.py b/Cura/util/meshLoaders/amf.py index ad007705..8b68cbb4 100644 --- a/Cura/util/meshLoaders/amf.py +++ b/Cura/util/meshLoaders/amf.py @@ -1,5 +1,6 @@ from __future__ import absolute_import +import cStringIO as StringIO import zipfile try: from xml.etree import cElementTree as ElementTree @@ -74,3 +75,44 @@ def loadScene(filename): ret.append(obj) return ret + +def saveScene(filename, objects): + xml = StringIO.StringIO() + xml.write('\n') + xml.write('\n') + n = 0 + for obj in objects: + n += 1 + xml.write(' \n' % (n)) + xml.write(' \n') + xml.write(' \n') + for m in obj._meshList: + for v in m.vertexes: + xml.write(' \n') + xml.write(' \n') + xml.write(' %f\n' % (v[0])) + xml.write(' %f\n' % (v[1])) + xml.write(' %f\n' % (v[2])) + xml.write(' \n') + xml.write(' \n') + xml.write(' \n') + + idxOffset = 0 + for m in obj._meshList: + xml.write(' \n') + for idx in xrange(0, len(m.vertexes), 3): + xml.write(' \n') + xml.write(' %i\n' % (idx + idxOffset)) + xml.write(' %i\n' % (idx + idxOffset + 1)) + xml.write(' %i\n' % (idx + idxOffset + 2)) + xml.write(' \n') + xml.write(' \n') + xml.write(' \n') + idxOffset += len(m.vertexes) + xml.write(' \n') + xml.write('\n') + + zfile = zipfile.ZipFile(filename, "w", zipfile.ZIP_DEFLATED) + zfile.writestr(filename, xml.getvalue()) + zfile.close() + xml.close() -- 2.30.2