479x
002411
2021-03-05

[EN] FAQ 004961 | Come posso utilizzare l'interfaccia COM per eliminare tutti i nodi o le aste in un modello ...

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.