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
2D Linien und Kreissegmente in 3D zeichnen
Kennst Du dieses matplotlib Beispiel http://matplotlib.org/examples/mplot3d/ ... _demo.html? Drehen und Zoomen geht damit.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.
Blender kann das alles, hat aber einen extrem hohen Einarbeitungsaufwand.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.)
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
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
Gibt es dieses 2D-Beispiel in 3D?
Gruß
Holger
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()
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:Aber handelt es sich dabei nicht auch um eine Funktion?
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.holgie hat geschrieben: Gibt es in matplot einen Befehl z.B. ax.plot.circle(x,y,z,r,anfangswinkel,endwinkel)?