Ein beliebtes Werkzeug zum Abfragen bzw. Ändern von Elementinformation kann auch per VBA gesteuert werden:
Alle Datenfelder, die auch manuell vom Anwender in dieserr Dialogbox verändert werden können, können auch per VBA gesteuert werden, und zwar mit demObjekttyp PropertyHandler. Der Zugriff auf die Felder erfolgt über den Namen des Feldes. In der VBA Hilfe befinden sich auch Beispiele für die Verwendung des Propertyhandlers, hier zusätzlich noch eine kleine Hilfe, um auch die Namen der Felder auszulesen, damit man überhaupt weiß, wie man auf die Felder zugreifen kann.Hier zunächst das Beispiel und anschließend eine kurze Beschreibung dazu:
Sub prophandLine() Dim ee As ElementEnumerator Dim oProp As PropertyHandler Dim gefunden As Boolean Dim l() As String Dim val As String Dim punkt As Point3d Set ee = ActiveModelReference.GraphicalElementCache.Scan Do While ee.MoveNext If ee.Current.Type = msdElementTypeLine Then Set oProp = CreatePropertyHandler(ee.Current) ' Alle Namen herausfinden: l = oProp.GetAccessStrings gefunden = False For i = LBound(l) To UBound(l) Debug.Print l(i) ' Ausgabe aller Namen im VBA Editor If l(i) = "Segments[0].Start" Then gefunden = True Next 'Wert auslesen wenn vorhanden und ändern: If gefunden Then oProp.SelectByAccessString ("Segments[0].Start") punkt = oProp.GetValueAsPoint3d punkt.x = punkt.x + 1 punkt.y = punkt.y - 1 oProp.SetValueAsPoint3d punkt End If End If Loop End Sub
In dem Beispiel werden zunächst einmal alle graphischen Elemente des aktiven Modells ausgelesen und einzeln überprüft.Dabei werden nur Linien weiter untersucht.Für jede Linie wird ein Propertyhandler angelegt mit den Informationen dieser Linie.
Über die Anweisung:
l = oProp.GetAccessStrings
werden alle Zugriffsnamen ausgelesen und anschließend geprüft, ob ein Feld davon "Segments[0].Start" heißt.Wenn ja, dann haben wir den Anfangspunkt der Linie gefunden. Dieser wird zu Testzwecken etwas verändert (x+1, y-1) und wieder zurück geschrieben,
so dass am Ende alle Anfangspunkte aller Linien verändert wurden.Viel Spass beim Ausprobieren
Anmerkungszellen mit VBA platzieren