hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.
firstin1out m
Beiträge: 58
28. Nov 2013, 08:56
Beitrag #1 von 15
Bewertung:
(3292 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hallo liebe Forenmitglieder,

folgendes script:

tell application "Adobe Illustrator"
tell document 1
set inklist to the name of the swatches
--set result to number of inklist
end tell
end tell

Ergebnis:

{"[Ohne]", "[Passermarken]", "Weiß", "Schwarz", "C=90 M=30 Y=95 K=30", "Schwarzübergang", "Sehr weiche schwarze Vignette", "Grün, Gelb, Orange", "Lila radial", "Lagune", "C=0 M=0 Y=0 K=100", "C=0 M=75 Y=100 K=0", "HKS 1 N", "HKS 2 N", "HKS 3 N", "HKS 4 N", "HKS 5 N", "HKS 6 N", "HKS 7 N", "HKS 8 N", "HKS 10 N", "HKS 11 N", "HKS 12 N", "HKS 13 N", "HKS 14 N", "HKS 15 N", "HKS 16 N", "HKS 17 N", "HKS 18 N", "HKS 21 N", "HKS 22 N", "HKS 23 N", "HKS 24 N", "HKS 25 N", "HKS 26 N", "HKS 27 N", "HKS 28 N", "HKS 29 N", "HKS 31 N", "HKS 32 N", "HKS 33 N", "HKS 34 N", "HKS 35 N", "HKS 36 N", "HKS 37 N", "HKS 38 N", "HKS 39 N", "HKS 40 N", "HKS 41 N", "HKS 42 N", "HKS 43 N", "HKS 44 N", "HKS 45 N", "HKS 46 N", "HKS 47 N", "HKS 48 N", "HKS 49 N", "HKS 50 N", "HKS 51 N", "HKS 52 N", "HKS 53 N", "HKS 54 N", "HKS 55 N", "HKS 56 N", "HKS 57 N", "HKS 58 N", "HKS 59 N", "HKS 60 N", "HKS 61 N", "HKS 62 N", "HKS 63 N", "HKS 64 N", "HKS 65 N", "HKS 66 N", "HKS 67 N", "HKS 68 N", "HKS 69 N", "HKS 71 N", "HKS 72 N", "HKS 73 N", "HKS 74 N", "HKS 75 N", "HKS 76 N", "HKS 77 N", "HKS 78 N", "HKS 81 N", "HKS 82 N", "HKS 83 N", "HKS 84 N", "HKS 88 N", "HKS 89 N", "HKS 90 N", "HKS 91 N", "HKS 92 N", "HKS 93 N", "HKS 95 N", "HKS 96 N", "HKS 97 N"}

Wie kann ich die Liste am besten verändern, sodass nur HKS Farben erhalten bleiben?
Ich finde nicht den richtigen Befehl für Item enthält "HKS"

Viele Grüße
firstin1out
Top
 
X
Hans Haesler  M  p
Beiträge: 5557
28. Nov 2013, 09:13
Beitrag #2 von 15
Beitrag ID: #520198
Bewertung:
(3276 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hallo firstin1out,

herzlich willkommen im AppleScript-Forum! :-)

Diese Kurzfassung ergibt eine Fehlermeldung:

Code
set defList to every item of inklist whose it contains "HKS" 

Also muss man anders vorgehen. Um einen Konflikt zu vermeiden, würde ich der ersten Liste einen temporären Variablennamen geben:

Code
set tmplist to the name of the swatches 

Dann mit dem endgültigen Namen eine leere Liste definieren, eine Schleife durch das Ergebnis und bei jedem Element prüfen, ob es "HKS" enthält. Wenn ja, wird es an die endgültige Liste angehängt:

Code
set inklist to {} 

repeat with i from 1 to count of tmplist
set curItem to item i of tmplist
if curItem contains "HKS" then
set end of inklist to curItem
end if
end repeat
inklist

Gruss, Hans
als Antwort auf: [#520196] Top
 
firstin1out m
Beiträge: 58
28. Nov 2013, 09:35
Beitrag #3 von 15
Beitrag ID: #520200
Bewertung:
(3260 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Vielen Dank,

geht dann also nur über die repeat schleife!
Warum kann man denn eigentlich nicht den Text
in der Liste filtern? Also warum Fehlermeldung?

firstin1out
als Antwort auf: [#520198] Top
 
Hans Haesler  M  p
Beiträge: 5557
28. Nov 2013, 09:56
Beitrag #4 von 15
Beitrag ID: #520204
Bewertung:
(3246 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hallo firstin1out,

bitte sehr.

Zitat Warum kann man denn eigentlich nicht den Text in der Liste filtern?

Weil das nicht implementiert wurde. Die AppleScript-Erfinder konnten ja nicht voraussehen, dass der firstin1out eines Tages die "HKS"-Namen ausfiltern möchte. :-)

Spass beiseite: Mit der Schleife geht es bei einer so kurzen Liste doch blitzschnell.

Gruss, Hans
als Antwort auf: [#520200] Top
 
TMA
Beiträge: 347
29. Nov 2013, 07:24
Beitrag #5 von 15
Beitrag ID: #520274
Bewertung:
(3176 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Es muss nicht unbedingt eine repeat Schleife verwendet werden.

Falls man die Scripterweiterung Satimage.osax installiert hat kann man es auch anders machen.

Hier habe ich mal einen Handler gebaut der die Liste filtert und auch sortiert:

Code
set theList to {"[Ohne]", "[Passermarken]", "Weiß", "Schwarz", "C=90 M=30 Y=95 K=30", "Schwarzübergang", ¬ 
"Sehr weiche schwarze Vignette", "Grün, Gelb, Orange", "Lila radial", "Lagune", "C=0 M=0 Y=0 K=100", ¬
"C=0 M=75 Y=100 K=0", "HKS 1 N", "HKS 2 N", "HKS 3 N", "HKS 4 N", "HKS 5 N", "HKS 6 N", "HKS 7 N", "HKS 8 N", ¬
"HKS 10 N", "HKS 11 N", "HKS 12 N", "HKS 13 N", "HKS 14 N", "HKS 15 N", "HKS 16 N", "HKS 17 N", "HKS 18 N", ¬
"HKS 21 N", "HKS 22 N", "HKS 23 N", "HKS 24 N", "HKS 25 N", "HKS 26 N", "HKS 27 N", "HKS 28 N", "HKS 29 N", ¬
"HKS 31 N", "HKS 32 N", "HKS 33 N", "HKS 34 N", "HKS 35 N", "HKS 36 N", "HKS 37 N", "HKS 38 N", "HKS 39 N", ¬
"HKS 40 N", "HKS 41 N", "HKS 42 N", "HKS 43 N", "HKS 44 N", "HKS 45 N", "HKS 46 N", "HKS 47 N", "HKS 48 N", ¬
"HKS 49 N", "HKS 50 N", "HKS 51 N", "HKS 52 N", "HKS 53 N", "HKS 54 N", "HKS 55 N", "HKS 56 N", "HKS 57 N", ¬
"HKS 58 N", "HKS 59 N", "HKS 60 N", "HKS 61 N", "HKS 62 N", "HKS 63 N", "HKS 64 N", "HKS 65 N", "HKS 66 N", ¬
"HKS 67 N", "HKS 68 N", "HKS 69 N", "HKS 71 N", "HKS 72 N", "HKS 73 N", "HKS 74 N", "HKS 75 N", "HKS 76 N", ¬
"HKS 77 N", "HKS 78 N", "HKS 81 N", "HKS 82 N", "HKS 83 N", "HKS 84 N", "HKS 88 N", "HKS 89 N", "HKS 90 N", ¬
"HKS 91 N", "HKS 92 N", "HKS 93 N", "HKS 95 N", "HKS 96 N", "HKS 97 N"}

return my findInList("^HKS.*", theList)

on findInList(SearchString, searchList)
try
if class of searchList ≠ list then set searchList to searchList as list
try
set theResult to find text SearchString in searchList with regexp and string result
on error
return {}
end try
if class of theResult ≠ list then set theResult to theResult as list
set theResult to sortlist theResult with remove duplicates
set theResult to exclude items "msng" from theResult
try
set theResult to sortlist theResult comparison 2
end try
return theResult
on error
return false
end try
end findInList

Das "≠" bitte durch ein "ungleich" ersetzen.

Gruß
TMA

[ Edit durch Hans: Die lange Liste in kürzere Zeilen unterteilt und die Tabs durch je zwei Leerschläge ersetzt ]
als Antwort auf: [#520204]
(Dieser Beitrag wurde von Hans Haesler am 29. Nov 2013, 08:51 geändert)
Top
 
Hans Haesler  M  p
Beiträge: 5557
29. Nov 2013, 08:46
Beitrag #6 von 15
Beitrag ID: #520276
Bewertung:
(3160 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hallo TMA,

danke für die Ergänzung.

Sonderzeichen betreffend: Diese Problem-Kinder ersetzt man besser durch den entsprechenden (englischen) Text.

In diesem Fall: is not

Das gibt zwar etwas mehr zu tippen, aber so kann die Zerlegung vermieden werden.

Gruss, Hans
als Antwort auf: [#520274] Top
 
TMA
Beiträge: 347
29. Nov 2013, 08:56
Beitrag #7 von 15
Beitrag ID: #520277
Bewertung:
(3152 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hallo Hans,
ich glaube das hast du früher schonmal angemerkt.
Irgendwie bin ich es in meinen Scripten so gewohnt und paste die nur hier rein.
Mal schauen ob ich beim nächsten mal dran denke.

Gruß
TMA
als Antwort auf: [#520276] Top
 
firstin1out m
Beiträge: 58
29. Nov 2013, 12:43
Beitrag #8 von 15
Beitrag ID: #520296
Bewertung:
(3099 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Halo liebe Forenmitglieder,

prima, diese Beispiele kann man auch gut im workflow verwenden. Diese kleinen Erweiterungen sind eine große Hilfe und eine echte Progammbereicherung, vor allem, wenn man Geld bei anderer zusätzlicher software einsparen muß.


Ich hatte ja noch die Idee über swatchgroup zu gehen,
denn ich muß die Farben ja für meine Anwendung sowieso in einer Gruppe zusammenfassen.

Aber ich bekomme über den Inhalt immer nur meinen vergebenen deutschen Frbrnamen z.Bsp.
HKS Fargbruppe N, nicht aber wiederum an die Items.
Ist das auch nicht implementiert?


Gruß
firstin1out
als Antwort auf: [#520277] Top
 
Hans Haesler  M  p
Beiträge: 5557
29. Nov 2013, 13:07
Beitrag #9 von 15
Beitrag ID: #520298
Bewertung:
(3088 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hallo firstin1out,

ich bin unterwegs und kann vor heute Abend nichts ausprobieren.

Falls niemand eine Antwort postet: Würdest Du mir bitte ein typisches Dokument zustellen?

Danke im voraus.

Gruss, Hans
als Antwort auf: [#520296] Top
 
Uwe Laubender S
Beiträge: 3986
29. Nov 2013, 13:17
Beitrag #10 von 15
Beitrag ID: #520300
Bewertung:
(3078 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Zitat von firstin1out Aber ich bekomme über den Inhalt immer nur meinen vergebenen deutschen Frbrnamen z.Bsp.
HKS Fargbruppe N, nicht aber wiederum an die Items.


Hab kaum Erfahrung mit AppleScript, aber die Farben dürften auch 'ne ID-Nummer haben. Kannst Du die auslesen und mit sowas wie "itemByID" (implementiert in ExtendScript) arbeiten?
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#520296] Top
 
TMA
Beiträge: 347
29. Nov 2013, 13:35
Beitrag #11 von 15
Beitrag ID: #520303
Bewertung:
(3063 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Du lässt dir ja auch nur die Namen geben.

Die IDs bzw. die Objektreferenz bekommst du so:
Code
tell application "Adobe Illustrator" 
tell document 1
set inklist to swatches
end tell
end tell


Du kannst auch direkt 2 Listen befüllen. Eine mit Namen und analog dazu eine mit den Referenzen:
Code
tell application "Adobe Illustrator" 
tell document 1
set {nameList, idList} to {name of swatches, swatches}
end tell
end tell


Gruß
TMA
als Antwort auf: [#520300] Top
 
Uwe Laubender S
Beiträge: 3986
29. Nov 2013, 13:50
Beitrag #12 von 15
Beitrag ID: #520306
Bewertung:
(3051 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hm. Habe gerade im Objektmodell von Illustrator nachgeschaut. ID-Nummern für die Swatches gibt's da offenbar nicht. Sorry, war noch vom "herrlichen" InDesign DOM geblendet ;-)

Hier aus der ExtendScript-DOM-Doku für Illustrator CS6 nach Jongware:

Code
Property	Type		Access		Description 
color Color r/w The color information of the swatch.
name string r/w The swatch's name.
parent Object readonly The object's container.
typename string readonly The class name of the object.


Also: bin raus aus der Diskussion. Scusi noch mal für die evtl. Verwirrung, die ich gestiftet habe…
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#520303] Top
 
firstin1out m
Beiträge: 58
29. Nov 2013, 13:52
Beitrag #13 von 15
Beitrag ID: #520307
Bewertung:
(3046 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


hallo TMA,
Ok, is mir jetzt klar.
Aber warum das hier noch? Ergebnis ist 1 da müßten 86 enthalten sein.
number of items bezieht sich item nur auf swatchgroup?
siehe beigefügtes Bild.

tell application "Adobe Illustrator"
tell document 1
--get number of swatchgroups - ergebnis 2
set allcolors to swatchgroup 2
get the number of items of allcolors
end tell
end tell

gruß firstin1out
als Antwort auf: [#520303] Top
 
TMA
Beiträge: 347
29. Nov 2013, 14:14
Beitrag #14 von 15
Beitrag ID: #520309
Bewertung:
(3020 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Ich habe bisher kaum Erfahrung mit Illustrator Scripting, habe mir das aber mal kurz angesehen.

Mit:
Code
set allcolors to swatchgroup 2 

kommst du nicht weiter. "allcolors" ist in diesem Fall nur die Referenz zur "swatchgroup". Da hängen nur properties der Gruppe dran, keine zugewiesenen Farben.
Andersrum genauso. An der einzelnen Farbe hängt keine Info das sie zu einer Gruppe gehört.

Ich habe keine Ahnung wie Illustrator das intern zuweist.
Es gibt per AppleScript keine Möglichkeit da ran zu kommen.

Gruß
TMA
als Antwort auf: [#520307] Top
 
firstin1out m
Beiträge: 58
29. Nov 2013, 14:17
Beitrag #15 von 15
Beitrag ID: #520310
Bewertung:
(3013 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

swatches


Hallo liebe Forenmitglieder,

dann suche ich nicht weiter.
Das Leben ist zu kurz, um sich mit Dingen zu beschäftigen die per se nicht lösbar zu sein scheinen.

Vielen Dank für Eure Hilfe. Mein Ziel habe ich ja erreicht.

firstin1out
als Antwort auf: [#520309] Top
 
X