708x
001807
2020-09-01

[EN] FAQ 004688 | Как с помощью интерфейса COM изменить настройки сетки КЭ?

Вопрос:
Как с помощью интерфейса 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.