2D Linien und Kreissegmente in 3D zeichnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
holgie
User
Beiträge: 12
Registriert: Sonntag 18. Januar 2015, 16:55

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
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

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.
a fool with a tool is still a fool, www.magben.de, YouTube
holgie
User
Beiträge: 12
Registriert: Sonntag 18. Januar 2015, 16:55

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
holgie
User
Beiträge: 12
Registriert: Sonntag 18. Januar 2015, 16:55

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()
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

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.
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten