796x
004622
2020-08-12

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
    
Indice dim 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.