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