834x
004688
2020-09-01

Pergunta

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.

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:

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
    
' get interface for application and lock licence
Set iApp = iModel.GetApplication()
iApp.LockLicense
    
' get interface for model dat
Dim iModdata As RFEM5.IModelData2
Set iModdata = iModel.GetModelData
    
' get interface for calculation
Dim iCalc As RFEM5.ICalculation2
Set iCalc = iModel.GetCalculation()
    
' get interface for mesh settings
Dim iMeshSet As RFEM5.IFeMeshSettings
Set iMeshSet = iCalc.GetFeMeshSettings
    
' get general mesh settings
Dim meshGen As RFEM5.FeMeshGeneralSettings
meshGen = iMeshSet.GetGeneral
    
meshGen.ElementLength = 0.1
    
' set new general mesh settings
iModdata.PrepareModification
iMeshSet.SetGeneral meshGen
iModdata.FinishModification
    
' get mesh member settings
Dim meshMem As RFEM5.FeMeshMembersSettings
meshMem = iMeshSet.GetMembers
    
meshMem.DivideStraightMembers = True
meshMem.ElementLength = 0.1
meshMem.MinStraightMemberDivisions = 3
    
' set new mesh member settings
iModdata.PrepareModification
iMeshSet.SetMembers meshMem
iModdata.FinishModification
    
    
iApp.UnlockLicense
End If

e: If Err.Number <> 0 Then
MsgBox Err.description, , Err.Source
End If
iApp.UnlockLicense
Set iApp = Nothing
Set iModel = Nothing

End Sub


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.