回复:
有限元网格的一般设置可以通过使用 IFeMeshSettings 接口进行更改。 Dieses Interface ist unter IModel > IModelData > ICalculation lokalisiert. Welche Elemente verändert/ausgelesen werden können, ist in Abbildung 01 dargestellt.
- 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.
常见问题和解答 (FAQ)