chiark / gitweb /
Copyright message needs to be after the __future__ imports.
[cura.git] / Cura / util / meshLoaders / obj.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 import mesh
5
6 def loadScene(filename):
7         obj = mesh.printableObject()
8         m = obj._addMesh()
9
10         vertexList = []
11         faceList = []
12
13         f = open(filename, "r")
14         for line in f:
15                 parts = line.split()
16                 if len(parts) < 1:
17                         continue
18                 if parts[0] == 'v':
19                         vertexList.append([float(parts[1]), float(parts[2]), float(parts[3])])
20                 if parts[0] == 'f':
21                         parts = map(lambda p: p.split('/')[0], parts)
22                         for idx in xrange(1, len(parts)-2):
23                                 faceList.append([int(parts[1]), int(parts[idx+1]), int(parts[idx+2])])
24         f.close()
25
26         m._prepareFaceCount(len(faceList))
27         for f in faceList:
28                 i = f[0] - 1
29                 j = f[1] - 1
30                 k = f[2] - 1
31                 if i < 0 or i >= len(vertexList):
32                         i = 0
33                 if j < 0 or j >= len(vertexList):
34                         j = 0
35                 if k < 0 or k >= len(vertexList):
36                         k = 0
37                 m._addFace(vertexList[i][0], vertexList[i][1], vertexList[i][2], vertexList[j][0], vertexList[j][1], vertexList[j][2], vertexList[k][0], vertexList[k][1], vertexList[k][2])
38
39         obj._postProcessAfterLoad()
40         return [obj]