708x
001807
2020-09-01

[PL] FAQ 004688 | Jak mogę zmodyfikować ustawienia siatki ES za pomocą interfejsu COM?

Pytanie:
Jak mogę zmodyfikować ustawienia siatki ES za pomocą interfejsu COM?

Odpowiedź:
Ogólne ustawienia siatki ES można modyfikować za pomocą interfejsu IFeMeshSettings. Ten interfejs znajduje się w IModel> IModelData> ICalculation. Rysunek 01 pokazuje, które elementy można zmodyfikować/wyświetlić.

Oto przykład kodu, w którym docelowa długość elementów ES jest ustawiona na 100 mm. Ponadto aktywowany jest podział prętów o takim samym rozmiarze elementu, a minimalny podział jest ustawiony na 3 elementy:

Sub mesh_params ()

Dim iApp As RFEM5.Application

' pobierz interfejs dla danych modelu
Dim iModel As RFEM5.model
Set iModel = GetObject(, "RFEM5.Model")

On Error GoTo e

Jeśli nie iModel jest niczym, to

    ' pobranie interfejsu do aplikacji i zablokowanie licencji
    Ustaw iApp = iModel.GetApplication ()
    iApp.LockLicense

    ' pobierz interfejs do danych modelu
    Dim iModdata As RFEM5.IModelData2
    Ustaw iModdata = iModel.GetModelData

    ' pobierz interfejs do obliczeń
    Dim iCalc As RFEM5.ICalculation2
    Ustaw iCalc = iModel.GetCalculation ()

    ' Pobierz interfejs do ustawień siatki
    Dim iMeshSet As RFEM5.IFeMeshUstawienia
    Ustaw iMeshSet = iCalc.GetFeMeshUstawienia

    ' uzyskać ogólne ustawienia siatki
    Dim meshGen As RFEM5.FeMeshGeneralSettings
    meshGen = iMeshSet.GetGeneral

    meshGen.ElementLength = 0,1

    ' wstawić nowe ogólne ustawienia siatki
    iModdata.PrepareModification
    iMeshSet.Set General meshGen
    iModdata.FinishModification

    ' uzyskać ustawienia pręta siatki
    Dim meshMem As RFEM5.FeMeshMembersUstawienia
    meshMem = iMeshSet.GetMembers

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

    ' wstawić nowe ustawienia pręta siatki
    iModdata.PrepareModification
    iMeshSet.SetMembers meshMem
    iModdata.FinishModification

    iApp.UnlockLicense
End If

e:  Jeżeli błąd nr 0, to
    MsgBox Err.description, , Err.Source
    End If
    iApp.UnlockLicense
    Ustaw iApp = Nic
    Ustaw iModel = Nic

End Sub

Podprogram jest również uzupełniany o procedurę przechwycenia błędu (On Error GoTo e) i podobnie jak w przypadku modyfikacji innych elementów wymagany jest blok Prepare-/FinishModification. Tutaj blok jest tworzony za pomocą interfejsu IFeMeshSettings.