windmill-gint/windmill-stl.py

45 lines
1.3 KiB
Python

class Lexer:
def __init__(self,Data):
# remove first line...
Data = Data.split("\n",1)[1]
self.data = Data.split()
# ... and last line
self.data = self.data[0:len(self.data)-2]
def lex(self,indice):
return self.data[indice]
def getData(self):
return self.data
class Parser:
def __init__(self,Lexer):
self.lexer = Lexer
def parse(self,Data):
list_triangles = [[[0,0,0],[0,0,0],[0,0,0]] for i in range(int(len(Data)/21))]
triangle=0
# for all the triangles
for i in range(0,len(Data),21):
# parsing X
for j in range(0,3):
list_triangles[triangle][0][j] = float(self.lexer.lex(i+8+j))
# parsing Y
for j in range(0,3):
list_triangles[triangle][1][j] = float(self.lexer.lex(i+12+j))
# parsing Z
for j in range(0,3):
list_triangles[triangle][2][j] = float(self.lexer.lex(i+16+j))
triangle+=1
return list_triangles
with open("cube.stl") as file:
data = file.read()
lexer = Lexer(data)
Data = lexer.getData()
parser = Parser(lexer)
print(parser.parse(Data))