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.