Im heutigen Tutorium haben wir weiter an dem stl-Format gearbeitet. Wir nahmen uns dafür ein Beispiel aus dem Internet zu Hilfe. Das Resultat ist hier zu sehen:
# -*- coding: utf-8 -*- from __future__ import division from __future__ import print_function from visual import * import numpy as np import stl from stl import mesh from matplotlib import pyplot def box_in_dreiecke(mybox): vertices = np.array([[mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z], [mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z], [mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z], [mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z]]) # Listen von je drei Punkten, aus denen ein Dreieck gemacht werden soll faces = np.array([[4,6,7], [5,4,6], [5,6,2], [5,2,6], [3,0,7], [0,7,4], [0,1,2], [0,2,3], [2,3,6], [3,6,7], [0,1,4], [1,4,5]]) cube = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype)) for i, f in enumerate(faces): for j in range(3): cube.vectors[i][j] = vertices[f[j],:] cube.save('cube.stl') pyplot.show() mybox1 = box(pos = (5,0,0), size = (5,5,0.5), color = color.blue, angle = pi/2, axis = (0,0,1)) mybox1.visible = false box_in_dreiecke(mybox1)
Vertices und faces sind Matrizen, die die vorherigen Listen von Listen ersetzen. Leider wird die triangulierte Box trotz der Codezeile „pyplot.show()“ nicht angezeigt; es gibt aber auch keine Fehlermeldungen mehr.