868x
004622
2020-08-12

Espectro de resposta no DYNAM Pro através da interface COM

Como é que posso introduzir ou ler um espectro de resposta através da interface COM no DYNAM Pro?


Resposta:

A interface COM permite ler ou criar um espectro de resposta definido pelo utilizador no RFEM e no RSTAB.

Para a conversão, é necessário obter a interface para o módulo (IDynamModule) através da interface para o modelo RFEM (IModel). Esta interface é então utilizada para criar um caso de módulo (IModuleCase). O IModuleCase inclui a função GetRSParams que pode ser utilizada para ler os parâmetros para o espectro de resposta. Por outro lado, a função SetRSParams pode escrever os novos dados. O seguinte código de exemplo esclarece isso:

  1. código.vb#

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

  1. ' Checks RS-COM license and locks the application for using by COM.
  2. iApp.LockLicense
  1. Set iMod = iApp.GetActiveModel
  1. ' get module interface
  2. Dim iDyn As IDynamModule
  3. Set iDyn = iMod.GetModule("DynamPro")
  1. ' get module case interface
  2. Dim iDynCase As IModuleCase
  3. Set iDynCase = iDyn.GetData
  4. ' set response spectra parameters
  5. Dim rspara As RSParams
  6. rspara = iDynCase.GetRSParams(rs_no)
  7. Dim rs_spec(0 To 10) As RSTableRow
  8. Dim index As Integer
  9. index = 0
  10. rs_spec(index).s = 0.6
  11. rs_spec(index).T = 0
  12. index = 1
  13. rs_spec(index).s = 1.33
  14. rs_spec(index).T = 0.153
  15. index = 2
  16. rs_spec(index).s = 1.33
  17. rs_spec(index).T = 0.4
  18. index = 3
  19. rs_spec(index).s = 1.204
  20. rs_spec(index).T = 0.443
  21. index = 4
  22. rs_spec(index).s = 1.07
  23. rs_spec(index).T = 0.5
  24. index = 5
  25. rs_spec(index).s = 0.7
  26. rs_spec(index).T = 0.761
  27. index = 6
  28. rs_spec(index).s = 0.508
  29. rs_spec(index).T = 1.051
  30. index = 7
  31. rs_spec(index).s = 0.367
  32. rs_spec(index).T = 1.453
  33. index = 8
  34. rs_spec(index).s = 0.267
  35. rs_spec(index).T = 1.995
  36. index = 9
  37. rs_spec(index).s = 0.16
  38. rs_spec(index).T = 2.584
  39. index = 10
  40. rs_spec(index).s = 0.16
  41. rs_spec(index).T = 5
  1. rspara.UserDefinedTable = rs_spec
  2. rspara.Comment = "test rs"
  3. rspara.DefinitionType = ResponseSpectraType.UserDefinedRS
  4. rspara.description = "test rs via COM"
  5. rspara.Number = rs_no
  6. iDynCase.SetRSParams rs_no, rspara

e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source

  1. iMod.GetApplication.UnlockLicense
  2. Set iMod = Nothing
  3. Set iApp = Nothing
#/code#

O espectro de resposta foi criado de acordo com a EN 1998‑1: 2010 e tem 11 pontos. Primeiro, foi criada uma matriz do tipo RSTableRow com 11 elementos, preenchida com dados e depois guardada na propriedade UserDefinedTable. A transferência é realizada utilizando o comando SetRSParams.


Autor

O Eng. Günthel opera na área do apoio técnico para clientes.

Downloads


;