chiark / gitweb /
Add option to save GCode file. Re-center the objects on the bed when you add a new...
[cura.git] / Cura / util / meshLoaders / obj.py
1 from __future__ import absolute_import
2
3 from Cura.util import mesh
4
5 def loadScene(filename):
6         obj = mesh.printableObject()
7         m = obj._addMesh()
8
9         vertexList = []
10         faceList = []
11
12         f = open(filename, "r")
13         for line in f:
14                 parts = line.split()
15                 if len(parts) < 1:
16                         continue
17                 if parts[0] == 'v':
18                         vertexList.append([float(parts[1]), float(parts[2]), float(parts[3])])
19                 if parts[0] == 'f':
20                         parts = map(lambda p: p.split('/')[0], parts)
21                         for idx in xrange(1, len(parts)-2):
22                                 faceList.append([int(parts[1]), int(parts[idx+1]), int(parts[idx+2])])
23         f.close()
24
25         m._prepareFaceCount(len(faceList))
26         for f in faceList:
27                 i = f[0] - 1
28                 j = f[1] - 1
29                 k = f[2] - 1
30                 if i < 0 or i >= len(vertexList):
31                         i = 0
32                 if j < 0 or j >= len(vertexList):
33                         j = 0
34                 if k < 0 or k >= len(vertexList):
35                         k = 0
36                 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])
37
38         obj._postProcessAfterLoad()
39         return [obj]