Autor
|
Thema: Report Datei via Python Script ausgeben lassen (1793 mal gelesen)
|
vw-student Mitglied Berechnungsingenieur
Beiträge: 543 Registriert: 07.06.2005 IDEAS 12m4 ABAQUS/CAE 6.10-1 ADAMS MD R3 Matlab R2007a Mathcad 14
|
erstellt am: 15. Mrz. 2010 17:39 <-- editieren / zitieren --> Unities abgeben:
Der Start meiner Jobs über ein Python Script läuft dank des Forums. Es klappt auch, dass ich in einer Schleife alle in einem bestimmten Ordner liegenden inp Dateien durchrechnen lasse. Nun würde ich auch gern für jede odb ein rpt File automatisiert ausgeben lassen. Da ich echt keine Ahnung von Python habe, habe es über den Macro Manager versucht und mir ein Script aufgezeichnet. Nur leider funktioniert es nicht so ganz, wenn ich dieses Script mit Variablen versehen will und in mein eigentliches Script einbinde. Vielleicht hat ja jemand ein kleines Template für mich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vw-student Mitglied Berechnungsingenieur
Beiträge: 543 Registriert: 07.06.2005 IDEAS 12m4 ABAQUS/CAE 6.10-1 ADAMS MD R3 Matlab R2007a Mathcad 14
|
erstellt am: 16. Mrz. 2010 11:50 <-- editieren / zitieren --> Unities abgeben:
Also so langsam verzweifel ich. Ich bekomm es einfach nicht hin mir die Variable COORD in rpt File via Python schreiben zu lassen. Anbei mal mein Script. Evtl kann ja jemand helfen. Code: #from abaqus import * #from abaqusConstants import * import osabaquscommand = 'abaqus job=' #sollte unbeding verwendet, da sonst Rechnungen parallel laufen modus = ' interactive' #Wieviele CPUS sollen verwendet werden? ncpus = ' cpus=8' for i in range(7,9): jobname = 'dateiname'+str(i) oscommand = abaquscommand +jobname +modus +ncpus os.system(oscommand) print 'Job '+jobname+' beendet' ################################################################################################ odbpath = jobname+'.odb' o1 = session.openOdb(name=odbpath) session.viewports['Viewport: 1'].setValues(displayedObject=o1) odb = session.odbs[odbpath] nf = NumberFormat(numDigits=9, precision=0, format=ENGINEERING) session.fieldReportOptions.setValues(printTotal=OFF, printMinMax=OFF, numberFormat=nf) session.writeFieldReport(fileName=jobname+'.rpt', append=OFF, sortItem='Node Label', odb=odb, step=1, frame=1, outputPosition=NODAL, variable=(('COORD', NODAL, ((COMPONENT, 'COOR1'), (COMPONENT, 'COOR2'), (COMPONENT, 'COOR3'), )), )) ################################################################################################ else: print 'Ende' ################################################################################################ ###############################################################################################
Also wie gesagt: ich habe gestern das erste Mal mit Python gearbeitet. Demzufolge hab ich nicht wikrlich viel Ahnung von Python. Aktueller Fehler ist folgender: session ist wohl nicht definiert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vw-student Mitglied Berechnungsingenieur
Beiträge: 543 Registriert: 07.06.2005 IDEAS 12m4 ABAQUS/CAE 6.10-1 ADAMS MD R3 Matlab R2007a Mathcad 14
|
erstellt am: 16. Mrz. 2010 13:32 <-- editieren / zitieren --> Unities abgeben:
Ich hab jetzt fast alles so wie ich es will. Die Koordinaten werden in eine txt Datei geschrieben, aber leider versteh ich nicht so ganz was da alles drin steht. Der Output sieht wie folgt aus: NodeIDarray([COORD1, COORD2, COORD3], 'd') NodeIDarray([COORD1, COORD2, COORD3], 'd') NodeIDarray([COORD1, COORD2, COORD3], 'd') NodeIDarray([COORD1, COORD2, COORD3], 'd')
Mich stört jetzt das array sowie die Klammern und 'd' am Ende. Sprich ich brauch die Ausgabe: NodeID,COORD1,COORD2,COORD3 Wäre nett, wenn mir jemand nen Tipp geben könnte. Anbei mein Code:
Code:
import osabaquscommand = 'abaqus job=' #sollte unbeding verwendet, da sonst Rechnungen parallel laufen modus = ' interactive' #Wieviele CPUS sollen verwendet werden? ncpus = ' cpus=8' for i in range(7,9): jobname = 'dateiname'+str(i) oscommand = abaquscommand +jobname +modus +ncpus os.system(oscommand) print 'Job '+jobname+' beendet' ################################################################################################ from odbAccess import * from abaqusConstants import * odbpath = jobname+'.odb' odb = openOdb(path=odbpath) lastframe = odb.steps['name'].frames[-1] coordinates = lastframe.fieldOutputs['COORD'] nodes = coordinates.getSubset(region=odb.rootAssembly.nodeSets[' ALL NODES']) datei = file(jobname+'.rpt','w') for x in nodes.values: datei.write(str(x.nodeLabel)+str(x.data)+'\n') datei.close() odb.close() ################################################################################################ else: print 'Ende' ################################################################################################ ################################################################################################
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vw-student Mitglied Berechnungsingenieur
Beiträge: 543 Registriert: 07.06.2005 IDEAS 12m4 ABAQUS/CAE 6.10-1 ADAMS MD R3 Matlab R2007a Mathcad 14
|
erstellt am: 16. Mrz. 2010 18:41 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|