Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1617:dreieckologie_16.01.17

16.01.2017

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.

ws1617/dreieckologie_16.01.17.txt · Zuletzt geändert: 2017/01/16 15:27 von SoenkeRoos96