880x
004688
2020-09-01

Alterar configuração da malha de EF através da interface COM

Como é que posso alterar a configuração da malha de EF através da interface COM?


Resposta:

A configuração geral da malha de EF pode ser modificada com o auxílio da interface IFeMeshSettings. Esta interface está localizada em IModel > IModelData > ICalculation. A Figura 01 mostra os elementos que podem ser modificados/apresentados.

  1. Veja aqui um exemplo de um código em que o comprimento-alvo dos elementos de EF é definido para 100 mm. Além disso, ainda é ativada a divisão das barras com o mesmo tamanho de elemento e a divisão mínima é definida para 3 elementos:
  2. código.vb#

Sub mesh_params()

Dim iApp As RFEM5.Application

' get interface for model data
Dim iModel As RFEM5.model
Set iModel = GetObject(, "RFEM5.Model")

On Error GoTo e

If Not iModel Is Nothing Then

  1. ' get interface for application and lock licence
  2. Set iApp = iModel.GetApplication()
  3. iApp.LockLicense
  4. ' get interface for model dat
  5. Dim iModdata As RFEM5.IModelData2
  6. Set iModdata = iModel.GetModelData
  7. ' get interface for calculation
  8. Dim iCalc As RFEM5.ICalculation2
  9. Set iCalc = iModel.GetCalculation()
  10. ' get interface for mesh settings
  11. Dim iMeshSet As RFEM5.IFeMeshSettings
  12. Set iMeshSet = iCalc.GetFeMeshSettings
  13. ' get general mesh settings
  14. Dim meshGen As RFEM5.FeMeshGeneralSettings
  15. meshGen = iMeshSet.GetGeneral
  16. meshGen.ElementLength = 0.1
  17. ' set new general mesh settings
  18. iModdata.PrepareModification
  19. iMeshSet.SetGeneral meshGen
  20. iModdata.FinishModification
  21. ' get mesh member settings
  22. Dim meshMem As RFEM5.FeMeshMembersSettings
  23. meshMem = iMeshSet.GetMembers
  24. meshMem.DivideStraightMembers = True
  25. meshMem.ElementLength = 0.1
  26. meshMem.MinStraightMemberDivisions = 3
  27. ' set new mesh member settings
  28. iModdata.PrepareModification
  29. iMeshSet.SetMembers meshMem
  30. iModdata.FinishModification
  31. iApp.UnlockLicense

End If

e: If Err.Number <> 0 Then

  1. MsgBox Err.description, , Err.Source
  2. End If
  3. iApp.UnlockLicense
  4. Set iApp = Nothing
  5. Set iModel = Nothing

End Sub
#/code#

A sub-rotina também é completada por uma rotina de interceção de erros (On Error GoTo e) e volta a ser necessário um bloco Prepare-/FinishModification, tal como para a modificação de outros elementos. Aqui, o bloco é criado através da interface IFeMeshSettings.


Autor

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

Downloads


;