Autor
|
Thema: Python - Set abfragen (984 mal gelesen)
|
vespa71 Mitglied
Beiträge: 11 Registriert: 01.06.2004
|
erstellt am: 27. Aug. 2008 14:50 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Problem bezüglich Python. Ich habe verschiedene Sets mit jeweils einem Knoten definiert und möchte nun für alle Sets die Temperatur (nt11) abfragen und in einer Datei ausgeben lassen. Wenn ich die Knotennummer direkt angebe, funktioniert die Ausgabe (siehe unten), allerdings schaffe ich es nicht die Sets direkt anzusprechen. Hat jemand eine Idee? Vorab vielen Dank! Code: from odbAccess import * from abaqusConstants import * odb = openOdb (path='/home/test.odb') step = odb.steps['Abkuehlung'] region = step.historyRegions['Node PART-1-1.17814'] nt11Data = region.historyOutputs['NT11'].data temperature = open('temperature.txt','w') for time, nt11 in nt11Data: temperature.write('%10.4E %10.4E\n' % (time, nt11)) temperature.close() odb.close()
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten1983 Mitglied Doktorand
Beiträge: 125 Registriert: 11.10.2007
|
erstellt am: 28. Aug. 2008 16:07 <-- editieren / zitieren --> Unities abgeben: Nur für vespa71
Versuchst du den selben Code, nur dass du statt 'Node PART-1-1.17814' dann an diese Stelle ein Set einträgst? Wenn ja würd ich sagen geht es so nicht. Im Scripting Reference Manual steht dazu drin, dass du ein Historypoint Object an dieser Stelle brauchst (und kein Set). Deshalb musst du dir Gedanken machen, wie du aus deinem Set die Punkte in geeigneter From extrahierst. Im einfachsten Fall könnte das so funktionieren: Code:
setKeys = mdb.models['Model-1'].parts['Part-1'].sets.keys() K1,nodeKeys = 0,[] while K1<len(setKeys): nodeKeys.append(mdb.models['Model-1'].parts['Part-1'].sets[setKeys[K1]].nodes) #das sollte dir eine Liste mit Knotennamen als Strings liefern K1+=1
Mit den Elementen dieser Liste von Knotennummern(die zu der setKeys Liste korrespondiert) könntest du im nächsten Schritt in die historyRegions rein gehen. Das ist allerdings ohne Gewähr, weil ich es nicht testen konnte ohne erst die odb anzulegen und alles so zu nennen wie du es hast.. edit: Ein Variablenname war falsch
[Diese Nachricht wurde von carsten1983 am 28. Aug. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vespa71 Mitglied
Beiträge: 11 Registriert: 01.06.2004
|
erstellt am: 02. Sep. 2008 11:01 <-- editieren / zitieren --> Unities abgeben:
Ja, ich hatte einfach versucht statt der Knotennummer das Set einzutragen. Hat natürlich nicht funktioniert ... Vielen Dank für Deinen Tipp! Hat bei mir leider nicht funktioniert, kann aber auch gut an meinen nur rudimentären Python-Kenntnissen liegen. Habe mich jetzt damit beholfen, die Knotennummern aus dem Inputfile zu kopieren, in eine Liste zu packen und nacheinander die Temperaturen auszugeben. Nicht sehr elegant, aber es funktioniert Ich bekomme jetzt für jeden Knoten Zeit und Temperatur. Ist es möglich, eine Spalte mit der Zeit und daneben die Temperaturen der einzelnen Knoten jeweils in einer Spalte auszugeben? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten1983 Mitglied Doktorand
Beiträge: 125 Registriert: 11.10.2007
|
erstellt am: 02. Sep. 2008 12:03 <-- editieren / zitieren --> Unities abgeben: Nur für vespa71
Die Ausgabe in eine Datei ist am einfachsten wie folgt möglich: Code:
f=open('C:\....\name.txt','w') f.write(str(wert1)+', '+str(wert2)+', '+str(wert3)+'\n') f.close()
das erzeugt dir drei Spalten, wo jeweils wert1, wert2 und wert3 durch Kommas und ein paar Freizeichen getrennt werden. Die str() sind nötig weil nur Strings in die Datei geschrieben werden können.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|