CAD STEP EXPORT

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.
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Hallo. Ich habe Daten in einem Dictionary, welche einen Körper darstellen. Weiß jemand, wie ich auf einfache Weise diesen Körper exportieren kann? Welches Modul bietet diese Funktionalität?
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Hallo,

du könntest dir dazu mal folgendes Paket anschauen:

https://pypi.python.org/pypi/aocxchange/0.3.0

Damit solltest du das Dictionary als STEP exportieren können.

Mfg
When we say computer, we mean the electronic computer.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das könnte schwierig werden... Was ist das für ein Dict? Hast du dir die Schlüssel selber ausgedacht? Oder folgen die einer Spez? Wenn ja, welcher?

Gruß, noisefloor
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Hallo.

Daas mit aocxchange hatte ich zwar schon gesehen, aber das erfordert weitere Installationen. Soweit ich gesehen habe benötigt man dort pythonocc und aocutils. Dann habe ich das so verstanden das man da mit wxpython hantieren muss. Ich verwende aber tkinter. Die Installation von pythonocc hatte ich nicht hinbekommen.

Mein Dictionary hat diese Form:
{'X' : {'Y' : [], 'Z' : []}}

und es werden sowohl für die keys als auch die Listeneinträge nur Zahlen verwendet.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

dann wir das nicht funktionieren. Da kannst ja auch nicht erwarten, dass irgendwein Konverter auto-magisch eine von dir ersonnene Datenstruktur erkennt und dann in eine STEP-Datei oder so umwandelt...

Theoretisch könntest du eine ASCII-STL Datei selber erstellen. Da musst du dein Modell "nur" in Dreiecke zerlegen. Womit du zwangsläufig auch nur eine Nährung bekommst und keine 1:1 Abbildung deines Models.

Gruß, noisefloor
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

HAllo. So war das auch nicht gemeint. Ich dachte, ich könnte erst einmal Datenpunkte an das Modul schicken und dann dessen Funktionalitäten benutzen um 3d-Formen zu erstellen und in einem STEP-Format zu exportieren.
Im Prinzip möchte ich die bereitgestellten Funktionen benutzen und dann das Ergebnis speichern. Ist das nicht möglich?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

was vielleicht geht: FreeCAD kannst du über Python skripten und FreeCAD besitzt auch die Möglichkeit, STEP-Datei zu exportieren.

Gruß, noisefloor
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Also du meinst, dass mit pythonocc oder/und aocxchange mein Vorhaben nicht umsetzbar ist?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich glaube du solltest dein Vorhaben besser beschreiben. Was sind das für Daten, welche Art Objekte soll da rausfallen, etc.
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Hallo. Im Grunde mache ich Berechnungen mit dem Ziel eine Kontur im y-z-Koordinatensystem zu bestimmen. Es ensteht ein geschlossener Linienzug. Einfachste Form wäre ein Kreis. Wenn ich nun noch x-Stellen angebe, dann habe ich eine ähnliche Kontur aber im Raum verschoben. Diese können größer oder kleiner sein. Es entsteht förmlich gesehen eine Röhre oder ein Tunnel.
Meine Daten befinden sich in Nested Dictionarys. Ich möchte diese Punkte mit einem CAD-Modul versenden oder verbinden und dort auch Linienzüge bilden. Diese im Raum befindlichen Linienzüge würde ich dann über ein Wireframe darstellen lassen. Also sollen dann Flächen abgebildet werden. Das ganze möchte ich als STEP exportieren um es im CAD-System zu importieren.

Ist das nun etwas verständlicher? Man könnte es auch als Hüllkurven bezeichnen.
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du keine parametrischen Flächen und andere mathematisch exakte Geometrien brauchst (und so klingt das), bist du mit STL IMHO besser bedient. Das sollte deine CAD Software genauso schlucken, und da gibt es diverse pure Python libraries.
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Da hast du völlig recht. Ich mache nichts parametrisch. Das Programm läuft ja auch eigenständig. Es soll nur der reine Export bedient werden. Ich möchte CAD-System unabhängig vom Dateiformat verwenden.
und die STL-Datei stellt dann einen Körper irgendeiner Art dar, den ich im CAD öffnen kann?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja.
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Das Problem für mich ist, dass ich nicht weiß, was für ein Format und was für Daten in der STL sind. Ist das eine Textdatei? Ich habe mir mal numpy-stl angeschaut. Da werden Mesh-Objekte beschrieben. Ich weiß aber nichts damit anzufangen.
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein mesh ist ein Netz. Aus punkten & Linien die sie verbinden. Exakt so wie du das selbst beschreibst. Mit ist nicht so klar wieso du damit konzeptionell Probleme hast, wenn dir STEP klar ist. Letzteres ist um Größenordnungen komplizierter.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

STL ist sowas wie das simpelste Format für 3D Körper. Das verstehen alle CAD-Programme. Außerdem wird es AFAIK als Datenquelle für 3D-Drucker genutzt.

Wenn du mal den Wikipedia-Artikel liest, sollte es eigentlich klarer sein.

Gruß, noisefloor
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Ich habe programmiertechnisch mit beiden Varianten noch nicht gearbeitet. Ich möchte mir nun so eine Art Flächenkörper ins CAD holen. Wenn das mit dem Mesh geht, dann ist das auch OK für mich. Mit numpy habe ich auch bei Matplotllib schon gearbeitet. Das würde scih also anbieten.
Kniffte
User
Beiträge: 64
Registriert: Dienstag 27. September 2016, 11:05

@stefanxfg:
Mit Hilfe des Links von noisefloor kannst du ja nachvollziehen wie eine .stl aufgebaut ist.
Wenn man davon ausgeht, dass deine Kurvenzüge auf der y-z-Ebene liegen, nur in z-Richtung zueinander verschoben sind und jeweils die gleiche Anzahl von Punkten haben, dann:
- musst du die Fläche, die zwischen Kurvenzug 1 und Kurvenzug 2 in Dreiecke aufteilen
- den Normalenvektor für jedes Dreieck berechnen/erzeugen
- alles im entsprechenden Format in eine .stl packen

Siehe auch http://pythonhosted.org/numpy-stl/usage ... -and-faces
Im Grunde hast du ja deine Punkte der Kurvenzügen (vertices).
Dann musst du noch deine Einzelflächen (faces) aus den zur Verfügung stehenden Punkten (vertices) definieren und wie
im Link die zugehörigen Normalenvektoren erzeugen
Eine Einzelfläche wäre in deinem Fall
[Koordinanten Punkt1 von Kurvenzug1, Koordinanten Punkt2 von Kurvenzug1, Koordinanten Punkt1 von Kurvenzug2]
wie für diese Fläche der Normalenvektor zu berechnen ist, findest du auch im Link zu numpy-stl.

Um mal bei deinem Minimalbsp. eines Kreisquerschnittes zu bleiben, wird dieser dann im CAD als .stl importiert kein Kreis mehr sein,
sondern ein Polygon, dass je nach Anzahl der Punkte deiner Kurven kantig aussieht.

Interessant wäre noch zu wissen, warum du nicht einfach die Kurvenzüge mittels ihrer Punkte und deren x,y,z Koordinaten in´s CAD importierst
und dort die Fläche/ den Volumenkörper erzeugst? Jedes vernünftige CAD Programm kann Punktewolken importieren, die machen dir daraus auch direkt ne Kurve/ Spline und das Verbinden zu Flächen ist dann auch nicht mehr aufwändig.
stefanxfg
User
Beiträge: 85
Registriert: Sonntag 2. April 2017, 14:11

Danke für die Erklärung. Der Grund ist, dass ich programmunabhängig bleiben möchte. Als Ergebnis soll die fertige Datei exportiert werden, welche dann vom Benutzer importiert werden kann. Es ist eben eine Erleichterung der Arbeit, wenn man die Umwandlung nicht mehr von Hand machen muss.

Ich werde das mal ausprobieren. Vielleicht kann man dann noch eine Knovertierung von STL zu STEP machen. Oder es ist dann nicht mehr notwendig. Ich hoffe, dass in der STL auch die Informationen stehen, dass das jeweilige CAD dann weiß, dass es sich um Flächen handelt.

Ich habe gerade gesehen, dass man auch direkt von matplotlib ins stl exportieren kann. Vielleicht ist das ja die beste Wahl.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Ich hoffe, dass in der STL auch die Informationen stehen, dass das jeweilige CAD dann weiß, dass es sich um Flächen handelt.
Äh... STL Daten bestehen _nur_ aus Dreiecksflächen...

Gruß, noisefloor
Antworten