766x
004622
2020-08-12

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