517x
001711
12.08.2020

[FR] FAQ 004622 | Comment puis-je entrer ou lire un spectre de réponse via l'interface COM dans DYNAM...

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.