796x
004622
12.08.2020

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:  If 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.