478x
002411
2021-03-05

[EN] FAQ 004961 | Jak mogę użyć interfejsu COM, aby usunąć wszystkie węzły lub pręty w modelu ...

Pytanie:
Jak na przykład użyć interfejsu COM do usunięcia wszystkich węzłów lub prętów w modelu?

Odpowiedź:
Aby usunąć elementy, dostępna jest funkcja "DeleteObjects ()" w interfejsie danych modelu. Usunięcie wszystkich prętów przebiega w następujący sposób:

Sub test_delete_objects ()

Dim iApp As RFEM5.Application
Ustaw iApp = GetObject (, "RFEM5.Application")

iApp.LockLicense

Dim iMod As RFEM5.IModel3
Set iMod = iApp.GetActiveModel

On Error GoTo e

    'pobierz interfejs dla danych modelu
    Dim iModData As RFEM5.IModelData2
    Set iModData = iMod.GetModelData

    'zdobądź wszystkich członków
    Dim mems () As RFEM5.Member
    mems () = iModData.GetMembers

    'utworzyć listę członków
    Dim mem_list As String
    Dim i As Integer
    Dla i = 0 To UBound (memy, 1)
        mem_list = mem_list & mems (i) .no & ","
    Następny

    'usuń członków
    iModData.PrepareModification
    iModData.DeleteObjects MemberObject, mem_list
    iModData.FinishModification

e:

Jeżeli Err.Number 0 To MsgBox Err.description, vbCritical, Err.Source

iMod.GetApplication.UnlockLicense
Ustaw iMod = Nic

End Sub

Należy pamiętać, że funkcja "DeleteObjects" działa tylko z numerem obiektu, a nie z indeksem obiektu. Liczby te są przesyłane jako ciąg znaków, oddzielone przecinkami.

Z tego powodu najpierw należało pobrać wszystkich członków. Następnie pole pręta zostało zapętlone i wszystkie numery prętów zostały wprowadzone do ciągu.