chiark / gitweb /
d6b2cd7ddde0b806d9db134d3334e0c854dc9a32
[cura.git] / Cura / util / meshLoaders / obj.py
1 from __future__ import absolute_import
2
3 from Cura.util import mesh
4
5 class objModel(mesh.mesh):
6         def __init__(self):
7                 super(objModel, self).__init__()
8
9         def load(self, filename):
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                 self._prepareVertexCount(len(faceList) * 3)
27                 for f in faceList:
28                         i = f[0] - 1
29                         self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
30                         i = f[1] - 1
31                         self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
32                         i = f[2] - 1
33                         self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
34                 
35                 self._postProcessAfterLoad()
36                 return self
37