808x
004961
2021-04-08

Domanda

Come posso utilizzare l'interfaccia COM per eliminare tutti i nodi o le aste in un modello, ad esempio?


Risposta:

Per eliminare gli elementi, c'è la funzione "EliminaOggetti ()" nell'interfaccia dei dati del modello. L'eliminazione di tutte le aste è quindi la seguente:

Sub test_delete_objects ()

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

iApp.LockLicense

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


On Error GoTo e

' get interface for model data
Dim iModData As RFEM5.IModelData2
Imposta iModData = iMod.GetModelData
    
'prendi tutti i membri
Dim mems () Come RFEM5.Member
mems () = iModData.GetMembers
    
'crea elenco dei membri
Dim mem_list As String
Dim i come numero intero
Per i = 0 a UBound (mems, 1)
mem_list = mem_list & mems (i) .no & ","
Successivo
    
'elimina membri
iModData.PrepareModification
iModData.DeleteObjects MemberObject, mem_list
iModData.FinishModification
    
e:

If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source

iMod.GetApplication.UnlockLicense
Set iMod = Nothing

End Sub


Si noti che la funzione "EliminaOggetti" funziona solo con il numero dell'oggetto e non con l'indice dell'oggetto. Questi numeri vengono trasferiti come una stringa, separati da virgole.

Per questo motivo, tutti i membri dovevano essere recuperati prima. Quindi il campo dell'asta è stato ripetuto e tutti i numeri dell'asta sono stati inseriti nella stringa.