Question :
Comment entrer ou lire un spectre de réponse via l'interface COM dans DYNAM Pro ?
Réponse :
L'interface COM vous permet de lire ou de créer un spectre de réponse défini par l'utilisateur dans RFEM et RSTAB.
Pour la conversion, l'interface avec le module (IDynamModule) doit être obtenue via l'interface avec le modèle RFEM (IModel). Cette interface est ensuite utilisée pour créer le cas de module (IModuleCase). IModuleCase inclut la fonction GetRSParams, qui permet de lire les paramètres du spectre de réponse. D'un autre côté, la fonction SetRSParams peut écrire de nouvelles données. L'exemple de code suivant permet de clarifier la situation :
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: Si Err.Number 0 Then MsgBox Err.description, , Err.Source
iMod.GetApplication.UnlockLicense
Set iMod = Nothing
Set iApp = Nothing
Le spectre de réponse a été créé selon l'EN 1998-1:2010 et comporte 11 points. Tout d'abord, un tableau de type RSTableRow avec 11 éléments a été créé, rempli de données, puis enregistré sous la propriété UserDefinedTable. Le transfert est effectué à l'aide de la commande SetRSParams.