543x
001711
12. August 2020

[EN] FAQ 004622 | Wie kann ich über die COM-Schnittstelle in DYNAM Pro ein Antwortspektrum eingeb...

Frage:
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.



;