Autor
|
Thema: Python: Daten aus XY Data Manager lesen und in Datei schreiben (4988 mal gelesen)
|
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 18. Mai. 2010 11:37 <-- editieren / zitieren --> Unities abgeben:
Hallo, nach Beendigung der Rechnung und erstellter ODB möchte ich Daten (Eigenfrequenzen und -Moden) aus einem ODB lesen und in eine Text (oder besser CSV-Datei) schreiben. Der XY Datensatz liegt bereits vor (wurde erstellt - s. Anhang) und nennt sich _temp_1 Wenn ich ihn editiere (in Abaqus) bekomme ich die vollständige Tabelle mit allen X-Werten (Modes) und Y-Werten (dazugehörige Eigenfrequenzen). Habe das ganze versucht in Python zu schreiben (die Eigenfrequenzen sollen später mittels eines Algorithmus optimiert werden). Doch scheinbar ist der Text falsch (InvalidSyntax -> kenne mich noch nicht sehr gut aus!): Vielen Dank schonmal für die Hilfe! Code:
import odbAccess odb = session.odbs['temp1.odb'] xyList = xyPlot.xyDataListFromField((odb=odb, outputVariableName='Eigenfrequency: EIGFREQ for Whole Model', steps=('Step-1', ), ) xyp = session.XYPlot('_temp_1') chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] curveList = session.curveSet(xyData=xyList) chart.setValues(curvesToPlot=curveList) session.viewports['Viewport: 1'].setValues(displayedObject=xyp) x[1] = modenumber1 x[2] = modenumber2 x[3] = modenumber3 y[1] = eigenfreq1 y[2] = eigenfreq2 y[3] = eigenfreq3 session.writeXYReport(fileName='output.txt', appendMode=OFF, xyData=(x1, x2, x3, y1, y2, y3))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jeremy Mitglied
Beiträge: 129 Registriert: 04.02.2009
|
erstellt am: 18. Mai. 2010 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
Hallo, in der Fehlermeldung stet auch in welcher Zeile der Fehler aufgetreten ist. DAran kann man erkennen was falsch ist. Entweder nochmal in der Meldung nachschauen oder die gesante Fehlermeldung hier zeigen. Sonst können wir nur spekulieren. Vielleicht liegt der Fehler in der Zeilenumbrüchen innerhalb eines Befehls, das tritt am Anfang und mitten in deinem Script auf. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 18. Mai. 2010 11:52 <-- editieren / zitieren --> Unities abgeben:
|
carsten1983 Mitglied Doktorand
Beiträge: 125 Registriert: 11.10.2007
|
erstellt am: 18. Mai. 2010 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
|
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 18. Mai. 2010 12:48 <-- editieren / zitieren --> Unities abgeben:
|
Jeremy Mitglied
Beiträge: 129 Registriert: 04.02.2009
|
erstellt am: 18. Mai. 2010 14:12 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
Die Funktionen ds xyPlots müssen noch importiert werden. Am besten du schreibst zu BEginn des Scripts: Code: from Abaqus import *
Dann sind alle Funktionen geladen und du hast vollen Zugriff auf alle Module und deren Funktionen. Es gibt aber auch eigenes Modul zum xyPlot, das kenne ich aber nicht auswendig, ich vermute es heißt: Code: import xyPlot
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 18. Mai. 2010 15:11 <-- editieren / zitieren --> Unities abgeben:
Hallo, Danke, das hat mich auch schon ein Stück weitergebracht. (in der ersten Zeile muss "abaqus" jedoch klein geschrieben werden!) - "Abaqus" brachte einen Fehler. Nun erscheint folgende Fehlermeldung: Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jeremy Mitglied
Beiträge: 129 Registriert: 04.02.2009
|
erstellt am: 18. Mai. 2010 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
Ja Abaqus muss klein geschrieben werden, kann mal passieren. Zur neuen Fehlermeldung: Der Name der Outputvariablen solltest du anders wählen, nimm eine kurzen Namen ohne Leerzeichen und ohne Doppelpunkt oder andere Sonderzeichen. Ich nehme an, dass du diesen Name vorher selbst definiert hast oder er im aktuellen Fall nicht vorliegt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten1983 Mitglied Doktorand
Beiträge: 125 Registriert: 11.10.2007
|
erstellt am: 18. Mai. 2010 15:21 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
Die Fehlermeldung besagt, dass du dir nicht einfach Keywords für die Funktion xyDataListFromField ausdenken kannst In der Dokumentations dazu stehen als mögliche Keywords: odb, outputPosition und variable Diese drei musst du verwenden um den Befehl richtig zu verwenden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sakaguchinet Mitglied
Beiträge: 31 Registriert: 18.05.2010 Abaqus 6.11, Python 3.1
|
erstellt am: 18. Mai. 2010 16:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, @Jeremy: Habe den Namen selbst definiert (bzw. Abaqus hat ihm mir vorgegeben): Ich habe den vorliegenden Text aus dem rec File von Abaqus. Für mich ist es wohl die einfachste Methode, die Syntax zu lernen. Doch leider passen dann auch viele Befehle nicht (scheinbar). In der Doku steht geschrieben, dass in der Klammer von xyDataListFromField nur folgende Argumente stehen dürfen (wie Carsten schon sagte: odb, outputPosition und variable). Doch warum stehen bei mir andere drin und was haben sie dann zu bedeuten? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jeremy Mitglied
Beiträge: 129 Registriert: 04.02.2009
|
erstellt am: 18. Mai. 2010 17:08 <-- editieren / zitieren --> Unities abgeben: Nur für sakaguchinet
Ich habe mit dem rec-File noch nicht gearbeitet. Ich denke, dass es besser ist ein Macro aufzeichen zu lassen und dort die entsprechenden Befehle zufinden. (Ich hoffe mit einem rec-File meinst du nicht das aufgenommene Macor :-) ). Warum bei dir andere Befehle drin stehen, weiß ich leider nicht. Wie oben gesagt, zeichne die ganze Aktion mit dem Macro-Manager auf. Dann wissen wir mehr. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |