chiark / gitweb /
ed199d71177f8a60e213b8760353ebf4cbedba98
[cura.git] / Cura / util / obj.py
1 import sys, math, re, os, struct, time
2
3 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[1] = parts[1].split('/')[0]
22                                 parts[2] = parts[2].split('/')[0]
23                                 parts[3] = parts[3].split('/')[0]
24                                 faceList.append([int(parts[1]), int(parts[2]), int(parts[3])])
25                 f.close()
26                 
27                 self._prepareVertexCount(len(faceList) * 3)
28                 for f in faceList:
29                         i = f[0] - 1
30                         self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
31                         i = f[1] - 1
32                         self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
33                         i = f[2] - 1
34                         self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
35                 
36                 self._postProcessAfterLoad()
37                 return self
38