Ebenenfarben von RGB auf Indexfarben abändern


  
 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 vielfach genutzte Farbzuweisung für Elemente is "von Ebene", d.h. ein Element wird in der Farbe dargestellt, die für die Ebene des Elementes zugewiesen ist.

Bei der Auswahl der Farben für die Ebenen können neben den FArben der FArbtabelle ( Farbe 0 bis 255) auch beliebige RGB Werte zugeweisen werden. Dies kann beispielsweise bei der Plotausgabe Probleme bereiten, wenn Plotkonventionen FArben abändern und die RGB Werte nicht identifiziert werden.
Deshalb kann es interessant sein, alle RGB Farben der Ebenen auf konkrete Indexfarben der Farbtabelle abzuändern, dabei aber möglichst die Farbe selber beizubehalten.
Dazu gibt es in VBA die hilfreiche Methode .InternalColorToIndexedColor, die eine möglichst ähnliche Farbe in der Farbtabelle findet.

Um pauschal alle Farben der Ebenen auf konkrete Indexfarben abzuändern, könnte man folgenden Ansatz verwenden:

Dim oLv As Level
For Each oLv In ActiveDesignFile.Levels
    If Not oLv.IsFromLevelLibrary Then
        oLv.ElementColor = ActiveModelReference.InternalColorToIndexedColor(oLv.ElementColor)
    End If
Next
ActiveDesignFile.Levels.Rewrite