[GastForen Programmierung/Entwicklung AppleScript swatches

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

swatches

firstin1out
Beiträge gesamt: 59

28. Nov 2013, 08:56
Beitrag # 1 von 15
Bewertung:
(5504 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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
X

swatches

Hans Haesler
  
Beiträge gesamt: 5826

28. Nov 2013, 09:13
Beitrag # 2 von 15
Beitrag ID: #520198
Bewertung:
(5488 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

firstin1out
Beiträge gesamt: 59

28. Nov 2013, 09:35
Beitrag # 3 von 15
Beitrag ID: #520200
Bewertung:
(5472 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

Hans Haesler
  
Beiträge gesamt: 5826

28. Nov 2013, 09:56
Beitrag # 4 von 15
Beitrag ID: #520204
Bewertung:
(5458 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

TMA
Beiträge gesamt: 399

29. Nov 2013, 07:24
Beitrag # 5 von 15
Beitrag ID: #520274
Bewertung:
(5388 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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)

swatches

Hans Haesler
  
Beiträge gesamt: 5826

29. Nov 2013, 08:46
Beitrag # 6 von 15
Beitrag ID: #520276
Bewertung:
(5372 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

TMA
Beiträge gesamt: 399

29. Nov 2013, 08:56
Beitrag # 7 von 15
Beitrag ID: #520277
Bewertung:
(5364 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

firstin1out
Beiträge gesamt: 59

29. Nov 2013, 12:43
Beitrag # 8 von 15
Beitrag ID: #520296
Bewertung:
(5311 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

Hans Haesler
  
Beiträge gesamt: 5826

29. Nov 2013, 13:07
Beitrag # 9 von 15
Beitrag ID: #520298
Bewertung:
(5300 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

Uwe Laubender
Beiträge gesamt: 5321

29. Nov 2013, 13:17
Beitrag # 10 von 15
Beitrag ID: #520300
Bewertung:
(5290 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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?


als Antwort auf: [#520296]

swatches

TMA
Beiträge gesamt: 399

29. Nov 2013, 13:35
Beitrag # 11 von 15
Beitrag ID: #520303
Bewertung:
(5275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

Uwe Laubender
Beiträge gesamt: 5321

29. Nov 2013, 13:50
Beitrag # 12 von 15
Beitrag ID: #520306
Bewertung:
(5263 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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…


als Antwort auf: [#520303]

swatches

firstin1out
Beiträge gesamt: 59

29. Nov 2013, 13:52
Beitrag # 13 von 15
Beitrag ID: #520307
Bewertung:
(5258 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]
Anhang:
Bildschirmfoto 2013-11-29 um 13.26.35.png (15.9 KB)

swatches

TMA
Beiträge gesamt: 399

29. Nov 2013, 14:14
Beitrag # 14 von 15
Beitrag ID: #520309
Bewertung:
(5232 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

swatches

firstin1out
Beiträge gesamt: 59

29. Nov 2013, 14:17
Beitrag # 15 von 15
Beitrag ID: #520310
Bewertung:
(5225 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
18.06.2024

Online
Dienstag, 18. Juni 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

https://www.impressed.de/schulung.php?c=sDetail&sid=328

So optimieren Sie Ihren LFP-Workflow
Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=328

So optimieren Sie Ihren LFP-Workflow