chiark / gitweb /
Copyright message needs to be after the __future__ imports.
[cura.git] / Cura / util / meshLoader.py
1 from __future__ import absolute_import
2 __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
3
4 from Cura.util.meshLoaders import stl
5 from Cura.util.meshLoaders import obj
6 from Cura.util.meshLoaders import dae
7 from Cura.util.meshLoaders import amf
8
9 def loadSupportedExtensions():
10         return ['.stl', '.obj', '.dae', '.amf']
11
12 def saveSupportedExtensions():
13         return ['.amf', '.stl']
14
15 def loadWildcardFilter():
16         wildcardList = ';'.join(map(lambda s: '*' + s, loadSupportedExtensions()))
17         return "Mesh files (%s)|%s;%s" % (wildcardList, wildcardList, wildcardList.upper())
18
19 def saveWildcardFilter():
20         wildcardList = ';'.join(map(lambda s: '*' + s, saveSupportedExtensions()))
21         return "Mesh files (%s)|%s;%s" % (wildcardList, wildcardList, wildcardList.upper())
22
23 #loadMeshes loads 1 or more printableObjects from a file.
24 # STL files are a single printableObject with a single mesh, these are most common.
25 # OBJ files usually contain a single mesh, but they can contain multiple meshes
26 # AMF can contain whole scenes of objects with each object having multiple meshes.
27 # DAE files are a mess, but they can contain scenes of objects as well as grouped meshes
28
29 def loadMeshes(filename):
30         ext = filename[filename.rfind('.'):].lower()
31         if ext == '.stl':
32                 return stl.loadScene(filename)
33         if ext == '.obj':
34                 return obj.loadScene(filename)
35         if ext == '.dae':
36                 return dae.loadScene(filename)
37         if ext == '.amf':
38                 return amf.loadScene(filename)
39         print 'Error: Unknown model extension: %s' % (ext)
40         return []
41
42 def saveMeshes(filename, objects):
43         ext = filename[filename.rfind('.'):].lower()
44         if ext == '.stl':
45                 stl.saveScene(filename, objects)
46                 return
47         if ext == '.amf':
48                 amf.saveScene(filename, objects)
49                 return
50         print 'Error: Unknown model extension: %s' % (ext)