CAD STEP EXPORT
- 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
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.
- noisefloor
- User
- Beiträge: 3858
- 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
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
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.
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.
- noisefloor
- User
- Beiträge: 3858
- 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
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
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?
Im Prinzip möchte ich die bereitgestellten Funktionen benutzen und dann das Ergebnis speichern. Ist das nicht möglich?
- noisefloor
- User
- Beiträge: 3858
- 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
was vielleicht geht: FreeCAD kannst du über Python skripten und FreeCAD besitzt auch die Möglichkeit, STEP-Datei zu exportieren.
Gruß, noisefloor
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.
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.
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.
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?
und die STL-Datei stellt dann einen Körper irgendeiner Art dar, den ich im CAD öffnen kann?
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.
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.
- noisefloor
- User
- Beiträge: 3858
- 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
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
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.
@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.
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.
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.
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.
- noisefloor
- User
- Beiträge: 3858
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Äh... STL Daten bestehen _nur_ aus Dreiecksflächen...Ich hoffe, dass in der STL auch die Informationen stehen, dass das jeweilige CAD dann weiß, dass es sich um Flächen handelt.
Gruß, noisefloor