[GastForen Programmierung/Entwicklung AppleScript Illustrator, Objekte verschieben

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

Illustrator, Objekte verschieben

vv173
Beiträge gesamt: 16

13. Aug 2010, 11:13
Beitrag # 1 von 30
Bewertung:
(11358 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich brauche mal Hilfe bei einem kleinen Problem:

Ich habe ein script, dass mir eine Datei (bei mir ist das ein eps) in illustrator öffnet und als ai abspeichert.


on open of finderObjects
repeat with nFile in finderObjects
tell application "Adobe Illustrator"
open (nFile as alias)
set selection to every page item of current document -- path item, text item, group item
-- hier fehlt mir noch etwas ---

save current document as Illustrator
close current document saving no
end tell
tell application "Finder"
activate
delete nFile
end tell

end repeat
end open




Jetzt möchte ich noch alles anwählen und an den linken Seitenrand setzen.
Das mit dem Anwählen habe ich hinbekommen, aber ich finde nichts für die Verschiebung. kann mir einer helfen?

DANKE
X

Illustrator, Objekte verschieben

-hans-
Beiträge gesamt: 748

13. Aug 2010, 15:17
Beitrag # 2 von 30
Beitrag ID: #448798
Bewertung:
(11329 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo vv173,

wenn Du die Auswahl gruppierst, kann alles auf einen Rutsch verschoben werden ...

Hoffe es klappt:

Code
tell application "Adobe Illustrator" 
activate
set thisdoc to current document
tell thisdoc
set selection to every page item
set groupRef to make new group item at end of thisdoc
set selectedItems to selection
move selectedItems to end of groupRef
set MyYPosition to item 2 of position of group item 1
set position of group item 1 to {0, MyYPosition}
end tell
end tell



als Antwort auf: [#448770]

Illustrator, Objekte verschieben

vv173
Beiträge gesamt: 16

16. Aug 2010, 12:09
Beitrag # 3 von 30
Beitrag ID: #448895
Bewertung:
(11275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Antwort, aber das läuft bei mir nicht, ich bekomme immer die Meldung:

class aiAD of application "Adobe Illustrator" kann nicht gelesen werden.

Gibt es denn keinen Befehl in Applescript der die angewählten Elemente auf x= 0 verschiebt? Das würde mir schon reichen.


als Antwort auf: [#448798]
(Dieser Beitrag wurde von vv173 am 16. Aug 2010, 12:09 geändert)

Illustrator, Objekte verschieben

-hans-
Beiträge gesamt: 748

16. Aug 2010, 13:04
Beitrag # 4 von 30
Beitrag ID: #448906
Bewertung:
(11255 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo vv173,

bis CS3 funktioniert das bei mir, neuere Versionen kann ich leider nicht testen ... (Voraussetzung: Es ist ein Dokument mit ein paar page items offen bevor das Script gestartet wird)

Wenn Du die Selection auf X=0 setzt, dann setzt Illustrator jedes Element der Auswahl dorthin, deshalb der Umweg übers gruppieren ...

Gruß

Hans


als Antwort auf: [#448895]

Illustrator, Objekte verschieben

Hans Haesler
  
Beiträge gesamt: 5822

16. Aug 2010, 22:31
Beitrag # 5 von 30
Beitrag ID: #448954
Bewertung:
(11232 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo vv173,

das gepostete Script funktioniert hier auch mit Illustrator 14 (CS4).

Welche Version benutzest Du? Unter welcher Plattform?

Hans-Gerd liegt richtig: Wenn die Objekte nicht gruppiert sind, dann werden sie alle an die X-Null-Position befördert. Es sei denn, man mache eine erste Schleife durch die Objekte, nur um herauszufinden, welcher X-Wert der kleinste ist. Dann in einer zweiten Schleife benutzt man diesen Wert, um die Objekte einzeln um die Differenz zu verschieben.

@ Hans-Gerd: Das Script könnte etwas vereinfacht werden:

Code
tell document 1 of application "Adobe Illustrator" 
activate
set selection to every page item
set groupRef to make new group item at end
set selectedItems to selection
move selectedItems to end of groupRef
set {x, y} to position of groupRef
set position of groupRef to {0, y}
end tell

Gruss, Hans


als Antwort auf: [#448906]

Illustrator, Objekte verschieben

vv173
Beiträge gesamt: 16

17. Aug 2010, 08:53
Beitrag # 6 von 30
Beitrag ID: #448961
Bewertung:
(11197 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich vergaß zu erwähnen: CS3, OS 10.6.4.

Wenn ich Dein Script in mein Script einbette:

Code
on open of finderObjects 
repeat with nFile in finderObjects
tell document 1 of application "Adobe Illustrator"
activate
set selection to every page item
set groupRef to make new group item at end
set selectedItems to selection
move selectedItems to end of groupRef
set {x, y} to position of groupRef
set position of groupRef to {0, y}
end tell
tell application "Finder"
activate
delete nFile
end tell

end repeat
end open


erhalte ich folgende Fehlermeldung:

"document 1 of application "Adobe Illustrator" kann nicht als "every «class caAT» of document 1 of application "Adobe Illustrator" gesetzt werden.

Ich muss gestehen, ich bin da völlig ratlos, da das schon weit über meine Fähigkeiten hinausgeht ...


als Antwort auf: [#448954]

Illustrator, Objekte verschieben

Hans Haesler
  
Beiträge gesamt: 5822

17. Aug 2010, 09:09
Beitrag # 7 von 30
Beitrag ID: #448962
Bewertung:
(11194 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo vv173,

so kann es nicht klappen.

Aber versuche mal Folgendes:
1. Ein neues Illustrator-Dokument erzeugen.
2. Ein paar Rechtecke zeichnen.
3. Mein unverändertes Script starten.

Jetzt sollten die Objekte ausgewählt, gruppiert und an den linken Rand verschoben werden.

Auf das Droplet komme ich später zurück.

Gruss, Hans


als Antwort auf: [#448961]

Illustrator, Objekte verschieben

Hans Haesler
  
Beiträge gesamt: 5822

17. Aug 2010, 11:18
Beitrag # 8 von 30
Beitrag ID: #448981
Bewertung:
(11165 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo vv173,

und? Klappt es mit meinem Drei-Punkte-Programm?

Das Haupt-Problem mit Deinem Droplet: Die Dateien, welche Du auf das Icon ziehst, werden nicht geöffnet.

Und dann ist unklar, weshalb die Dateien anschliessend wieder entfernt werden.

Vor dem Entwickeln eines Scripts sollte man immer eine Outline erstellen, eine Beschreibung der Aktionen.

Nachstehend das ergänzte Droplet. Jetzt werden die Dateien der Reihe nach geöffnet. Bei jedem werden die Objekte ausgewählt, gruppiert und verschoben.

Code
on open of finderObjects 
repeat with nFile in finderObjects
tell application "Adobe Illustrator"
activate
open nFile
tell document 1
set selection to every page item
set groupRef to make new group item at end
set selectedItems to selection
move selectedItems to end of groupRef
set {x, y} to position of groupRef
set position of groupRef to {0, y}
end tell
end tell
end repeat
end open

Aber die Dokumente bleiben vorerst geöffnet und die Änderung wird nicht gespeichert.

Gruss, Hans


als Antwort auf: [#448962]

Illustrator, Objekte verschieben

kkauer
Beiträge gesamt: 661

17. Aug 2010, 11:22
Beitrag # 9 von 30
Beitrag ID: #448982
Bewertung:
(11161 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] Jetzt sollten die Objekte ausgewählt, gruppiert und an den linken Rand verschoben werden.


Wäre es nicht sinnvoller, die Zeichenfläche zu verschieben? Das Gruppieren verändert z.B. die Ebenenzugehörigkeit der Objekte.


als Antwort auf: [#448962]

Illustrator, Objekte verschieben

vv173
Beiträge gesamt: 16

17. Aug 2010, 11:28
Beitrag # 10 von 30
Beitrag ID: #448983
Bewertung:
(11156 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Oh je ...

Wenn ich mein eps auf das unveränderte Script ziehe passiert gar nichts.

Wenn ich mein eps auf Dein letztes Script ziehe, dann erhalte ich im Illu die Meldung: "Einige Dateien können nicht in den erwarteten Typ umgewandelt werden."


als Antwort auf: [#448982]

Illustrator, Objekte verschieben

Hans Haesler
  
Beiträge gesamt: 5822

17. Aug 2010, 11:42
Beitrag # 11 von 30
Beitrag ID: #448985
Bewertung:
(11145 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Karsten,

falls sich die Objekte auf mehr als einer Ebene befinden, dann ist das Gruppieren tatsächlich keine gute Lösung, wenn die Ebenenzugehörigkeit erhalten bleiben soll.

Aber ob das ein Problem ist, kann nur der vv173 sagen.

Wie die Zeichenfläche verschoben werden kann, weiss ich nicht. Falls es möglich ist, müsste man zuerst den Verschiebungswert feststellen. Wie oben schon erklärt, mit einer Schleife durch die Objekte.

Gruss, Hans


als Antwort auf: [#448982]

Illustrator, Objekte verschieben

Hans Haesler
  
Beiträge gesamt: 5822

17. Aug 2010, 11:49
Beitrag # 12 von 30
Beitrag ID: #448987
Bewertung:
(11144 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo vv173,

das eps nicht auf das unveränderte Script ziehen, sondern:

1. EPS-Dokument mit Illustrator öffnen.
2. Das Script ab Skripteditor starten.

Die Fehlermeldung wird aber sehr wahrscheinlich auch kommen. Ich vermute, dass sie von SnowLeopard verursacht wird. Vielleicht kann uns jemand weiterhelfen, welcher entsprechend ausgerüstet ist.

Gruss, Hans


als Antwort auf: [#448983]

Illustrator, Objekte verschieben

vv173
Beiträge gesamt: 16

17. Aug 2010, 12:26
Beitrag # 13 von 30
Beitrag ID: #448992
Bewertung:
(11108 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Meine Ausgangsposition war:

Ich habe ein (oder mehrere) eps. Diese haben leider u. a. nur eine eine ungenügende Vorschau und leider tw. auch andere Mängelchen.
Daher möchte ich, bevor ich die Grafik in Indesign einlade,
1. die Datei in ai öffnen
2. die Seitenelemente auf x=o stellen
3. als ai speichern, schließen
4. das Original-eps in den Papierkorb legen.

Damit hätte ich eine ganze Reihe von lästigen Arbeitsschritten mit einem Finder-Drop oder einem Dienst/Kontextmenüklick erledigt.

Dank Deiner Hilfe mit diesem Code

Code
on open of finderObjects 
repeat with nFile in finderObjects
tell application "Adobe Illustrator"
open (nFile as alias)
set selection to every page item of current document -- path item, text item, group item

---- Gruppierungsbefehl ??? ----

set {x, y} to position of selection

set position of selection to {0, y}

save current document as Illustrator
close current document saving no
end tell
tell application "Finder"
activate
delete nFile
end tell

end repeat
end open


klappt das auch fast alles, bis auf die Gruppierung.
Es werden alle Objekte einzeln an die linke Seitenkante gelegt.

Wenn jetzt noch vor der "x=0-Setzung" ein funktionierender "Gruppierungs-Befehl" eingebaut werden könnte, wäre ich glücklich.


als Antwort auf: [#448987]

Illustrator, Objekte verschieben

Hans Haesler
  
Beiträge gesamt: 5822

17. Aug 2010, 12:37
Beitrag # 14 von 30
Beitrag ID: #448995
Bewertung:
(11101 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo vv173,

was geschieht, wenn Du die beiden Schritte in meiner Antwort von 11.49 Uhr ausführst?

Kommt dieselbe Meldung?

Gruss, Hans


als Antwort auf: [#448992]

Illustrator, Objekte verschieben

vv173
Beiträge gesamt: 16

17. Aug 2010, 12:41
Beitrag # 15 von 30
Beitrag ID: #448996
Bewertung:
(11095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nein, das klappt. Die Elemente werden gruppiert und auf x=0 verschoben.


als Antwort auf: [#448995]
X