Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Python: Daten aus XY Data Manager lesen und in Datei schreiben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Python: Daten aus XY Data Manager lesen und in Datei schreiben (4988 mal gelesen)
sakaguchinet
Mitglied



Sehen Sie sich das Profil von sakaguchinet an!   Senden Sie eine Private Message an sakaguchinet  Schreiben Sie einen Gästebucheintrag für sakaguchinet

Beiträge: 31
Registriert: 18.05.2010

Abaqus 6.11, Python 3.1

erstellt am: 18. Mai. 2010 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


eigenfreq.jpg

 
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



Sehen Sie sich das Profil von Jeremy an!   Senden Sie eine Private Message an Jeremy  Schreiben Sie einen Gästebucheintrag für Jeremy

Beiträge: 129
Registriert: 04.02.2009

erstellt am: 18. Mai. 2010 11:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sakaguchinet 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von sakaguchinet an!   Senden Sie eine Private Message an sakaguchinet  Schreiben Sie einen Gästebucheintrag für sakaguchinet

Beiträge: 31
Registriert: 18.05.2010

Abaqus 6.11, Python 3.1

erstellt am: 18. Mai. 2010 11:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


eigenfreq2.jpg

 
Hallo,

danke für die schnelle Antwort. Anbei ein Screenshot der Fehlermeldung (den Dateipfad habe ich wegradiert!)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten1983
Mitglied
Doktorand


Sehen Sie sich das Profil von carsten1983 an!   Senden Sie eine Private Message an carsten1983  Schreiben Sie einen Gästebucheintrag für carsten1983

Beiträge: 125
Registriert: 11.10.2007

erstellt am: 18. Mai. 2010 12:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sakaguchinet 10 Unities + Antwort hilfreich

Nimm doch mal die eine der 2 eröffnenden Klammern von xyPlot weg.
Dann kommt zumindest keine Syntaxwarnung mehr.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sakaguchinet
Mitglied



Sehen Sie sich das Profil von sakaguchinet an!   Senden Sie eine Private Message an sakaguchinet  Schreiben Sie einen Gästebucheintrag für sakaguchinet

Beiträge: 31
Registriert: 18.05.2010

Abaqus 6.11, Python 3.1

erstellt am: 18. Mai. 2010 12:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ok, nun heißt es in der gleichen Zeile: NameError: name 'xyPlot' is not defined

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jeremy
Mitglied



Sehen Sie sich das Profil von Jeremy an!   Senden Sie eine Private Message an Jeremy  Schreiben Sie einen Gästebucheintrag für Jeremy

Beiträge: 129
Registriert: 04.02.2009

erstellt am: 18. Mai. 2010 14:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sakaguchinet 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von sakaguchinet an!   Senden Sie eine Private Message an sakaguchinet  Schreiben Sie einen Gästebucheintrag für sakaguchinet

Beiträge: 31
Registriert: 18.05.2010

Abaqus 6.11, Python 3.1

erstellt am: 18. Mai. 2010 15:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


eigenfreq3.jpg

 
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



Sehen Sie sich das Profil von Jeremy an!   Senden Sie eine Private Message an Jeremy  Schreiben Sie einen Gästebucheintrag für Jeremy

Beiträge: 129
Registriert: 04.02.2009

erstellt am: 18. Mai. 2010 15:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sakaguchinet 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von carsten1983 an!   Senden Sie eine Private Message an carsten1983  Schreiben Sie einen Gästebucheintrag für carsten1983

Beiträge: 125
Registriert: 11.10.2007

erstellt am: 18. Mai. 2010 15:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sakaguchinet 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von sakaguchinet an!   Senden Sie eine Private Message an sakaguchinet  Schreiben Sie einen Gästebucheintrag für sakaguchinet

Beiträge: 31
Registriert: 18.05.2010

Abaqus 6.11, Python 3.1

erstellt am: 18. Mai. 2010 16:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Jeremy an!   Senden Sie eine Private Message an Jeremy  Schreiben Sie einen Gästebucheintrag für Jeremy

Beiträge: 129
Registriert: 04.02.2009

erstellt am: 18. Mai. 2010 17:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sakaguchinet 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz