A interface COM permite ler ou criar um espectro de resposta definido pelo utilizador no RFEM e no RSTAB.
Para a conversão, é necessário obter a interface para o módulo (IDynamModule) através da interface para o modelo RFEM (IModel). Esta interface é então utilizada para criar um caso de módulo (IModuleCase). O IModuleCase inclui a função GetRSParams que pode ser utilizada para ler os parâmetros para o espectro de resposta. Por outro lado, a função SetRSParams pode escrever os novos dados. O seguinte código de exemplo esclarece isso:
- código.vb#
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
O espectro de resposta foi criado de acordo com a EN 1998‑1: 2010 e tem 11 pontos. Primeiro, foi criada uma matriz do tipo RSTableRow com 11 elementos, preenchida com dados e depois guardada na propriedade UserDefinedTable. A transferência é realizada utilizando o comando SetRSParams.