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.