796x
004622
2020-08-12

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

' 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.