524x
001711
2020-08-12

[IT] FAQ 004622 | Come posso inserire o leggere uno spettro di risposta tramite l'interfaccia COM in DYNAM...

Domanda:
Come posso inserire o leggere uno spettro di risposta tramite l'interfaccia COM in DYNAM Pro?

Risposta:
L'interfaccia COM consente di leggere o creare uno spettro di risposta definito dall'utente in RFEM e RSTAB.

Per la conversione, è necessario ottenere l'interfaccia al modulo (IDynamModule) tramite l'interfaccia al modello RFEM (IModel). Questa interfaccia viene quindi utilizzata per creare il caso del modulo (IModuleCase). IModuleCase include la funzione GetRSParams, che può essere utilizzata per leggere i parametri per lo spettro di risposta. D'altra parte, la funzione SetRSParams può scrivere nuovi dati. Il seguente codice di esempio lo chiarisce:

Dim iApp As RFEM5.Application
Dim iMod As RFEM5.model
Imposta iApp = GetObject(, "RFEM5.Application")

Dim rs_no As Integer
rs_no = 1

On Error GoTo e

    ' Verifica la licenza RS-COM e blocca l'applicazione per l'utilizzo da parte di COM.
    iApp.LockLicense

    Imposta iMod = iApp.GetActiveModel

    ' ottieni l'interfaccia del modulo
    Dim iDyn As IDynamModule
    Imposta iDyn = iMod.GetModule("DynamPro")

    ' ottieni l'interfaccia del case del modulo
    Dim iDynCase As IModuleCase
    Imposta iDynCase = iDyn.GetData

    ' imposta i parametri dello spettro di risposta
    Dim rspara As RSParams
    rspara = iDynCase.GetRSParams(rs_no)

    Dim rs_spec (da 0 a 10) As RSTableRow

    Dim indice come intero
    indice = 0
    rs_spec (indice).s = 0,6
    rs_spec (indice).T = 0

    indice = 1
    rs_spec (indice).s = 1.33
    rs_spec (indice).T = 0.153

    indice = 2
    rs_spec (indice).s = 1.33
    rs_spec (indice).T = 0,4

    indice = 3
    rs_spec(indice).s = 1.204
    rs_spec (indice).T = 0,443

    indice = 4
    rs_spec (indice).s = 1,07
    rs_spec (indice).T = 0.5

    indice = 5
    rs_spec (indice).s = 0.7
    rs_spec (indice).T = 0,761

    indice = 6
    rs_spec (indice).s = 0.508
    rs_spec (indice).T = 1.051

    indice = 7
    rs_spec (indice).s = 0,367
    rs_spec (indice).T = 1.453

    indice = 8
    rs_spec (indice).s = 0.267
    rs_spec (indice).T = 1,995

    indice = 9
    rs_spec (indice).s = 0.16
    rs_spec (indice).T = 2.584

    indice = 10
    rs_spec (indice).s = 0.16
    rs_spec (indice).T = 5

    rspara.UserDefinedTable = rs_spec
    rspara.Comment = "test rs"
    rspara.DefinitionType = ResponseSpectraType.UserDefinedRS
    rspara.description = "verifica rs tramite 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

Lo spettro di risposta è stato creato secondo EN 1998-1:2010 e ha 11 punti. Innanzitutto, è stato creato un array del tipo RSTableRow con 11 elementi, riempito con i dati e quindi salvato nella proprietà UserDefinedTable. Il trasferimento viene eseguito utilizzando il comando SetRSParams.