Seite 1 von 1
2D Linien und Kreissegmente in 3D zeichnen
Verfasst: Donnerstag 5. Februar 2015, 18:55
von holgie
Hallo zusammen,
ich möchte für meine CNC Steuerung Dialog4 einen Simulator in Python schreiben. Dafür möchte ich, wie bei vielen anderen einfachen CNC Simulatoren auch, die Fahrstrecke als Linie und Radien in x-y Ebene darstellen. Da die Maschine zusätzlich in einer Achse zustellt, sollen die Linien auch in der Z-Achse parallel versetzt gezeichnet werden. Ich habe bisher Matplotlib näher angeschaut, glaube aber nicht dass dies unbedingt fürs Zeichnen in 3D gedacht ist sondern mehr um Funktionen darzustellen. Gibt es ein anderes Package mit dem man in 3D Linien und Kreissegmente zeichnen kann, im 3D Raum drehen und zoomen kann (und evtl. sogar Linienabstände/Punktabstände messen kann.)
Danke vorab für Hilfe.
Gruß
Holger
Re: 2D Linien und Kreissegmente in 3D zeichnen
Verfasst: Donnerstag 5. Februar 2015, 20:04
von MagBen
holgie hat geschrieben:Ich habe bisher Matplotlib näher angeschaut, glaube aber nicht dass dies unbedingt fürs Zeichnen in 3D gedacht ist sondern mehr um Funktionen darzustellen.
Kennst Du dieses matplotlib Beispiel
http://matplotlib.org/examples/mplot3d/ ... _demo.html? Drehen und Zoomen geht damit.
holgie hat geschrieben:Gibt es ein anderes Package mit dem man in 3D Linien und Kreissegmente zeichnen kann, im 3D Raum drehen und zoomen kann (und evtl. sogar Linienabstände/Punktabstände messen kann.)
Blender kann das alles, hat aber einen extrem hohen Einarbeitungsaufwand.
Re: 2D Linien und Kreissegmente in 3D zeichnen
Verfasst: Donnerstag 5. Februar 2015, 20:43
von holgie
Hallo,
ja das Beispiel kenne ich. Aber handelt es sich dabei nicht auch um eine Funktion? Gibt es in matplot einen Befehl z.B. ax.plot.circle(x,y,z,r,anfangswinkel,endwinkel)? Ich habe sowas noch nicht gefunden.
Gruß
Holger
Re: 2D Linien und Kreissegmente in 3D zeichnen
Verfasst: Donnerstag 5. Februar 2015, 22:03
von holgie
Gibt es dieses 2D-Beispiel in 3D?
Gruß
Holger
Code: Alles auswählen
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig1 = plt.figure()
ax1 = fig1.add_subplot(111, aspect='equal')
ax1.add_patch(
patches.Wedge(
(0.3, 0.2), # (x,y)
0.5, # radius
0, # theta1 (in degrees)
120 # theta2
)
)
plt.show()
Re: 2D Linien und Kreissegmente in 3D zeichnen
Verfasst: Freitag 6. Februar 2015, 06:41
von MagBen
holgie hat geschrieben:Aber handelt es sich dabei nicht auch um eine Funktion?
In Matplotlib plottest Du nicht Funktionen, sondern Arrays. Diese Arrays können mit einer mathematischen Funktion erzeugt worden sein, sie können aber auch Stück für Stück von Deinem Programm gefüllt werden.
holgie hat geschrieben: Gibt es in matplot einen Befehl z.B. ax.plot.circle(x,y,z,r,anfangswinkel,endwinkel)?
Nicht für 3D. Es ist aber auch nicht weiter schwierig, sich eine solche Funktion für 3D selbst zu schreiben, die X,Y,Z Arrays zum Plotten zurückgibt. Als weitere Parameter müsstest Du noch die Anzahl der Punkte übergeben, die erzeugt werden sollen und die Flächennormale. Ich weiß nicht ob Deine CNC Maschine das kann, aber der Kreis kann ja auch schräg im Raum stehen.