Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

irbis
Beiträge gesamt: 30

17. Mär 2010, 20:27
Bewertung:

gelesen: 5239

Beitrag als Lesezeichen
Hallo zusammen,

ich suche zu Folgendem eine Lösung: In einem Dokument sollen sämtliche im Fließtext verankerte Textrahmen einen bestimmten Objektstil erhalten. Die Rahmen selbst haben leider unterschiedliche Attribute, sodass sie eben mit der Zuweisung eines Objektstils vereinheitlicht werden sollen. Die Suchen-&-Ersetzen-Möglichkeiten unter dem Reiter "Objekt" bringen leider nicht den gewünschten Erfolg.

Eine (nicht so wichtige) Erweiterung wäre noch, dass die verankerten Rahmen alle eine einheitliche Rahmenbreite bekommen (in diesem Fall 30 mm) und in der Rahmenhöhe auf die enthaltene Textmenge reduziert werden. Leider kann man ja rein über die Objektstil-Attribute den Rahmen keine festen Größenangaben zuweisen, sondern lediglich deren Position festlegen.

Hat jemand eine Idee? Unabhängig von der Größenfestlegung der Boxen (mein obiger 2. Absatz) wäre allein die Zuweisung eines Objektstils schon eine riesen Hilfe.

Für eure Unterstützung vorab herzlichen Dank!

vg,
irbis

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

Martin Fischer
  
Beiträge gesamt: 12783

17. Mär 2010, 21:54
Bewertung:

gelesen: 5221

Beitrag als Lesezeichen
Hallo irbis,

ersteres wäre mit einem geringen Zeitaufwand von ca. 15-20 Minuten elegant mit Auswahldialog für den Objektstil zu realisieren.

Zur Größenfestlegung von Objekten mit einem bestimmten Objektstil
siehe setBoundsOfObjectsWithAppliedObjectStyle_2.jsx.

Viele Grüße
Martin


Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

irbis
Beiträge gesamt: 30

17. Mär 2010, 22:09
Bewertung:

gelesen: 5214

Beitrag als Lesezeichen
Hallo Martin,

Danke für die schnelle Antwort! Für eine Umsetzung der Objektstilzuweisung wäre ich sehr dankbar (gerne übernehme ich auch die Kosten für den Aufwand), die Einbindung eines Auswahldialogs ist aber nicht unbedingt notwendig. Notfalls kann man ja den erforderlichen Objektstilnamen direkt im Skript ändern.

Danke auch für den Tip zu dem anderen Skript bzgl. Größenfestlegung. Damit komme ich dann schon klar. Aber das Erstgenannte wäre mir wie gesagt ein großes Anliegen...

Herzlichen Dank vorab!

vg,
irbis

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

Martin Fischer
  
Beiträge gesamt: 12783

17. Mär 2010, 22:32
Bewertung:

gelesen: 5203

Beitrag als Lesezeichen
Quick & dirty etwa so:

Code
var myOSname = 'Marginalie'; 

if (app.selection.length >= 0 && (app.selection[0].hasOwnProperty ('baseline') || app.selection[0].constructor.name == 'TextFrame') )
{
var tf = app.selection[0].parentStory.textFrames;
for (var i = tf.length-1; i >= 0; i--)
try
{
tf[i].appliedObjectStyle = app.activeDocument.objectStyles.item(myOSname);
} catch(e) {}
}


Viele Grüße
Martin


Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

irbis
Beiträge gesamt: 30

17. Mär 2010, 22:46
Bewertung:

gelesen: 5194

Beitrag als Lesezeichen
Quick & Dirty - das ist perfekt! Funktioniert super und erfüllt genau seinen Zweck! Vielen Dank!!!

vg,
irbis

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

irbis
Beiträge gesamt: 30

17. Mär 2010, 22:59
Bewertung:

gelesen: 5180

Beitrag als Lesezeichen
Ich habe das Skript um zwei Zeilen erweitert. Insofern wird es auch dem zweitrangigen Anspruch gerecht, den verankerten Textrahmen neben dem Objektstil auch eine feste Größe mitzugeben:

Code
var myOSname = 'Marginaltextrahmen';  
var myBounds = [ "0p", "0p", "12mm", "30mm"]; // Koordinaten des Marginalientextrahmens [y1, x1, y2, x2]

if (app.selection.length >= 0 && (app.selection[0].hasOwnProperty ('baseline') || app.selection[0].constructor.name == 'TextFrame') )
{
var tf = app.selection[0].parentStory.textFrames;
for (var i = tf.length-1; i >= 0; i--)
try
{
tf[i].appliedObjectStyle = app.activeDocument.objectStyles.item(myOSname);
tf[i].geometricBounds = myBounds; // Zuweisung der Koordinaten (Höhe und Breite)
} catch(e) {}
}

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

irbis
Beiträge gesamt: 30

17. Mär 2010, 23:03
Bewertung:

gelesen: 5178

Beitrag als Lesezeichen
Dennoch hab ich noch eine Frage:

Wie wären die Kommandos, dass das Skript nur auf eine vorher gemachte Textauswahl/Selection angewendet wird (und nicht auf den gesamten Text bzw. die gesamte Story)?

Vielen Dank vorab!

vg,
irbis

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

Martin Fischer
  
Beiträge gesamt: 12783

17. Mär 2010, 23:03
Bewertung:

gelesen: 5178

Beitrag als Lesezeichen
Code
app.selection[0].textFrames.everyItem().appliedObjectStyle = app.activeDocument.objectStyles.item('Marginalie'); 


Laß einfach parentStory weg.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 17. Mär 2010, 23:23 geändert)

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

irbis
Beiträge gesamt: 30

18. Mär 2010, 09:52
Bewertung:

gelesen: 5104

Beitrag als Lesezeichen
Danke, ich hab's hinbekommen. Super, vielen Dank!!!

vg,
irbis

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

iduser
Beiträge gesamt: 107

19. Feb 2012, 20:30
Bewertung:

gelesen: 3479

Beitrag als Lesezeichen
Hallo,
ich möchte das Script gern so erweitern, dass es nur die Objektstile von Objekten mit den Objektstilen [Ohne], [Erweiterter Textrahmen] und [Erweiterter Grafikrahmen] anpasst. Ich habe folgendes probiert:

Code
var myOSname = 'Objektformat';   
var myBounds = [ "0p", "0p", "12mm", "30mm"]; // Koordinaten des Marginalientextrahmens [y1, x1, y2, x2]

if (app.selection.length >= 0 && (app.selection[0].hasOwnProperty ('baseline') || app.selection[0].constructor.name == 'TextFrame') )
{
var tf = app.selection[0].parentStory.textFrames;
for (var i = tf.length-1; i >= 0; i--)
if (tf[i].appliedObjectStyle == "[Ohne]" || tf[i].appliedObjectStyle == "[Einfacher Grafikrahmen]" || tf[i].appliedObjectStyle == "[Einfacher Textrahmen]")
{
try
{
tf[i].appliedObjectStyle = app.activeDocument.objectStyles.item(myOSname);
tf[i].geometricBounds = myBounds; // Zuweisung der Koordinaten (Höhe und Breite)
} catch(e) {}
}
}


aber leider funktioniert es nicht, was müsste man für "[Ohne]", "[Erweiterter Textrahmen]" und "[Erweiterter Grafikrahmen]" einsetzen, damit es funktioniert?

Viele Grüße
Philipp

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

Martin Fischer
  
Beiträge gesamt: 12783

19. Feb 2012, 20:53
Bewertung:

gelesen: 3467

Beitrag als Lesezeichen
Hallo Philipp,

vermutlich braucht's statt des strings ein Objektstil-Objekt.
Alternativ kannst Du mal die name-property der Objektstile mit dem string vergleichen.

Code
     if (tf[i].appliedObjectStyle.name == "[Ohne]" || tf[i].appliedObjectStyle.name == "[Einfacher Grafikrahmen]" || tf[i].appliedObjectStyle.name == "[Einfacher Textrahmen]") 


Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 19. Feb 2012, 20:55 geändert)

Sämtlichen im Fließtext verankerten Textrahmen einen Objektstil zuweisen

iduser
Beiträge gesamt: 107

20. Feb 2012, 00:47
Bewertung:

gelesen: 3412

Beitrag als Lesezeichen
Hallo Martin,
Code
if (tf[i].appliedObjectStyle.name == "[Ohne]" || tf[i].appliedObjectStyle.name == "[Einfacher Grafikrahmen]" || tf[i].appliedObjectStyle.name == "[Einfacher Textrahmen]") 

... funktioniert einwandfrei.
Danke für Ihre Unterstützung.

Viele Grüße
Philipp