Pergunta:
Como é que posso introduzir ou ler um espectro de resposta através da interface COM no DYNAM Pro?
Resposta:
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:
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
' Verifica a licença RS-COM e bloqueia a aplicação para utilização por COM.
iApp.LockLicense
Set iMod = iApp.GetActiveModel
' obter interface do módulo
Dim iDyn As IDynamModule
Defina iDyn = iMod.GetModule ("DynamPro")
' obter interface de caso de módulo
Dim iDynCase As IModuleCase
Defina iDynCase = iDyn.GetData
' definir parâmetros de espectro de resposta
Dim rspara As RSParams
rspara = iDynCase.GetRSParams (rs_no)
Dim rs_spec (0 a 10) como RSTableRow
Índice de dimensão As inteiro
índice = 0
rs_spec (índice) .s = 0,6
rs_spec (índice) .T = 0
índice = 1
rs_spec (índice) .s = 1,33
rs_spec (índice) .T = 0,153
índice = 2
rs_spec (índice) .s = 1,33
rs_spec (índice) .T = 0,4
índice = 3
rs_spec (índice) .s = 1,204
rs_spec (índice) .T = 0,443
índice = 4
rs_spec (índice) .s = 1,07
rs_spec (índice) .T = 0,5
índice = 5
rs_spec (índice) .s = 0,7
rs_spec (índice) .T = 0,761
índice = 6
rs_spec (índice) .s = 0,508
rs_spec (índice) .T = 1,051
índice = 7
rs_spec (índice) .s = 0,367
rs_spec (índice) .T = 1,453
índice = 8
rs_spec (índice) .s = 0,267
rs_spec (índice) .T = 1.995
índice = 9
rs_spec (índice) .s = 0,16
rs_spec (índice) .T = 2,584
índice = 10
rs_spec (índice) .s = 0,16
rs_spec (índice) .T = 5
rspara.UserDefinedTable = rs_spec
rspara.Comment = "test rs"
rspara.DefinitionType = ResponseSpectraType.UserDefinedRS
rspara.description = "testar 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
Definir 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.