# Farbe mehrerer Shapes ändern



## Mark (14. Februar 2006)

Hallo Ihr Lieben!

Habe eine Frage an Euch bzgl. *Photoshop CS2*.
Ich habe ein Dokument mit etlichen Layern/Ebenen, darunter einige Shapes/Füllebenen und alles ist wild - u.a. in Gruppen - verteilt.
Nun würde ich gerne die Farbe bestimmter Shapes - nicht aller - gleichzeitig - ohne Auswahl dieser Layer - ändern können.
Gesucht ist also quasi nur ein "Verweis" / eine "Variable" auf eine Farbe, die von mehreren Shapes genutzt wird und welche nach belieben verändert werden kann...

Ein "Stoß"/Hinweis in die richtige Richtung würde reichen bzw. wäre nett 

Liebe Grüße und vielen Dank' für Eure Mühe,
Mark.


----------



## oscarr (15. Februar 2006)

Hiho, 

so ganz verstehe ich das Problem nicht! Warum möchtest Du die Ebene nicht auswählen und dann enfärben?

Also mir würde jetzt folgendes Einfallen: 

Du hast also diverse Shapes: 
Farbefeld+Vektormaske 

Ich würde jetzt bei allen Shapes die eine Farbe haben sollen nur die Vektormaske auswählen bzw eine Auswahl erstelllen. Strg+Klick um Auswahl zu erstellen und dann noch mit Shift dazu allen gewünschten Ebenen hinzufügen. 

WEnn dann allles ausgewählt ist eine neue Einstellungs-/Füllebene > Volltonfarbe. Jetzt sollten alle Ausgewählten Flächen einfärbar sein. 

Vielleicht hift es Dir ja weiter. Was anderes fällt mir jetzt grad nicht ein ;(


----------



## Mark (15. Februar 2006)

Hi oscarr!

Danke für Deine Antwort! 

Aber, die Variante mit der addierten Selektion und anschließenden neuen Füllebene funktioniert nicht: die einzelnen Füllebenen haben entscheidende "Positionen" innerhalb der Layer/Ebenen-Hierarchie (werden z.B. verdeckt oder haben unterschiedliche Styles)... das alles geht bei einer einzelnen neuen Fülleben verloren  

Ganz davon abgesehen: ich schreibe oben so "leicht" von "möchte die Layer nicht auswählen" - eine "Farb-Variabel" wäre wirklich ideal  - aber:
Geht es denn überhaupt, mehrere Füllebenen zu selektieren und deren Farbe in einem Rutsch zu ändern? 

Liebe Grüße,
Mark.


----------



## Philip Kurz (15. Februar 2006)

Mark hat gesagt.:
			
		

> Geht es denn überhaupt, mehrere Füllebenen zu selektieren und deren Farbe in einem Rutsch zu ändern?



Im Prinzip könntest du einfach eine weitere Füllebene (beispielsweise "Volltonfarbe" oder "Farbton/Sättigung") drüber legen. Konkret, müsstest du die Auswahlen der Ebenen laden (PS 7 : Strg+Shift) und dann die Füllebene hinzufügen ... aber das möchtest du bestimmt nicht. 

Phil


----------



## Mark (15. Februar 2006)

Hallo Philip!





> aber das möchtest du bestimmt nicht.


Och, mönsch, weder ich, noch meine Frage ist arrogant (gemeint)  
Es geht mir doch garnicht um's "möchten", sondern nur um eine echte Arbeitsersparnis 
Ob ich nun über jeder meiner Füllebene eine neue erstelle oder gleich per Doppelklick die Farbe der Füllebene änder, bleibt sich doch gleich?! Oder habe ich Dich mißverstanden?

Liebe Grüße,
Mark.


----------



## oscarr (15. Februar 2006)

Also wie gesagt mir ist da so keine Lösung bekannt so wie Du dir das vorstellst. Ist glaube ich auch sehr speziell  

Vielleicht bringt Dir aber folgendes etwas Arbeitserleichterung:

GEwünschte Vordergrundfarbe einstellen. Jetzt die Ebene die gefärbt werden soll auswählen. Geht auch gut mit STRG+Klick (im V Pfeilmodus). Dann machst Du ALT+Backspace (Vodergrundfarbe) oder STRG+Baskspace (Hintergrundfarbe). 

Damit kannst Du schnell die Farben ändern. Ist zwar nicht das was Du suchst aber Vielleicht eine Notlösung.

Gruss und viel Glück bei dem Problem.


----------



## Mark (15. Februar 2006)

Hi!

Und nochmals Danke, oscarr! 
Die Shortcuts sind mir leider schon bekannt und gemeinerweise funktioniert's nicht bei mehreren selektierten Füllebenen...

Hm, scheint wirklich "speziell" zu sein ... konnte mir einfach nicht vorstellen, daß PS nichts passendes hat  ...gut, Scripting hab' ich noch nicht probiert 

Liebe Grüße,
Mark.


----------



## Philip Kurz (16. Februar 2006)

Mark hat gesagt.:
			
		

> Och, mönsch, weder ich, noch meine Frage ist arrogant (gemeint)



Hi Mark.

Ich denke da liegt ein Missverständnis vor. Mit "aber das möchtest du bestimmt nicht" wollte ich eigentlich nur ausdrücken, dass dir mein Tipp bestimmt nicht weiterhilft. Das war natürlich kein Angriff oder etwas dergleichen. 

Zu meinem Tipp: Ich dachte mehr an eine Füllebene, die zentral über den anderen liegt. Also nicht über jede alte Füllebene eine neue sondern eine Zentrale über allen.

Philip


----------



## hotschen (16. Februar 2006)

Mark hat gesagt.:
			
		

> Hm, scheint wirklich "speziell" zu sein ... konnte mir einfach nicht vorstellen, daß PS nichts passendes hat  ...gut, Scripting hab' ich noch nicht probiert


Auch mit scripten wirst du das nur über große Umwege erreichen. Das scheitert schon am feststellen der Farbe. Per Script geht das nicht so ohne weiteres, nur über den Umweg mit Hitogrammen. Ich hatte mal sowas in der Richtung experimentiert, kann nachher zuhause nochmal schauen.
Solltest du allerding mit nem Mac unterwegs sein, kann ich mir die Mühe sparen, das war in VBS (also nur für Win)


----------



## Mark (16. Februar 2006)

Hi!

@Philip: ...da bin ich ja froh, daß es kein Angriff war   Wobei ich mehr und mehr denke, mein Wunsch scheint doch arg "arrogant" gegenüber PS zu sein 
Bzgl. der zentralen Füllebene: die "überschreibt" dann leider die Styles der darunterliegenden Füllebenen... 

@hotschen: das würde mir wirklich sehr helfen  Habe mir das PS Scripting Guide und das JS Referenz Guide von oben bis unten durchgelesen und gegoogelt, was das Zeug hält: der SolidFill-Artlayer scheint das undokumentierteste Objekt der Welt zu sein (ganz anders als das depperte Text-Layer mit'm textItem) 
Würde mich also sehr freuen, wenn Du mir einen Tipp in die richtige Richtung geben könntest, bevor ich das PS-Scripting und meinen "Wunsch" für immer in die Tonne kloppe und lieber jeden einzelnen Layer von Hand ändere 

Liebe Grüße,
Mark.

//edit: ups, jupp, bin windowser


----------



## hotschen (17. Februar 2006)

Die Farbe einer einfarbigen kannst du mit dem folgenden Script bestimmen. Mir ist keine andere Möglichkeit bekannt. Ist sicher nicht das Non-Plus-Ultra, aber funktioniert. An einer einfacheren Lösung bin ich auch intressiert, konnte dazu aber nirgendwo was finden.
Um die Farbe zu ändern, hab ich bis auf den "Sendkeys"-Befehl auch keine Idee. Würde mich aber auch interessieren.

Hier zur Farbbestimmung (die farbe wird als Vordergrundfarbe gesetzt):

```
Dim appref, docref,startRulerUnits, startTypeUnits,  farbe(3), i, k

Set appref = CreateObject("Photoshop.Application")

If appref.Documents.count<>0 Then
	Set docref=appref.ActiveDocument
Else
	MsgBox "Erst eine Datei öffnen!"
	WScript.Quit
End If

startRulerUnits = appRef.Preferences.RulerUnits
startTypeUnits = appRef.Preferences.TypeUnits

appref.Preferences.RulerUnits = 1
appref.Preferences.TypeUnits = 1

For i = 1 To 3
    farbe(i - 1) = getcolor(docref.Channels(i).Histogram)
Next
appref.foregroundcolor.RGB.Red = farbe(0)
appref.foregroundcolor.RGB.Green = farbe(1)
appRef.foregroundcolor.RGB.Blue = farbe(2)

appRef.Preferences.RulerUnits = startRulerUnits
appRef.Preferences.TypeUnits = startTypeUnits

Private Function getcolor(inputarray)
    For k = 1 To UBound(inputarray)
        If inputarray(k) > 0 Then Exit For
    Next
    getcolor = k
End Function
```

Gruß hotschen


----------



## Mark (20. Februar 2006)

Hi hotschen!

Vielen Dank für Dein Script! 
...geholfen hat es mir leider nicht: mir geht es ja nur um das "Setzen" der Farbe und trotz Deiner Hinweise bin ich total gescheitert... ich komme einfach nicht an das "kind = SolidColor"-Objekt heran - was ja beim "textitem" ohne Probleme funktioniert - und scheine somit schon an den Scripting-Basics zu scheitern 
Aber zum Glück läßt sich ja ein PS-Scripting-Unvermögen durch reinen "Fleiß" ersetzen und diesem werde ich mich in Zukunft wieder voll hingeben 

Ich danke Euch allen für Eure Hilfe,
Liebe Grüße,
Mark.


----------



## hotschen (20. Februar 2006)

Wenns dir nur ums füllen geht....warum sendest du nicht die Tastenkombination an PS?

```
set k = wscript.Createobject("wscript.Shell")
k.AppActivate "Adobe Photoshop"   'Anwendung in Vordergrund holen
WScript.sleep 1000  'kleine Pause bis PS in Vordergrund
k.Sendkeys "%{BS}"  'Strg+Backspace senden (Füllen mit Vordergrundfarbe)
```


----------

