Auch heute beschätigten wir uns weiter mit der stl-Formatierung. Mit Stefans Hilfe haben wir nun folgendes Ergebnis
# -*- 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(x): ''' 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], #a [mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], #b [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], #c [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z], #d [mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z], #e [mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], #f [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z], #g [mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z]])#h ''' def erstelle_vertices(x): for n in x: while l < 8: vertices[n] = np.array([x[n][l]]) l += 1 return vertices[2] # 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[n[f[j],:]] cube.save('cube.stl') ''' 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) ''' x = [[[0,0,0], [3,0,0], [3,0,-2], [0,0,-2], [0,2,0], [3,2,0], [3,2,-2], [0,2,-2]], [[5,0,0], [5,0,-4], [3,0,-4], [3,0,0], [5,2,0], [5,2,-4], [3,2,-4], [3,2,0]]] box_in_dreiecke(x)
Leider gibt es auch hier noch Fehlermeldungen. Wir haben hier versucht, er Funktion box_in_dreiecke lediglich die Eckpunkte der Boxen zu übergeben. Denn nun haben wir uns auch über die Schnittstelle unserer beiden Gruppen (Dreieckologie und Topologie) endgültig einigen können: Uns werden die Eckpunkte bereits übergeben, sodass ein Großteil der zuvor notwendigen Eckpunktidetifizierung wegfällt. In diesem Beispiel werden zwei Boxen zu triangulieren versucht. Das Ziel ist die Erstellung einer separaten stl-Datei namens „cube“ im gleichen Ordner wie das Programm.