Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  [Python-Script] FRF-Plot mit Phasenverlauf erstellen

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-Script] FRF-Plot mit Phasenverlauf erstellen (1266 mal gelesen)
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
Hadsenhagen
Mitglied


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

Beiträge: 3
Registriert: 26.07.2013

erstellt am: 26. Jul. 2013 11:44    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,

Ich verwende Abaqus 6.12.1.
Ich habe ein Script geschrieben, um automatisch einen Nachgiebigkeits-Frequenzgang mit dem zugehörigen Phasenverlauf in zwei Viewports untereinander darstellen zu können. Unmittelbar nach dem Script-Durchlauf siehts auch genauso aus wie ich es mir wünsche. Ich kann die Achsen, Legenden, usw. beliebig anpassen.

Nun bekomme ich aber absolut unkontrollierbare Fehlverhalten von Abaqus, sobald ich einem der Viewports eine andere ODB öffne oder einen Plot einer zweiten ODB hinzufügen möchte. Meistens zeigen dann beide Viewports synchron das gleiche an (z.B. die Phsae), und Änderungen werden nicht mehr übernommen. Manchmal kann ich auch beim Amplitudenplot unter Results->Options->Complex Form nichts mehrauswählen, obwohl der Viewport noch ein Chrat anzeigt. Das ganze verhält sich mmn recht wahllos, also frage ich mich, ob in meinem Script irgend etwas unsauber ist.

Ich bin ziemlich frustriert, weil ich etliche Stunden in etwas versenke, was mir eigentlich Zeit sparen sollte. Wenn jemand von euch einen Blick auf mein Script werfen könnte, wäre ich sehr dankbar.

Code:
from abaqus import *
from abaqusConstants import *
import visualization
import xyPlot

odb = session.odbs[session.odbs.keys()[0]]

# get maximum dimensions
old_vp = session.viewports[session.viewports.keys()[-1]]
old_vp.makeCurrent()
old_vp.maximize()

orig_x    = old_vp.currentOrigin[0]
orig_y    = old_vp.currentOrigin[1]
maxwidth  = old_vp.currentWidth
maxheight  = old_vp.currentHeight
mag_height = 2*maxheight/3
pha_height =  maxheight/3

old_vp.restore()

#create magnitude viewport
session.Viewport(name='magview', origin=(orig_x, orig_y+pha_height), width=maxwidth, height=mag_height)

# create phase viewport
session.Viewport(name='phaseview', origin=(orig_x, orig_y), width=maxwidth, height=pha_height)

# create convenience handles
mag = session.viewports['magview']
pha = session.viewports['phaseview']

mag.makeCurrent()
#mag.setValues(applyLinkedCommands=False)
mag.odbDisplay.basicOptions.setValues(numericForm=COMPLEX_MAGNITUDE)
mag.restore()

xy1 = xyPlot.XYDataFromHistory(odb=odb, outputVariableName='Spatial displacement: U1 PI: BLECH-1 Node 11 in NSET ANREGUNG', )
c1 = session.Curve(xyData=xy1)

xyp_mag = None

if 'XYPlot_magnitude' in session.xyPlots.keys():
    xyp_mag = session.xyPlots['XYPlot_magnitude']
else:
    xyp_mag = session.XYPlot(name='XYPlot_magnitude')

mag_chart = xyp_mag.charts[xyp_mag.charts.keys()[0]]
mag_chart.setValues(curvesToPlot=(c1, ), )
mag.setValues(displayedObject=xyp_mag)

pha.makeCurrent()
#pha.setValues(applyLinkedCommands=False)
pha.odbDisplay.basicOptions.setValues(numericForm=COMPLEX_PHASE)
pha.restore()

xy2 = xyPlot.XYDataFromHistory(odb=odb, outputVariableName='Spatial displacement: U1 PI: BLECH-1 Node 11 in NSET ANREGUNG', )
c2 = session.Curve(xyData=xy2)

xyp_pha = None

if 'XYPlot_phase' in session.xyPlots.keys():
    xyp_pha = session.xyPlots['XYPlot_phase']
else:
    xyp_pha = session.XYPlot(name='XYPlot_phase')

pha_chart = xyp_pha.charts[xyp_pha.charts.keys()[0]]
pha_chart.setValues(curvesToPlot=(c2, ), )
pha.setValues(displayedObject=xyp_pha)

# formatting the magnitude plot
mag.makeCurrent()

mag.viewportAnnotationOptions.setValues(legendFont='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')
mag.viewportAnnotationOptions.setValues(legendDecimalPlaces=4, legendNumberFormat=FIXED)

mag_chart.axes1[0].axisData.setValues(useSystemTitle=False, title='Frequenz [Hz]')
mag_chart.axes1[0].titleStyle.setValues(font='-*-arial-medium-r-normal-*-*-180-*-*-p-*-*-*')
mag_chart.axes1[0].labelStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')

mag_chart.axes2[0].axisData.setValues(useSystemTitle=False, title='Nachgiebigkeit [µm/N]')
mag_chart.axes2[0].titleStyle.setValues(font='-*-arial-medium-r-normal-*-*-180-*-*-p-*-*-*')
mag_chart.axes2[0].labelStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')
mag_chart.axes2[0].axisData.setValues(scale=LOG)

mag_chart.gridArea.style.setValues(fill=False)
mag_chart.legend.area.setValues(inset=True)
mag_chart.legend.textStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')
mag_chart.legend.titleStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')

mag.forceRefresh()

# formatting the phase plot
pha.makeCurrent()

pha.viewportAnnotationOptions.setValues(legendFont='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')
pha.viewportAnnotationOptions.setValues(legendDecimalPlaces=4, legendNumberFormat=FIXED)

pha_chart.axes1[0].axisData.setValues(useSystemTitle=False, title='Frequenz [Hz]')
pha_chart.axes1[0].titleStyle.setValues(font='-*-arial-medium-r-normal-*-*-180-*-*-p-*-*-*')
pha_chart.axes1[0].labelStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')

pha_chart.axes2[0].axisData.setValues(useSystemTitle=False, title='Phase [°]')
pha_chart.axes2[0].labelStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')
pha_chart.axes2[0].titleStyle.setValues(font='-*-arial-medium-r-normal-*-*-180-*-*-p-*-*-*')
pha_chart.axes2[0].axisData.setValues(maxAutoCompute=False)
pha_chart.axes2[0].axisData.setValues(maxValue=0, maxAutoCompute=False)
pha_chart.axes2[0].axisData.setValues(minAutoCompute=False)
pha_chart.axes2[0].axisData.setValues(minValue=-180, minAutoCompute=False)
pha_chart.axes2[0].axisData.setValues(scale=LINEAR)
pha_chart.axes2[0].axisData.setValues(tickMode=INCREMENT)
pha_chart.axes2[0].axisData.setValues(tickIncrement=90)
pha_chart.axes2[0].axisData.setValues(labelFormat=DECIMAL)
pha_chart.axes2[0].axisData.setValues(labelNumDigits=0)

pha_chart.gridArea.style.setValues(fill=False)
pha_chart.majorAxis2GridStyle.setValues(show=True)
pha_chart.majorAxis2GridStyle.setValues(style=DOTTED)
pha_chart.majorAxis2GridStyle.setValues(thickness=0.2)

pha_chart.legend.area.setValues(inset=True)
pha_chart.legend.textStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')
pha_chart.legend.titleStyle.setValues(font='-*-arial-medium-r-normal-*-*-140-*-*-p-*-*-*')

pha.forceRefresh()

mag.restore()
pha.restore()


Vielen Dank im Voraus!

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

Hadsenhagen
Mitglied


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

Beiträge: 3
Registriert: 26.07.2013

erstellt am: 26. Jul. 2013 16:35    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

Ich habe mittlerweile herausgefunden, dass beide Viewports dem gleichen Chart zugewiesen werden, sobald ich im Magnitude-Viewport den Inhalt einer anderen ODB plotten möchte.

Warum das geschieht, ist mir weiterhin völlig unklar..

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

Hadsenhagen
Mitglied


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

Beiträge: 3
Registriert: 26.07.2013

erstellt am: 07. Aug. 2013 14:01    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

Hat niemand eine Idee, was hier falsch läuft? Oder funktioniert das script bei euch problemlos?

Bin ratlos.. 

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