Hallo Hans-Gerd,
eine erste Version des Scripts ist bereit. Ich habe ganz einfach mein bestehendes Script zur Erzeugung eines Textschattens erweitert.
Na... so einfach war es nicht... Denn dort wo das Textschatten-Script fertig ist, geht es erst richtig los. Die Box muss noch sieben Mal kopiert und verschoben werden.
Das Script ist noch nicht fertig, aber es kann schon eine ganze Menge.
– Es können mehrere Boxen ausgewählt werden.
– Eine Box kann auch mit anderen Boxen verkettet sein.
– Die farbige Schrift wird auf "Aussparen" gesetzt.
– Es werden auch Textpfade akzeptiert (aber keine Bézier-Kurven).
– Die gewählte Farbe wird gespeichert und beim nächsten Abspielen (falls verfügbar) an den Beginn der Liste gesetzt.
– Der Tonwert und der Versatz werden ebenfalls gespeichert und wieder vorgeschlagen.
Was noch fehlt:
– Die Boxen werden am Schluss gruppiert.
– Ausführungszeit verringern.
– Prüfungen der Eingaben optimieren.
– Auch Bézier-Textpfade behandeln.
Die Farbe, der Tonwert und der Versatz werden per Dialog-Director-Dialog durch den Anwender eingegeben. Hier ein Auszug (wie meistens ist das ganze zu lang, aber Interessierte können das Script bei mir verlangen).
Nachdem die ausgewählte Box kopiert, verschoben und der Inhalt eingefärbt ist, wird ein Handler aufgerufen, in welchem eine Wiederholungsschleife die Box kopiert und verschiebt, immer ausgehend von den 'origin of bounds' (die Y- und -X-Werte der linken oberen Ecke) der Originalbox (= orY und orX). Die Variable 'v' enthält den vom Anwender eingegebenen Versatz. Die Elemente der Listen 'vList' und 'hList' sind vorbereitet: Versatz positiv (= v), Versatz negativ (= -v) oder Versatz null (= 0).
---
on duplicateRect()
set vList to {0, v, v, v, -v, -v, -v}
set hList to {-v, 0, v, -v, 0, v, -v}
tell document 1 of application "QuarkXPress 4.11"
repeat with i from 1 to 7
try
set {y, x} to {orY + (item i of vList), orX + (item i of hList)}
set selected of text box "o_u_t_l_i_n_e" to true
copy current box to after current box
set name of current box to ""
tell text box "o_u_t_l_i_n_e"
set origin of bounds to {y, x}
end tell
end try
end repeat
end tell
end duplicateRect
---
Das Problem ist, dass eine neu erzeugte Box wieder adressierbar wird. Hier wird es so gelöst, dass die aktuelle Box ausgewählt und einen Namen hat. Nach dem Kopieren wird der Name der aktiven Box gelöscht, das vorher erzeugte Duplikat wird selektiert, dupliziert usw.
Ich werde versuchen, das Benennen und Auswählen zu vermeiden und stattdessen die 'uniqueID' (also einzigartige Indexnummer) einzusetzen.
Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418771]