[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Alle Objekte aller Musterseiten auswählen/einlesen

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

Alle Objekte aller Musterseiten auswählen/einlesen

sascha.bucher
Beiträge gesamt: 35

27. Jun 2012, 16:55
Beitrag # 1 von 4
Bewertung:
(1819 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich finde die richtige Adressierung für alle Objekte auf allen Musterseiten auf einer bestimmten Ebene leider nicht.

Für die normalen Seiten des Dokuments funktioniert das wunderbar:
Code
var _Document = app.documents[0]; 
var _LayerSource = "Ebene 1";
var _LayerItems = _Document.layers.item(_LayerSource).allPageItems;
var _LayerItemsNumber = _Document.layers.item(_LayerSource).allPageItems.length;


Auf diese Weise erhalte ich alle Objekte sowie deren Anzahl des Dokuments auf der betreffenden Ebene. Das gleiche brauche ich nun für die Musterseiten. Das müsste eigentlich irgendwie über diese Adressierung funktionieren:

Für die Musterseiten scheint es irgendwie komplizierter zu sein:
Code
var _LayerItemsMaster = _Document.MasterSpread.allPageItems; 
var _LayerItemsMasterNumber = _Document.MasterSpread.allPageItems.length;


Mir ist klar das die Adressierung nicht komplett ist. Aber ich habe es auf sicher 50 Arten versucht und erhalte immer nur Fehlermeldungen oder die Anzahl der Musterseiten aber nie die Objekte. Kann mir da jemand helfen?
X

Alle Objekte aller Musterseiten auswählen/einlesen

mx
Beiträge gesamt: 161

29. Jun 2012, 08:40
Beitrag # 2 von 4
Beitrag ID: #497260
Bewertung:
(1762 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sascha,

so eine elegante Lösung sehe ich da nicht.

Du könntest immer noch in zwei Schleifen über alle MasterSpreads und alle PageItems darauf gehen und dann je nach Layer entscheiden, was damit passiert:
Code
for(var i=0; app.activeDocument.masterSpreads.length > i; i++) 
for(var j=0; app.activeDocument.masterSpreads[i].pageItems.length > j; j++)
app.activeDocument.masterSpreads[i].pageItems[j].itemLayer.name == "Ebene 1" ? $.bp() : 1;


Vielleicht hast Du zusätzlich noch ein paar Fehler, weil ExtendScript die Großschreibung berücksichtigt?

Viele Grüße
Jo


als Antwort auf: [#497151]

Alle Objekte aller Musterseiten auswählen/einlesen

Uwe Laubender
Beiträge gesamt: 4997

29. Jun 2012, 13:25
Beitrag # 3 von 4
Beitrag ID: #497299
Bewertung:
(1744 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Sascha!
Das ganze wurde schon mal im amerikanischen Adobe InDesign Scripting-Forum diskutiert:

http://forums.adobe.com/message/4131508#4131508

Schau Dir mal die Antwort von Marc Autret an.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#497151]

Alle Objekte aller Musterseiten auswählen/einlesen

sascha.bucher
Beiträge gesamt: 35

29. Jun 2012, 16:10
Beitrag # 4 von 4
Beitrag ID: #497309
Bewertung:
(1724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Antworten. Das hat mir zumindest gezeigt, dass es den einfachen Weg nicht gibt. Musterseiten werden anscheinend ganz anders behandelt als normale Seiten. Mein Bedürfnis war es, auf allen Musterseiten alle Objekte die auf einer bestimmten Ebene liegen auf eine andere Ebene zu verschieben. Die Reihenfolge innerhalb der Ebene soll natürlich gleich bleiben usw.

Ich habe es nun wie vorgeschlagen mit zwei verschachtelten Schleifen und einer Abfrage der Ebene bei jedem Objekt gelöst. Der betreffende Ausschnitt des Scripts sieht wie folgt aus:
Code
    if (_IncludeMasterPage){ 
if (_LayerSourcePosition < _LayerTargetPosition){
//Schleife zählt Rückwärts damit die Reihenfolge der Objekte erhalten bleibt

for (var i = 0; _Document.masterSpreads.length > i; i++) {
for (var j = _Document.masterSpreads[i].pageItems.length-1; j > -1; j--) {
if (_Document.masterSpreads[i].pageItems[j].itemLayer.name == _LayerSource){

var _CurrentSelection = app.activeDocument.masterSpreads[i].pageItems[j];
_CurrentSelection.locked = false;
_CurrentSelection.move(_Document.layers.itemByName(_LayerTarget));

//Durchführung für Dialog am Schluss zählen
_MasterPageItems++;
}
}
}
}
else {
//Schleife zählt vorwärts und enthält zusätzlich ein sendToBack um die Objekte unter die bestehenden Objekte zu legen
for (var i = 0; _Document.masterSpreads.length > i; i++) {
for (var j = 0; _Document.masterSpreads[i].pageItems.length > j; j++) {
if (_Document.masterSpreads[i].pageItems[j].itemLayer.name == _LayerSource){

var _CurrentSelection = app.activeDocument.masterSpreads[i].pageItems[j];
_CurrentSelection.locked = false;
_CurrentSelection.move(_Document.layers.itemByName(_LayerTarget));
_CurrentSelection.select();
app.selection[0].sendToBack();

//Durchführung für Dialog am Schluss zählen
_MasterPageItems++;
}
}
}
}
}

Alles was mit _ beginnt sind Variablen von mir, die fix, berechnet oder via Dialog erzeugt werden.

Viel Zeit gebraucht, aber wenn es dann schlussendlich funktioniert hat man doch immer wieder Freude daran.


als Antwort auf: [#497299]
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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
09.09.2021 - 17.12.2021

Digicomp Academy, Zürich
Donnerstag, 09. Sept. 2021, 13.00 Uhr - Freitag, 17. Dez. 2021, 19.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von Publishing NETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: 6'300.– zzgl. 7.7% MWST
Dauer: 18 Tage(ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberater AT digicomp DOT ch