VBA Objekt PropertyHandler zum Ändern der Element Information


  
 Bezieht sich auf 
  
 Produkt(e):MicroStation
 Version(en):08.11.09.578
 Umgebung: Windows 7 32 bit,Windows 7 64 bit
 Produktbereich: Programmierung
 Produktunterbereich: VBA
 Ursprünglicher Autor:Artur Goldsweer, Bentley Technical Support Group
  

 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

Sehen Sie hierzu auch

 Anmerkungszellen mit VBA platzieren