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