868x
004622
2020-08-12

通过COM接口在DYNAM Pro中创建反应谱

如何在附加模块DYNAM Pro中通过接口COM输入或读出反应谱?


回复:

使用 COM 接口可以在 RFEM 和 RSTAB 中读取或创建用户自定义的反应谱。

Für die Umsetzung muss zunächst über das Interface zum RFEM Modell (IModel) das Interface zum Modul geholt werden (IDynamModul). Über dieses Interface wird dann das zum Modulfall angelegt (IModuleCase). IModuleCase beinhaltet die Funktion GetRSParams mit deren Hilfe die Parameter für das Antwortspektrum zunächst ausgelesen werden können. Die Funktion SetRSParams als Gegenspieler kann die neuen Daten schreiben. Im Folgenden ein Beispielcode zur Verdeutlichung:

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

Das Antwortspektrum wurde in Anlehnung an EN 1998-1:2010 erstellt und hat 11 Punkte. Es wurde zuerst ein Array von Typ RSTableRow mit 11 Elementen angelegt, mit Daten gefüllt und dann unter der Eigenschaft UserDefinedTable abgelegt. Die Übertragung erfolg mit dem Befehl SetRSParams.


作者

Günthel 先生为Dlubal 软件客户提供技术支持。

下载


;