514x
001711
2020-08-12

[ES] FAQ 004622 | ¿Cómo puedo introducir o leer un espectro de respuesta a través de la interfaz COM en DYNAM ...

Pregunta:
¿Cómo puedo introducir o leer un espectro de respuesta a través de la interfaz COM en DYNAM Pro?

Respuesta:
La interfaz COM le permite leer o crear un espectro de respuesta definido por el usuario en RFEM y RSTAB.

Para la conversión, es necesario obtener la interfaz con el módulo (IDynamModule) a través de la interfaz con el modelo de RFEM (IModel). Esta interfaz se usa para crear el caso del módulo (IModuleCase). IModuleCase incluye la función GetRSParams, que se puede usar para leer los parámetros para el espectro de respuesta. Por otro lado, la función SetRSParams puede escribir datos nuevos. El siguiente código de ejemplo lo aclara:

Dim iApp As RFEM5.Application
Dim iMod como modelo RFEM5
Establecer iApp = GetObject (, "RFEM5.Application")

Dim rs_no como entero
rs_no = 1

On Error GoTo e

    ' Comprueba la licencia de RS-COM y bloquea la aplicación para su uso por COM.
    iApp.LockLicense

    Set iMod = iApp.GetActiveModel

    ' obtener la interfaz del módulo
    Dim iDyn como IDynamModule
    Establecer iDyn = iMod.GetModule ("DynamPro")

    ' obtener la interfaz del caso del módulo
    Dim iDynCase como IModuleCase
    Establecer iDynCase = iDyn.GetData

    ' establecer parámetros de espectros de respuesta
    Dim rspara como RSParams
    rspara = iDynCase.GetRSParams (rs_no)

    Dim rs_spec (0 a 10) como RSTableRow

    Dim index As Integer
    í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 = "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
    Establecer iMod = Nada
    Establecer iApp = Nada

El espectro de respuesta se creó según EN 1998-1:2010 y tiene 11 puntos. Primero, se creó una matriz de tipo RSTableRow con 11 elementos, se completó con datos y luego se guardó en la propiedad UserDefinedTable. La transferencia se realiza utilizando el comando SetRSParams.