[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Auf Objekte innerhalb von Gruppen zugreifen

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

Auf Objekte innerhalb von Gruppen zugreifen

faxinger
Beiträge gesamt: 195

3. Aug 2017, 09:47
Beitrag # 1 von 10
Bewertung:
(2916 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe schon ein Skript das mir alle Objekte auf dem Druckbogen die das Objektformat "A" haben um 90 Grad dreht. Das funktioniert solange gut sofern diese Objekte ungruppiert auf dem Druckbogen herumliegen.

Mein Fall ist aber leider so, dass diese Objekte eigentlich Teile von mehreren Gruppen sind.
Daher muss ich immer zuerst alle Gruppierungen auflösen das Skript ausführen und dann die Gruppierungen händisch wieder umsetzen.

Ginge das auch per Skript dass ich auf alle Elemente die Objektformat A haben innerhalb der Gruppe drehe und somit die Gruppierungen nicht auflösen müsste?

Danke
Hier Klicken X

Auf Objekte innerhalb von Gruppen zugreifen

Uwe Laubender
Beiträge gesamt: 4242

3. Aug 2017, 11:25
Beitrag # 2 von 10
Beitrag ID: #558908
Bewertung:
(2910 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
( nahezu* ) alle Objekte einer Seite bekommst Du so:

Code
var objStyleName = "Mein Objektformatname"; 

var doc = app.activeDocument;
var objectStyle = doc.objectStyles.itemByName( objStyleName );
if(!objectStyle.isValid){ alert("Objektformat nicht gefunden. Abbruch."); exit() };

// Beispiel Seite 1 des aktiven Dokuments:
var allPageItemsOfPage1 = doc.pages[0].allPageItems;

// Schleife:
for(var n=0;n<allPageItemsOfPage1.length;n++)
{
if(allPageItemsOfPage1[n].appliedObjectStyle == objectStyle)
{
// Was mit dem gefundenen Objekt passieren soll:
doSomethingReasonable( allPageItemsOfPage1[n] );
};
}

function doSomethingReasonable( pageItem )
{
alert("Rotate me!"+"\r"+pageItem.id+"\r"+pageItem.parent.constructor.name);
};


( nahezu* ) alle Objekte eines Druckbogens:

Code
var allPageItemsOfSpread1 = doc.spreads[0].allPageItems; 


nahezu*
nahezu deswegen, weil allPageItems einer Seite, Druckbogen oder Dokuments nur den aktiven Status eines Mehrstatusobjekts erfassen kann.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#558906]

Auf Objekte innerhalb von Gruppen zugreifen

faxinger
Beiträge gesamt: 195

3. Aug 2017, 13:17
Beitrag # 3 von 10
Beitrag ID: #558911
Bewertung:
(2896 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

vielen Dank.

Ich werde es dann gleich testen und Feedback geben.

LG
faxinger


als Antwort auf: [#558908]

Auf Objekte innerhalb von Gruppen zugreifen

faxinger
Beiträge gesamt: 195

3. Aug 2017, 13:21
Beitrag # 4 von 10
Beitrag ID: #558912
Bewertung:
(2894 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaube da kollidiert etwas:

das war mein skript dass die Gruppen unberücksichtigt ließ:
Code
 // Allen vorhandenen Textrahmen  mit Objektformat  "artikelnummer" um 90° drehen // 
var allFrames = app.activeDocument.textFrames;
var nFrames = allFrames.length;

for (var n=0; n<nFrames; n++) {
var curFrame = allFrames[n];
if (curFrame.appliedObjectStyle.name == "artikelnummer") {
curFrame.rotationAngle = 90;
}
}



als Antwort auf: [#558911]

Auf Objekte innerhalb von Gruppen zugreifen

Uwe Laubender
Beiträge gesamt: 4242

3. Aug 2017, 13:45
Beitrag # 5 von 10
Beitrag ID: #558913
Bewertung:
(2892 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nun ja, wenn Du das gesamte Dokument im Fokus hast (inkl. aller Musterseitenelemente), dann musst Du eben den allPageItems Array des Dokuments durchsuchen.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#558912]

Auf Objekte innerhalb von Gruppen zugreifen

faxinger
Beiträge gesamt: 195

22. Aug 2017, 16:41
Beitrag # 6 von 10
Beitrag ID: #559170
Bewertung:
(2462 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

ich wollte dein skript adaptieren, bin aber gescheitert.

Wo muss ich bei meinem skript ansetzen um direkt innerhalb der Gruppen auf meine Objekt mit dem Objektformat "artikelnummer" zuzugreifen?

Code
 // Allen vorhandenen Textrahmen  mit Objektformat  "artikelnummer" um 90° drehen // 
var allFrames = app.activeDocument.textFrames;
var nFrames = allFrames.length;

for (var n=0; n<nFrames; n++) {
var curFrame = allFrames[n];
if (curFrame.appliedObjectStyle.name == "artikelnummer") {
curFrame.rotationAngle = 90;
}
}


Ich schätze mal dass nicht textframes angesprochen werden sollen sondern allPageItems...

Nur ich dreh mich da etwas im Kreis
Danke


als Antwort auf: [#558913]
(Dieser Beitrag wurde von faxinger am 22. Aug 2017, 16:42 geändert)

Auf Objekte innerhalb von Gruppen zugreifen

Uwe Laubender
Beiträge gesamt: 4242

22. Aug 2017, 18:05
Beitrag # 7 von 10
Beitrag ID: #559171
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
also, da gibt's zwei Wege:

1. Alle pageItems des Dokuments adressieren und die TextFrames aussortieren und prüfen.

2. Alle stories des Dokuments adressieren und über die jeweiligen textContainers der Story die Textrahmen mit dem zugewiesenen Objektformat ausfiltern.

Auf die Schnelle:

Code
// The active document: 
var doc = app.documents[0];
var nameOfObjectStyle = "artikelnummer";

// Where is the rotation's center?
doc.layoutWindows[0].transformReferencePoint = AnchorPoint.CENTER_ANCHOR;

var allStories = doc.stories.everyItem().getElements();
var objectStyle = doc.objectStyles.itemByName(nameOfObjectStyle);

// In case you run this script the first time and are too lazy to add an object style:
if(!objectStyle.isValid)
{
var objectStyle = app.documents[0].objectStyles.add({name : nameOfObjectStyle});
};

// Loop all stories:
for(var n=0;n<allStories.length;n++)
{
var textContainers = allStories[n].textContainers;

// Loop all text containers of a particular story:
for(var c=0;c<textContainers.length;c++)
{
// Only text frames, no text paths
// And only text frames with our defined object style applied from above:
if(textContainers[c].constructor.name == "TextFrame" && textContainers[c].appliedObjectStyle == objectStyle)
{
// Rotate the text container:
textContainers[c].rotationAngle = 90;
};
};
};


Wenn Du ausschließlich Textrahmen einer Gruppe bearbeiten möchtest, müssen noch ein paar Zeilen rein, die untersuchen, ob der anvisierte Textrahmen teil einer Gruppe ist.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#559170]

Auf Objekte innerhalb von Gruppen zugreifen

faxinger666
Beiträge gesamt: 60

23. Aug 2017, 08:59
Beitrag # 8 von 10
Beitrag ID: #559174
Bewertung:
(2395 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Uwe,

so funktioniert es. Ich dachte zwar es ginge auch mit weniger Code, bzw. Code den ich größtenteils nachvollziehen könnte.

Aber dein Skript fragt ja auch Eventualitäten ab.
Jedenfalls funktioniert es genauso wie ich es brauche. Nochmals vielen Dank.

Ein kleiner Nachtrag - die Kür wäre es wenn alle Rahmen (Egal ob Text oder Bildrahmen in den Gruppen noch auf den Inhalt beschränkt / zugeschnitten würden.

Also dass z.B. alle Textrahmen nur die Größe des Inhalts verbrauchen würden. (fit to frame oder sowas in der Richtung)

Ginge das gleich in einem Aufwasch?

Danke
LG
faxinger


als Antwort auf: [#559171]

Auf Objekte innerhalb von Gruppen zugreifen

Uwe Laubender
Beiträge gesamt: 4242

23. Aug 2017, 09:14
Beitrag # 9 von 10
Beitrag ID: #559175
Bewertung:
(2390 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,
schau' mal hier:

http://jongware.mit.edu/...c_TextFrame.html#fit

Oder hier ( CS6 und höher) für das automatische Anpassen:
http://jongware.mit.edu/...FramePreference.html
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#559174]

Auf Objekte innerhalb von Gruppen zugreifen

Uwe Laubender
Beiträge gesamt: 4242

23. Aug 2017, 09:16
Beitrag # 10 von 10
Beitrag ID: #559176
Bewertung:
(2389 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Oder Du machst das bereits im Objektformat.
Das wäre die elegantere Methode.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#559175]
Hier Klicken X

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
13.12.2018 - 20.12.2018

3400 Burgdorf, BE
Donnerstag, 13. Dez. 2018, 09.00 Uhr - Donnerstag, 20. Dez. 2018, 09.00 Uhr

Workshop

Schritt für Schritt: Planen, konzipieren und Umsetzen einer responsiven Website mit Wordpress: Lokalen Server einrichten; Frontend/Backend; Vorgehen Schritt für Schritt bis zur fertigen Site.

2-Tages-Workshop CHF 990.00

Ja

Organisator: PubliCollege GmbH

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

www.publicollege.ch

Websites erstellen mit Wordpress und Elementor Pro
Veranstaltungen
19.12.2018

Wie installiert und konfiguriert man Mailchimp und verwendet es für sein Business

Internet
Mittwoch, 19. Dez. 2018, 10.00 - 11.30 Uhr

Webinar

In diesem Webinar zeige ich den Teilnehmern, wie sie mit Mailchimp eigene Newsletter verschicken können. Wie sie Mailchimp installieren und konfigurieren müssen und wie sie eine erste Kampagne machen können.

Gratis

Ja

Organisator: Eric Mächler

https://events.genndi.com/register/818182175026318367/4ac0f277c0

Der Start ins E-Mail Marketing mit Mailchimp