OctoPrint/Cura/util/obj.py

39 lines
1001 B
Python

import sys, math, re, os, struct, time
import mesh
class objModel(mesh.mesh):
def __init__(self):
super(objModel, self).__init__()
def load(self, filename):
vertexList = []
faceList = []
f = open(filename, "r")
for line in f:
parts = line.split()
if len(parts) < 1:
continue
if parts[0] == 'v':
vertexList.append([float(parts[1]), float(parts[2]), float(parts[3])])
if parts[0] == 'f':
parts[1] = parts[1].split('/')[0]
parts[2] = parts[2].split('/')[0]
parts[3] = parts[3].split('/')[0]
faceList.append([int(parts[1]), int(parts[2]), int(parts[3])])
f.close()
self._prepareVertexCount(len(faceList) * 3)
for f in faceList:
i = f[0] - 1
self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
i = f[1] - 1
self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
i = f[2] - 1
self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
self._postProcessAfterLoad()
return self