3
# (c) 2010 Werner Mayer LGPL
4
# FreeCAD Python script to work with the FCStd file format.
9
import xml.sax.xmlreader
13
# SAX handler to parse the Document.xml
14
class DocumentHandler(xml.sax.handler.ContentHandler):
15
def __init__(self, dirname):
18
self.dirname = dirname
20
def startElement(self, name, attributes):
21
item = attributes.get("file")
23
self.files.append(os.path.join(self.dirname, str(item)))
25
def characters(self, data):
28
def endElement(self, name):
32
def extractDocument(filename, outpath):
33
zfile = zipfile.ZipFile(filename)
34
files = zfile.namelist()
43
curpath = curpath + "/" + j
45
output = open(outpath + "/" + i, "wb")
50
def createDocument(filename, outpath):
51
files = getFilesList(filename)
52
compress = zipfile.ZipFile(outpath, "w", zipfile.ZIP_DEFLATED)
54
dirs = os.path.split(i)
56
compress.write(i, dirs[-1], zipfile.ZIP_DEFLATED)
60
def getFilesList(filename):
61
dirname = os.path.dirname(filename)
62
handler = DocumentHandler(dirname)
63
parser = xml.sax.make_parser()
64
parser.setContentHandler(handler)
65
parser.parse(filename)
68
files.append(filename)
69
files.extend(iter(handler.files))
70
dirname = os.path.join(dirname, "GuiDocument.xml")
71
if os.path.exists(dirname):