Вопрос:
Как с помощью интерфейса COM изменить настройки сетки КЭ?
Ответ:
Общие параметры сетки КЭ можно легко изменить с помощью интерфейса IFeMeshSettings, который находится в разделе IModel > IModelData > ICalculation. На Рисунке 01 затем показано, какие элементы можно в сетке изменить/отобразить.
Ниже приводим также пример кода для настройки длины конечных элементов, которая должна быть равной 100 мм. Далее активируется также деление стержней с одинаковым размером элемента, причем минимальное деление установлено на 3 элемента:
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
' получить интерфейс для приложения и заблокировать лицензию
Установите iApp = iModel.GetApplication ()
iApp.LockLicense
' получить интерфейс для модели dat
Dim iModdata As RFEM5.IModelData2
Установите iModdata = iModel.GetModelData
' get interface for calculation
Dim iCalc As RFEM5.ICalculation2
Установите iCalc = iModel.GetCalculation ()
' получить интерфейс для настроек сетки
Dim iMeshSet As RFEM5.IFeMeshSettings
Задайте iMeshSet = iCalc.GetFeMeshSettings
' получить общие настройки сетки
Изменить размер сетки как указано в RFEM5.FeMeshGeneralSettings
meshGen = iMeshSet.GetGeneral
meshGen.ElementLength = 0,1
' задает новые общие настройки сетки
iModdata.PrepareModification
iMeshSet.SetGeneral meshGen
iModdata.FinishModification
' получить настройки стержня сетки
Изменить размер сетки MeshMem как в RFEM5.FeMeshMembersSettings
meshMem = iMeshSet.GetMembers
meshMem.DivideStraightMembers = True
meshMem.ElementLength = 0,1
meshMem.MinStraightMemberDivisions = 3
' задать новые настройки стержня сетки
iModdata.PrepareModification
iMeshSet.SetMembers meshMem
iModdata.FinishModification
iApp.UnlockLicense
End If
e: Если Err.Number 0, то
MsgBox Err.description`` Err.Source
End If
iApp.UnlockLicense
Set iApp = Nothing
Set iModel = Nothing
End Sub
В подпрограмме находится также функция перехвата ошибок (On Error GoTo e). Более того, здесь, так же как и случае модификации других элементов требуется блок Prepare-/FinishModification. В таком случае блок создается с помощью интерфейса IFeMeshSettings.