518x
001711
2020-08-12

[PT] FAQ 004622 | Como é que posso introduzir ou ler um espectro de resposta através da interface COM no DYNAM ...

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.