Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Python,

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, (2533 mal gelesen)
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
i6231701
Mitglied


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

Beiträge: 5
Registriert: 12.12.2008

erstellt am: 19. Aug. 2009 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

Hallo zusammen,

das wichtigste vorweg, ich bin in Abaqus Python Scripting leider vollkommen(!) unbedarft 

Der Makrorecorder hilft in meinem Fall nicht weiter, da er die gewünschten Aktionen nicht aufzeichent!

Ich möchte über: Tools -> Ouery -> "General Queries": Node -> "Visualization Module Queries": Probe values

bestimmte Knoten auswählen (immer die gleichen, daher könnten diese im Skript fest verdrahtet bleiben) und deren Werte (z.B Mises)
in eine Datei schreiben.

Das lässt sich wahrscheinlich relativ einfach umsetzen, weis jemand wie 

Schon mal DANKE im Voraus!!

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

kutscher81
Mitglied
Doktorand


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

Beiträge: 20
Registriert: 19.08.2009

erstellt am: 19. Aug. 2009 16:38    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 i6231701 10 Unities + Antwort hilfreich

Hi,

einen Makrorecorder unter Abaqus kenne ich ehrlich gesagt nicht, aber alle deine Aktionen werden zum einen in einer rec-Datei gespeichert, die findest du in dem Ordner, in dem du dein Modell abspeicherst, und zum anderen werden alle Aktionen auch noch in ein Session-replay file gespeichert, einer rpy-Datei. Die rec-Datei wird gelöscht sobald du Abaqus beendest. Die rpy-Dateien werden eventuell auch durchnummeriert. Jedenfalls kannst du mit diesen Dateien und dem Scripting Manual ziemlich gut eigene Scripte erzeugen. Das nur mal so allgemein.

Dein spezielles Problem kannst du wie folgt lösen: Wenn du ein Job gerechnet hast und im Visualization-Modul bist, dann erzeuge ein x-y Plot aus deinem field output, der sollte schon die gewünschten Ausgabe-Variablen enthalten, dort kannst du auswählen an welcher Stelle du den Output haben möchtest, u.a. unique nodal. Dann wählst du noch aus was für diesen Knoten angezeigt werden soll, z.B. Mises. Einen Tab weiter kannst du dir die Knoten über deren Label wählen. Dann klickst du auf Plot und der Kram wird dir angezeigt. Abschließend erzeugst du ein report-file des current viewport. Das report-file ist deine gewünschte Datei, die die gewünschten outputs enthält. Den ganzen Kram guckst du dir dann über das rec-file an und du kannst den Code fast eins zu eins übernehmen, um ihn in ein Script einzubauen.

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

i6231701
Mitglied


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

Beiträge: 5
Registriert: 12.12.2008

erstellt am: 19. Aug. 2009 17: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

Hallo,

.... den Markorekorder gibt es unter: File -> Macro Manager -> Create ...


Danke für den Hinweis mit den XY Plots, auf die Idee kam ich in der Zwischnzeit auch schon. Heraus kommt dabei folgendes


from abaqus import *
from abaqusConstants import *
import __main__

def Macro1():
    import visualization
    import xyPlot
    import displayGroupOdbToolset as dgo
    odbName=session.viewports[session.currentViewportName].odbDisplay.name
    session.odbData[odbName].setValues(activeFrames=(('AnonymousSTEP1', (80, )), ))
    odb = session.odbs['irgend_eine.odb']
    session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('U',
        NODAL, ((INVARIANT, 'Magnitude'), )), ), nodeLabels=(('PART-1-1', (
        '982702', )), ))

    ... usw.
   
   
Praktisch wäre es nun noch, wenn man den Step-Namen und den in diesem Fall letzten Frame nicht händisch vorgeben müsste. Lässt sich irgendwie abfragen wie der Name des z.B. ersten Steps ist und wieviele Frames dieser hat?

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

HerrHansen
Mitglied
Dipl.-Ing.


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

Beiträge: 257
Registriert: 03.12.2005

Abaqus/CAE 6.3 bis 6.12

erstellt am: 20. Aug. 2009 08:19    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 i6231701 10 Unities + Antwort hilfreich

Anzahl der frames:
len(session.odbs[abcxyz].steps[abcxyz].frames)

Name erster Step:
session.odbs(abcxyz).steps.keys()[0]

Wenn du im Command line interface jeweils "print" davor schreibst, kannst du dir die Ausgaben "live" anschauen.

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

kutscher81
Mitglied
Doktorand


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

Beiträge: 20
Registriert: 19.08.2009

erstellt am: 20. Aug. 2009 09:36    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 i6231701 10 Unities + Antwort hilfreich

Hmm...

Ich plotte meist über alle Steps und alle Frames, da stellt sich mir die Frage nicht. Darüber hinaus erzeuge ich meine Steps auch mit einem Python-Script und gebe dort direkt den Namen vor, den ich dann später aufrufe, wenn ich ihn brauche.

Schau mal in die Dokumentation (im Scripting Manual), wie der Befehl dort erklärt wird, vielleicht ist es gar nicht nötig, den Step und den Frame vorzugeben.

session.odbData[odbName].setValues(activeFrames=(('AnonymousSTEP1', (80, )), ))
    odb = session.odbs['irgend_eine.odb']
So wie ich diesen Befehl verstehe, wählst du hier einen speziellen Step und einen speziellen Frame, wenn du diesen Befehl weglässt, dann bekommst du die Werte von allen Frames und allen Steps oder willst du das gar nicht?

Ansonsten kann dir hoffentlich ein anderer Forumsteilnehmer weiterhelfen.

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

i6231701
Mitglied


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

Beiträge: 5
Registriert: 12.12.2008

erstellt am: 20. Aug. 2009 14:36    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

Besten Dank für die Hilfestellung!

Meine Lösung sieht nun so aus:

from abaqus import *
from odbAccess import *
from abaqusConstants import *
import __main__

           
knoten = [1526573,1526574,1526838]
odbname = "blablubb.odb"
out_file = "output.txt"
var = "U"


odb = openOdb(path=odbname);

# Step 1
step = odb.steps.keys()[0]
print "Step : " + step

# -1: letzter Frame des Steps
# Ansonsten Frame Nr.
lastFrame = odb.steps[step].frames[-1]

variable=lastFrame.fieldOutputs[var]
fieldValues=variable.values

f=open(out_file, 'w')

for v in fieldValues:
    if knoten.count(v.nodeLabel) != 0:
        # Hier die Formatierung der Ausgaben anpassen
        print 'Node = %d U[x] = %6.4f, U[y] = %6.4f' % (v.nodeLabel, v.data[0], v.data[1])
        f.write("Node = " + str(v.nodeLabel) + "  U[x]= " + str(v.data[0]) + "  U[y]= " + str(v.data[1]) +"\n")

f.close()

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)2020 CAD.de | Impressum | Datenschutz