470x
001846
10. September 2020

[EN] FAQ 004715 | Wie kann man über die COM-Schnittstelle Objekte selektieren?

Frage:
Wie kann man über die COM-Schnittstelle Objekte selektieren?

Antwort:
Für das Selektieren von Objekten gibt es im Interface IModelData (bzw. auch IModeldata2 u. ä.) die Funktion "SelectObjects". Die Funktion erwartet den Objekttyp und die Objektnummer(n) als Zeichenkette. Hier ein kurzes Beispiel:

Sub select_objects()

Dim model As RFEM5.model
Set model = GetObject(, "RFEM5.Model")
model.GetApplication.LockLicense

On Error GoTo e

    Dim iModdata As IModelData2
    Set iModdata = model.GetModelData

    '   enable Selections
    iModdata.EnableSelections True

    '   select nodes 2-3 and lines 1 and 3
    iModdata.SelectObjects ModelObjectType.NodeObject, "2-3"
    iModdata.SelectObjects ModelObjectType.LineObject, "1,3"

    '   deselect nodes and lines
    iModdata.SelectObjects ModelObjectType.NodeObject, ""
    iModdata.SelectObjects ModelObjectType.LineObject, ""

e:  If Err.Number 0 Then MsgBox Err.description, , Err.Source

model.GetApplication.UnlockLicense
Set iModdata = Nothing
Set model = Nothing

End Sub

Im oberen Teil werden die Selektionen aktiviert und dann die Knoten 2 bis 3 sowie die Linien 1 und 3 selektiert. Danach werden die Linien und Knoten durch eine leere Zeichenkette wieder deselektiert.

Wenn Sie selektierte Objekte auslesen oder modifizieren wollen, benötigen Sie die Funktion "IModelData.EnableSelections" (oben ebenfalls im Code zu finden). Wenn die Funktion mit "True" aufgerufen wird, werden danach beispielsweise mit der Funktion "IModelData.GetNodes()" nur die selektierten Knoten ausgelesen.