[GastForen Programme Print/Bildbearbeitung Adobe InDesign Eventskript "neue Ebenen"

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Eventskript "neue Ebenen"

Ingo Herber
Beiträge gesamt: 454

10. Nov 2007, 15:38
Beitrag # 1 von 19
Bewertung:
(12920 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich habe gerade Martins Eventscript zum Speichern von Sicherungskopien gesehen.
Kann man ... Nein, besser: Kannst du, lieber Martin das äußerst praktische "neue Ebenen-Skript" für ID CS 3 (PC) auch so modifizieren, dass es beim Anlegen eines neuen Dokuments automatisch ausgeführt wird, also zwei weitere Ebenen "Text" und "Grafik" anlegt?
Ich habe es in der HDS-Skriptsammlung nicht direkt gefunden, daher hier nochmal das Skript.
Code
var nu1 = app.activeDocument.layers.add({name:"Grafik"}); 
nu1.layerColor = 1767007588 ;
var nu1 = app.activeDocument.layers.add({name:"Text"});
nu1.layerColor = 1766290030 ;

// UIColors.lightBlue 1766613612
// UIColors.red 1767007588
// UIColors.green 1766290030
// UIColors.blue 1765960821
// UIColors.yellow 1767468151
// UIColors.magenta 1766680430
// UIColors.cyan 1766029678
// UIColors.gray 1766290041
// UIColors.black 1765960811
// UIColors.orange 1766814318
// UIColors.darkGreen 1766090610
// UIColors.teal 1767138668
// UIColors.tan 1767137646
// UIColors.brown 1765962350
// UIColors.violet 1767271540
// UIColors.gold 1766288484
// UIColors.darkBlue 1766089324
// UIColors.pink 1766878827
// UIColors.lavender 1766618734
// UIColors.brickRed 1765962340
// UIColors.oliveGreen 1766812790
// UIColors.peach 1766876008
// UIColors.burgundy 1765962343
// UIColors.grassGreen 1766287218
// UIColors.ochre 1766810482
// UIColors.purple 1766879856
// UIColors.lightGray 1766614898
// UIColors.charcoal 1766025324
// UIColors.gridBlue 1766285932
// UIColors.gridOrange 1766289266
// UIColors.fiesta 1766222181
// UIColors.lightOlive 1766616940
// UIColors.lipstick 1766615408
// UIColors.cuteTeal 1766028396
// UIColors.sulphur 1767077228
// UIColors.gridGreen 1766286439
// UIColors.white 1767336052

Damit könnte man z.B. sicherstellen, dass bei Arbeitsgruppen die Ebenen immer gleiche Namen und Farben haben.

Herzliche Grüße,
Ingo Herber

(Dieser Beitrag wurde von Ingo Herber am 10. Nov 2007, 15:40 geändert)
X

Eventskript "neue Ebenen"

Martin Fischer
  
Beiträge gesamt: 12778

10. Nov 2007, 17:21
Beitrag # 2 von 19
Beitrag ID: #321722
Bewertung:
(12893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ingo,

warum richtet Ihr die gewünschten Ebenen nicht von vorneweg, ohne geöffnete Dokumente, standardmäßig ein?
Oder erzeugt ein Masterdokument, von dem Ihr Kopien nehmt?


als Antwort auf: [#321719]
(Dieser Beitrag wurde von Martin Fischer am 10. Nov 2007, 23:14 geändert)

Eventskript "neue Ebenen"

Martin Fischer
  
Beiträge gesamt: 12778

11. Nov 2007, 11:51
Beitrag # 3 von 19
Beitrag ID: #321774
Bewertung:
(12861 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ingo,

den Hinweis zur Vorbereitung der Ebenen durch Einrichtung derselben ohne geöffnete Dokumente ist blind (ohne an InDesign zu sitzen) erfolgt. Nun sehe ich, daß das gar nicht geht.
Die "Masterdokumentlösung" (Vorlage) gilt immer noch.

Hier aber die Lösung über ein EventSript, das manchmal funktioniert:
Code
//addLayer.jsx 
#targetengine "myEngine"

var myEventListener = app.addEventListener( "afterNew", mainCode, false );

function mainCode()
{
addLayer( 'Grafik', UIColors.red );
addLayer( 'Text', UIColors.green );
}

function addLayer( aName, aCol )
{
try
{
aLayer = app.documents[0].layers.add( {name: aName} );
}
catch( e )
{
aLayer = app.activeDocument.layers.item( aName );
}
aLayer.layerColor = aCol;
}


Das Problem ist, daß die Ebene manchmal zu einem Zeitpunkt erzeugt werden will, zu dem das neue Dokument noch gar nicht zur Verfügung steht. Da müßte irgendwie noch eine Bremse rein, daß das Skript kurz innehält, um zu garantieren, daß die Hauptfunktion erst ausgeführt wird, sobald das neue Dokument auch tatsächlich zur Verfügung steht.

Daher habe ich oben für's Erste mal eine try-Routine eingebaut, die ggf. den Fehler abfängt und im schlimmsten Fall die Ebenenfarben des vorher aktiven Dokuments ändert.

Die Farben habe ich nicht über ihre Enumeration angesprochen, sondern über ihren Systemnamen. Dann kann man sich unter den Farben leichter etwas vorstellen und muß nicht jedesmal in einer Tabelle nachschlagen, um die Enumeration aufzulösen.


als Antwort auf: [#321722]

Eventskript "neue Ebenen"

Martin Fischer
  
Beiträge gesamt: 12778

11. Nov 2007, 15:15
Beitrag # 4 von 19
Beitrag ID: #321802
Bewertung:
(12840 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nun bin ich im Skripting-Forum auf die Lösung des Problems gestoßen:
Das aktuelle Dokument kann während der Ausführung des EventScripts nicht wie üblich als app.activeDocument oder app.documents[0] adressiert werden.
Aber es ist möglich, über das Elter (parent) des gerade aktiven Events an das aktive Dokument heranzukommen: myDoc = myEvent.parent.

Hier das Skript, das bei mir jetzt läuft:
Code
//addLayer.jsx 
#targetengine "myEngine"

var myEventListener = app.addEventListener( "afterNew", addLayer, false );

function addLayer( myEvent )
{
myDoc = myEvent.parent;
myDoc.layers.add( {name: 'Grafik', layerColor: UIColors.red} );
myDoc.layers.add( {name: 'Text', layerColor: UIColors.green} );
}



als Antwort auf: [#321774]

Eventskript "neue Ebenen"

Quarz
Beiträge gesamt: 3550

11. Nov 2007, 17:31
Beitrag # 5 von 19
Beitrag ID: #321810
Bewertung:
(12815 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich danke Dir für das ›schöne‹ Script.
Das kann ich gut gebrauchen, denn ich arbeite immer
mit den gleichen Ebenen und Farben.

Ich wollte Dich schon nach den Farbnamen fragen -
hab dann aber gesehen, dass sie ja oben stehen.

Woher kommt die Ebene ›Unbekannt 1‹ ?

Gruß
Quarz


als Antwort auf: [#321802]

Eventskript "neue Ebenen"

Martin Fischer
  
Beiträge gesamt: 12778

11. Nov 2007, 18:05
Beitrag # 6 von 19
Beitrag ID: #321812
Bewertung:
(12810 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Quarz,

> Woher kommt die Ebene ›Unbekannt 1‹ ?

Auf dem Mac habe ich eine "Ebene 1" aber keine "Unbekannt 1".
Ist die bei Dir neu hinzugekommen?
Oder ist das die Ebene, die standardmäßig bei neuen Dokumenten (ohne das Eventscript) erscheint?

Wenn Du willst, kannst Du diese über das EventScript löschen: myDoc.layers.item( 'Unbekannt 1' ).remove();

Oder umbenennen: myDoc.layers.item( 'Unbekannt 1' ).name = 'Ochsenschwanzsuppe';


als Antwort auf: [#321810]
(Dieser Beitrag wurde von Martin Fischer am 11. Nov 2007, 18:14 geändert)

Eventskript "neue Ebenen"

Quarz
Beiträge gesamt: 3550

11. Nov 2007, 18:19
Beitrag # 7 von 19
Beitrag ID: #321815
Bewertung:
(12804 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

natürlich ist es die Ebene ›Ebene 1‹.
Ich habe jetzt noch die eine Zeile zum Löschen hinzugefügt.
Nun ist alles bestens.

DANKE

Gruß
Quarz


als Antwort auf: [#321812]

Eventskript "neue Ebenen"

EssWeh
Beiträge gesamt: 532

12. Nov 2007, 09:21
Beitrag # 8 von 19
Beitrag ID: #321838
Bewertung:
(12742 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen zusammen,

habe gerade diesen Thread mit dem "schönen Skript" ; - ) hier gefunden und feststellen müssen, dass dieses leider nur nach Bestätigen zweier identischer Fehlermeldungen funktioniert, die da lauten:

_______________

Fehlernummer 775:
Fehlerzeichenfolge: Es existiert bereits eine Ebene dieses Namens.
Zeile 9.
Quelle: "myDoc.layers.add( {name: 'Text', LayerColor: UIColors.red} );
_______________

Das Skript von Martin habe ich um die "remove"-Zeile erweitert (da ich keine "Ebene 1" erhalte, nehme ich an, dass die Reihenfolge so stimmt), jedoch soll meine neue Textebene eigentlich "Typo" heißen (siehe Code):
_______________

//addLayer.jsx
#targetengine "myEngine"

var myEventListener = app.addEventListener( "afterNew", addLayer, false );

function addLayer( myEvent )
{
myDoc = myEvent.parent;
myDoc.layers.add( {name: 'Grafik', layerColor: UIColors.blue} );
myDoc.layers.add( {name: 'Typo', layerColor: UIColors.red} );
myDoc.layers.item( {'Ebene 1'} ).remove();
_______________

Hat der Skriptlaie, der ich bin, da irgend einen Fehler hineingezaubert, der diese Fehlermeldung (zweimal) provoziert??

Und noch etwas: Wäre es denn möglich, dass die Ebene "Typo" gleich "richtig" über der Ebene "Grafik" angelegt wird?
Ein Tauschen der beiden entsprechenden Zeilen bewirkt das leider nicht.


als Antwort auf: [#321815]
(Dieser Beitrag wurde von EssWeh am 12. Nov 2007, 09:23 geändert)

Eventskript "neue Ebenen"

Quarz
Beiträge gesamt: 3550

12. Nov 2007, 10:00
Beitrag # 9 von 19
Beitrag ID: #321839
Bewertung:
(12736 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

Du hast am Schluss die schließende geschweifte Klammer vergessen.

Die Reihenfolge der Scripte entspricht der gegengesetzen Aufzählung.
Also Deine 1. Ebene "Grafik" wird in Deiner Ebenenpaltette auf die
letzte Stelle gesetzt.
Ist ja eigentlich auch logisch.

Du kannst ja auch, wenn Du willst, noch etliche Ebene hinzufügen,
mit den Farben, die oben genannt sind. Deren Reihenfolge entspricht
der Reihenfolge in der Ebenenpalette.

Gruß
Quarz


als Antwort auf: [#321838]

Eventskript "neue Ebenen"

Martin Fischer
  
Beiträge gesamt: 12778

12. Nov 2007, 10:37
Beitrag # 10 von 19
Beitrag ID: #321842
Bewertung:
(12716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

> Fehlerzeichenfolge: Es existiert bereits eine Ebene dieses Namens.

Ist dem so?
Existiert bei Dir eine Ebene mit Namen "Text"?

Auf die fehlende geschweifte Klammer am Ende hat Quarz bereits hingewiesen.

Eine Ebene (hier die Ebene 'Text') kannst Du mit folgendem Befehl ganz nach oben verschieben:
app.activeDocument.layers.item( 'Text' ).move( LocationOptions.atBeginning );

Das Gegenteil (ganz nach unten) wäre:
app.activeDocument.layers.item( 'Text' ).move( LocationOptions.atEnd );

Übrigens sieht meine eigene Version jetzt so aus:
Code
//addLayer.jsx 
#targetengine "myEngine"

var myEventListener = app.addEventListener( "afterNew", addLayer, false );

function addLayer( myEvent )
{
myDoc = myEvent.parent;
myDoc.layers[0].name = 'Text'
myDoc.layers.add( {name: 'Grafik', layerColor: UIColors.red} );
myDoc.layers.add( {name: 'Notes', layerColor: UIColors.gray} );
// ... weitere Ebenen hinzufügen

// die unterste Ebene aktivieren
myDoc.activeLayer = myDoc.layers[-1]; // oder ... = myDoc.layers.item( 'Text' );
}


D.h. ich lösche die vorhandene Ebene nicht, sondern benenne sie einfach um.
Das Löschen würde Probleme bereiten, wenn ein neues Dokument mit der Option "Mustertextrahmen" angelegt würde. Denn dort würden die Mustertextrahmen auf die Ebene gelegt, die gleich danach gelöscht wird.

Am Ende wird die unterste Ebene aktiviert.


als Antwort auf: [#321838]
(Dieser Beitrag wurde von Martin Fischer am 18. Nov 2007, 22:15 geändert)

Eventskript "neue Ebenen"

Ingo Herber
Beiträge gesamt: 454

12. Nov 2007, 14:00
Beitrag # 11 von 19
Beitrag ID: #321899
Bewertung:
(12672 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
ich habe das Thema übers Wochenende ganz interessiert verfolgt, konnte das aber erst jetzt testen. Ich bin begeistert. Es ist mal wieder so ein kleines "Helferlein", das einfach fast täglich weiterhilft.
Also schon mal ganz herzlichen Dank.
Ingo Herber


als Antwort auf: [#321842]

Eventskript "neue Ebenen"

Martin Fischer
  
Beiträge gesamt: 12778

12. Nov 2007, 14:57
Beitrag # 12 von 19
Beitrag ID: #321913
Bewertung:
(12652 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ingo,

ich danke auch Dir:
Bis zu Deiner Anfrage hin hatte ich noch nicht gewußt, daß mir so etwas fehlt.
Und jetzt will ich es nicht mehr missen.


als Antwort auf: [#321899]

Eventskript "neue Ebenen"

EssWeh
Beiträge gesamt: 532

13. Nov 2007, 09:48
Beitrag # 13 von 19
Beitrag ID: #322040
Bewertung:
(12607 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Antwort auf [ Martin Fischer ]
> Fehlerzeichenfolge: Es existiert bereits eine Ebene dieses Namens.

Ist dem so?
Existiert bei Dir eine Ebene mit Namen "Text"?

Nein, eine Ebene mit diesem Namen existierte bei der Version 1 des Skripts nicht.

Antwort auf [ Martin Fischer ] Auf die fehlende geschweifte Klammer am Ende hat Quarz bereits hingewiesen.

Die hatte ich lediglich beim Hierhineinkopieren vergessen.



Ich habe nun Version 3 installiert und nun verhielt/verhält es sich folgendermaßen:

Beim ersten Starten von InDesign wurde heute morgen - ohne weiteres Zutun - eine neue Datei geöffnet (also ohne Datei\Neu ...) und dabei wurden die 3 Ebenen angelegt ...???

Beim nächsten Starten von InDesign wurde dann kein neues Dokument mehr angelegt ...??

Öffne ich nun ein neues Dok, so werden die Ebenen wie gewünscht automatisch mit den entsprechenden Farben angelegt. Es tauchen nun auch keine Fehlermeldungen mehr auf. Also - alles paletti.

Nur das Aktivieren der oberen Ebene (bei mir "Typo") klappt leider nicht.
Diesen zusätzlichen Mausklick kann ich aber durchaus verschmerzen ... 8 - P

Und wiedermal: 1000 Dank - natürlich auch für Ingos Idee!!


als Antwort auf: [#321842]
(Dieser Beitrag wurde von EssWeh am 13. Nov 2007, 09:52 geändert)

Eventskript "neue Ebenen"

Martin Fischer
  
Beiträge gesamt: 12778

13. Nov 2007, 10:25
Beitrag # 14 von 19
Beitrag ID: #322052
Bewertung:
(12594 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

> Beim ersten Starten von InDesign wurde heute morgen - ohne weiteres Zutun - eine
> neue Datei geöffnet (also ohne Datei\Neu ...) und dabei wurden die 3 Ebenen angelegt ...???

Das ist ein seltsames Verhalten und im Skript so nicht vorgesehen.
Es sollte nur auf das Neu-Anlegen eines Dokuments reagieren.
Bitte halte mich auf dem Laufenden, ob so etwas nochmal passiert.


> Nur das Aktivieren der oberen Ebene (bei mir "Typo") klappt leider nicht.
> Diesen zusätzlichen Mausklick kann ich aber durchaus verschmerzen ... 8 - P

Es wäre schon besser, es würde funktionieren.
Denn im schlimmsten Fall merkt man erst spät, daß man auf der falschen Ebene arbeitet.

Bitte ergänze die Zeile
Code
myDoc.activeLayer = myDoc.layers.item( 'Typo' ); 



als Antwort auf: [#322040]

Eventskript "neue Ebenen"

Quarz
Beiträge gesamt: 3550

13. Nov 2007, 11:10
Beitrag # 15 von 19
Beitrag ID: #322080
Bewertung:
(12583 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

es ist jetzt alles soweit ok.
siehe Anlage

Allerdings wäre es schön, wenn "Ebene 1" "Musterseite"
heißen würde und eine andere Farbe hätte.

Ich hatte die gleiche Fehlermeldung wie Stefan.
Dann habe ich aber bemerkt, dass ich noch - zur
Sicherheit - eine Kopie im Ordner "StartupScripts" hatte.

Gruß
Quarz


als Antwort auf: [#322052]
Anhang:
Ebenenpalette.jpg (12.1 KB)
X