Auswahlfarbe ändern

Hallo,
ich habe ein Template als Vorlage für ein Layout, welches ich mit einem Script aufrufe. Jetzt würde ich gerne eine andere Auswahlfarbe für mein Layout haben, im eigentlichen View aber die alte Auswahlfarbe beibehalten. Folgenden Code habe ich schon ausprobiert aber dieser setzt eben Projektweit die Auswahlfarbe:
theProj = av.GetProject
theColor = Color.Make
theColor.SetTransparent(true)
theProj.SetSelColor(theColor)
Gibt es die Möglichkeit, die Auswahlfarbe, zwischen Projekt und Layout zu unterscheiden? Oder hat jemand noch einen anderen Vorschlag?

Danke im voraus,

Gruss Thomas
Hallo Thomas,

du kannst die Auswahlfarbe mit deinem Skript ändern bevor das betreffende Dokument geöffnet wird. Hierzu musst du dein Skript entsprechend in das Systemskript Doc.Open integrieren bzw. ein Skript namens Doc.Open anlegen, welches folgenden Code enthält:

' Systemscript Doc.Open

' Modifikation 1: Definition der Auswahlfarben für Layout und View
theViewColor = Color.Make
theViewColor.SetRGBList({255,0,0})

theLayoutColor = Color.Make
theLayoutColor.SetRGBList({0, 255, 0})

' Objektvariable für das Projekt
theProj = av.GetProject
' Ende Modifikation 1

for each d in av.GetProject.GetSelectedDocs

' Modifikation 2: Auswahlfarbe ändern
' Auswahlfarbe definieren
If (d.GetClass.IsSubClassOf(LAYOUT)) Then
Msgbox.Info("Auswahlfarbe für Layout auf Grün gesetzt.","")
theProj.SetSelColor(theLayoutColor)
ElseIf (d.GetClass.IsSubClassOf(VIEW)) Then
Msgbox.Info("Auswahlfarbe für View auf Rot gesetzt","")
theProj.SetSelColor(theViewColor)
End
' Ende Modifikation 2

d.GetWin.Open

end

Was jetzt noch fehlt: Eigentlich müsste man noch entsprechende Änderungen in den beiden Skripten Layout.New und View.New vornehmen.

Viel Erfolg und schöne Grüße


Uwe
Danke Uwe für das Umfangreiche Beispiel, arbeitet sehr gut.
Hätte auch gleich noch eine weitere Frage: Kann ich die (Vordergrund-, Umriss-) Farbe eines ausgewählten Themes ermitteln?
Habe schon einige Versuche ähnlicher Form hinter mir, hat aber alles nicht so funktioniert:
theThm = av.GetActiveDoc.GetActiveThemes.Get(0)
theThm.GetColor

Danke und Gruss,

Thomas
Hallo Thomas,

um die Farbe aus der Legende abzufragen, musst du über GetLegend gehen:

theTheme = av.GetActiveDoc.GetActiveThemes.Get(0)
theLegend = theTheme.GetLegend
theSymbol = theLegend.GetSymbols.Get(0)
theColor = theSymbol.GetColor
theRGBList = theColor.GetRGBList
Msgbox.Info("Rotanteil:" ++ theRGBList.Get(0).AsString,"")


Gruß

Uwe
... die Umrissfarbe bekommt man über:

theOutLineColor = theSymbol.GetOLColor

2ter Gruß

Uwe