880x
004688
2020-09-01

Modificación de la configuración de la malla de elementos finitos mediante la interfaz COM

¿Cómo puedo modificar la configuración de la malla de EF a través de la interfaz COM?


Respuesta:

La configuración general de la malla de EF se puede modificar utilizando la interfaz IFeMeshSettings. Dieses Interface ist unter IModel > IModelData > ICalculation lokalisiert. Welche Elemente verändert/ausgelesen werden können, ist in Abbildung 01 dargestellt.

  1. Hier noch ein Codebeispiel, bei dem die angestrebte Länge der FE-Elemente auf 100mm gesetzt wird. Zudem wird noch die Teilung der Stäbe mit der gleichen Elementgröße aktiviert und die Mindestteilung auf 3 Elemente festgelegt:
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

Die Subroutine wird zudem wieder mit einer Fehlerabfangroutine (On Error GoTo e) ergänzt und wie auch bei der Modifikation anderer Elemente ist wieder ein Prepare-/FinishModification-Block nötig. Hier wird der Block über das Interface IFeMeshSettings erzeugt.


Autor

El Sr. Günthel proporciona soporte técnico para los clientes de Dlubal Software y se ocupa de sus solicitudes.

Descargas


;