Farbbelegung TK-Karten

Hallo zusammen,
ich habe im View mehrere TK-Karten geladen. Von einer habe ich die Hintergrundfarben (Band1-Farbbelegung) geändert (Farben abgeblasst) und möchte diese Einstellung gerne auf die anderen übertragen ohne dies nun mühsam von Hand bei jeder einzelnen zu machen. Eine Möglichkeit der Legendenabspeicherung finde ich bei den Legenden der TK-Karten nicht.
Kann mir da jemand weiterhelfen.
Danke und Gruß
Martin
Hallo Martin,
ich kann da aushelfen (und vielen Dank nochmal an den Autor und (c): Daniel Fuchs (PAN Partnerschaft), 2002.
Ich habe sein UrScript für meine Bedürfnisse angepasst - was Dir auch nicht schwer fallen sollte.
TK speicher :
' ***************************
Titel = "* Palette speichern *"
' ***************************
' *** Ist SHIFT gedrückt ?
if (System.IsShiftKeyDown) then
message = "Handhabung:"+nl+
"Sie können die Palette in einem beliebigen Verzeichnis speichern."
msgbox.report(message,Titel)
exit
end
' ---------------------------------------------------------------------- ------
'Skript: Palette.Speichern
'Autor und (c): Daniel Fuchs (PAN Partnerschaft), 2002
'Funktion: speichert die Legende eines Bildthemas als
'Text-Datei mit dem Suffix ".pal"; dabei wird jede Farbe
'der Bildlegende als RGB-Wert in eine Zeile geschrieben.
'Einbindung: muss als Menüpunkt oder Werkzeug in einen
'View eingebunden werden; ein Bildthema muss aktives
'Thema sein; dieses Bildthema muss eine Einzelband-
'Legende aufweisen.
' ---------------------------------------------------------------------- -------

th = av.GetActiveDoc.GetActiveThemes.Get(0)
If (th.Is(ITheme)) then
tcolmap = th.GetLegend.GetColorMap
PalFileName = av.GetProject.GetWorkDir.MakeTmp( "legende", "pal" )
Pal = FileDialog.Put(PalFileName, "*.pal", "Palette speichern unter:")
If (Pal = Nil) then exit end
palfile = LineFile.Make(pal,#FILE_PERM_WRITE)
For each num in 0..(tcolmap.count-1)
If (tcolmap.Get(num).IsTransparent = true ) then
ColText = "999 999 999"
else
RWert = tcolmap.Get(num).GetRGBList.Get(0)
GWert = tcolmap.Get(num).GetRGBList.Get(1)
BWert = tcolmap.Get(num).GetRGBList.Get(2)
ColText = RWert.SetFormat("dddd").AsString + " " + GWert.SetFormat("dddd").AsString + " " + BWert.SetFormat("dddd").AsString
end
palfile.WriteElt(ColText)
end
end
av.GetActiveDoc.GetDisplay.Invalidate(true)
TK laden :
' ***************************
Titel = "* Palette laden *"
' ***************************
' *** Ist SHIFT gedrückt ?
if (System.IsShiftKeyDown) then
Message = "Handhabung:"+nl+
"Hoffentlich wissen Sie noch, wo die Paletten gespeichert sind ... "
MsgBox . Report(Message,Titel)
exit
end
'Skript: Palette.Laden
'Autor und (c): Daniel Fuchs (PAN Partnerschaft), 2002
'
'Funktion: lädt die Legende eines Bildthemas als
'Text-Datei mit dem Suffix ".pal"; dabei wird jede Zeile
'der Textdatei als RGB-Wert interpretiert und zugewiesen.
'_____________________________________________________
aDirName = ("C:\AV-LEVIS\Paletten\").asFileName
aDirName.SetCWD

themes = av.GetActiveDoc.GetActiveThemes
For each th in themes
If (th.Is(ITheme)) then
tcolmap = th.GetLegend.GetColorMap
Pal = FileDialog.Show("*.pal", "Paletten-Datei (.pal)", "Bitte gewünschte Palette auswählen")
If (pal = Nil) then exit end
palfile = TextFile.Make(pal,#FILE_PERM_READ)
For each num in 0..(tcolmap.Count -1)
RWert = palfile.Read(3).AsNumber
GWert = palfile.Read(4).AsNumber
BWert = palfile.Read(4).AsNumber
egal = palfile.Read(1)
If (RWert = 999) then
tcolmap.Get(num).SetTransparent(true)
else
tcolmap.Get(num).SetRgbList({RWert,GWert,BWert})
end
end
end
end
av.GetActiveDoc.GetDisplay.Invalidate(true)


NochnKlaus
Hallo Klaus,
vielen Dank für die Mühe.
Ich hab das Script unts Scripts gespeichert. Hab es auch kompilieren können, aber dann hörts auch schon auf.
Ich kenn mich mit Scripts leider auch nicht so aus. Was muss ich mit dem Script tun ?
Viele Grüße
Martin
Hi Klaus nochmal und an alle Interessierte !
Hab es jetzt doch hinbekommen und es funktioniert - echt klasse !
Thanks a lot an Daniel + Klaus!

Den Text oben in 2 Scripts abspeichern z.B. TK-Speichern u.
TK-Laden
Unter Anpassen in der Projekt-Ansicht zwei neue Buttons anlegen.
Dann im View die erste TK aktivieren, Band abspeichern, Namen und Verzeichnis auswählen
Nächste TK aktivieren und Palette laden.
Fertig.

Vielen Dank nochmal und viele Grüße
Martin