770x
004622
12.8.2020

Dotaz

Jak mohu v přídavném modulu DYNAM Pro zadat resp. přečíst spektrum odezvy pomocí rozhraní COM?


Odpověď:

Rozhraní COM umožňuje načíst nebo vytvořit uživatelské spektrum odezvy v programech RFEM a RSTAB.

Pro realizaci je nutné nejdříve pomocí rozhraní k modelu RFEM (IModel) získat rozhraní z modulu (IDynamModul). Toto rozhraní pak slouží k vytvoření případu modulu (IModuleCase). IModuleCase obsahuje funkci GetRSParams, pomocí které lze nejdříve načíst parametry pro spektrum odezvy. Funkce SetRSParams naopak umí zapsat nová data. Následující příklad kódu to objasňuje:

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

Spektrum odezvy bylo vytvořeno s přihlédnutím k normě EN 1998-1:2010 a má 11 bodů. Nejdříve se vytvořilo pole typu RSTableRow s 11 prvky, vyplnilo se daty a poté uloženo pod vlastností UserDefinedTable. Přenos se provádí příkazem SetRSParams.