708x
001807
2020-09-01

[EN] FAQ 004688 | Como é que posso alterar a configuração da malha de EF através da interface COM?

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

    ' obtém interface para aplicação e licença de bloqueio
    Defina iApp = iModel.GetApplication ()
    iApp.LockLicense

    ' obter interface para o modelo dat
    Dim iModdata As RFEM5.IModelData2
    Defina iModdata = iModel.GetModelData

    ' obtenha interface para cálculo
    Dim iCalc As RFEM5.ICalculation2
    Defina iCalc = iModel.GetCalculation ()

    ' obter interface para configurações de malha
    Dim iMeshSet As RFEM5.IFeMeshSettings
    Definir iMeshSet = iCalc.GetFeMeshSettings

    ' obtém as configurações gerais da malha
    Dim meshGen As RFEM5.FeMeshGeneralSettings
    meshGen = iMeshSet.GetGeneral

    meshGen.ElementLength = 0,1

    ' definir novas configurações gerais de malha
    iModdata.PrepareModification
    iMeshSet.SetGeneral meshGen
    iModdata.FinishModification

    ' obter configurações de barras de malha
    Dim meshMem As RFEM5.FeMeshMembersSettings
    meshMem = iMeshSet.GetMembers

    meshMem.DivideStraightMembers = True
    meshMem.ElementLength = 0,1
    meshMem.MinStraightMemberDivisions = 3

    ' definir novas configurações de barra de malha
    iModdata.PrepareModification
    iMeshSet.SetMembers meshMem
    iModdata.FinishModification

    iApp.UnlockLicense
End If

e:  Se Err.Number 0 Then
    MsgBox Err.description,, Err.Source
    End If
    iApp.UnlockLicense
    Definir 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.