868x
004622
12. August 2020

Antwortspektrum in DYNAM Pro über die COM-Schnittstelle

Wie kann ich über die COM-Schnittstelle in DYNAM Pro ein Antwortspektrum eingeben bzw. auslesen?


Antwort:

Mit Hilfe der COM Schnittstelle kann sowohl in RSTAB als auch RFEM ein benutzerdefiniertes Antwortspektrum ausgelesen oder auch angelegt werden.

Für die Umsetzung muss zunächst über das Interface zum RFEM Modell (IModel) das Interface zum Modul geholt werden (IDynamModul). Über dieses Interface wird dann das zum Modulfall angelegt (IModuleCase). IModuleCase beinhaltet die Funktion GetRSParams mit deren Hilfe die Parameter für das Antwortspektrum zunächst ausgelesen werden können. Die Funktion SetRSParams als Gegenspieler kann die neuen Daten schreiben. Im Folgenden ein Beispielcode zur Verdeutlichung:

Dim iApp As RFEM5.Application
Dim iMod As RFEM5.model
Set iApp = GetObject(, "RFEM5.Application")

Dim rs_no As Integer
rs_no = 1

On Error GoTo e

    ' Checks RS-COM license and locks the application for using by COM.
    iApp.LockLicense

    Set iMod = iApp.GetActiveModel

    '  get module interface
    Dim iDyn As IDynamModule
    Set iDyn = iMod.GetModule("DynamPro")

    '  get module case interface
    Dim iDynCase As IModuleCase
    Set iDynCase = iDyn.GetData
    
    '  set response spectra parameters
    Dim rspara As RSParams
    rspara = iDynCase.GetRSParams(rs_no)
    
    Dim rs_spec(0 To 10) As RSTableRow
    
    Dim index As Integer
    index = 0
    rs_spec(index).s = 0.6
    rs_spec(index).T = 0
    
    index = 1
    rs_spec(index).s = 1.33
    rs_spec(index).T = 0.153
    
    index = 2
    rs_spec(index).s = 1.33
    rs_spec(index).T = 0.4
    
    index = 3
    rs_spec(index).s = 1.204
    rs_spec(index).T = 0.443
    
    index = 4
    rs_spec(index).s = 1.07
    rs_spec(index).T = 0.5
    
    index = 5
    rs_spec(index).s = 0.7
    rs_spec(index).T = 0.761
    
    index = 6
    rs_spec(index).s = 0.508
    rs_spec(index).T = 1.051
    
    index = 7
    rs_spec(index).s = 0.367
    rs_spec(index).T = 1.453
    
    index = 8
    rs_spec(index).s = 0.267
    rs_spec(index).T = 1.995
    
    index = 9
    rs_spec(index).s = 0.16
    rs_spec(index).T = 2.584
    
    index = 10
    rs_spec(index).s = 0.16
    rs_spec(index).T = 5
    

    rspara.UserDefinedTable = rs_spec
    rspara.Comment = "test rs"
    rspara.DefinitionType = ResponseSpectraType.UserDefinedRS
    rspara.description = "test rs via COM"
    rspara.Number = rs_no
    
    iDynCase.SetRSParams rs_no, rspara
    
e:  If Err.Number <> 0 Then MsgBox Err.description, , Err.Source
    
    iMod.GetApplication.UnlockLicense
    Set iMod = Nothing
    Set iApp = Nothing

Das Antwortspektrum wurde in Anlehnung an EN 1998-1:2010 erstellt und hat 11 Punkte. Es wurde zuerst ein Array von Typ RSTableRow mit 11 Elementen angelegt, mit Daten gefüllt und dann unter der Eigenschaft UserDefinedTable abgelegt. Die Übertragung erfolg mit dem Befehl SetRSParams.


Autor

Herr Günthel kümmert sich im Kundensupport um die Anliegen unserer Anwender.

Downloads


;