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.