[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

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

Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

cwenet
Beiträge gesamt: 1136

13. Okt 2018, 15:21
Beitrag # 1 von 7
Bewertung:
(2437 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

ich habe ein 2-spaltiges Layout, welches mit Randziffern versehen wurde. Die Randziffern sind jeweils in einem eigenen Textrahmen im Fliesstext verankert. Nun möchte ich herausfinden, in welcher Spalte die Marke für das verankerte Objekt steht.

So habe ich schonmal angefangen:

Code
var myItems = app.activeDocument.allPageItems;   

for (oneItem = myItems.length-1; oneItem >= 0; oneItem--)
{

if (myItems[oneItem].constructor.name == "TextFrame")
{

if (myItems[oneItem].appliedObjectStyle.name == "Randziffer"){

var tf = myItems[oneItem].insertionPoints[0].parentTextFrames[0];
var gB = tf.geometricBounds;
var links = gB[1];
var rechts = gB[3];
//alert(links);

}
}
}



Ich finde also alle Textrahmen die eine Randziffer beinhalten.
Wie kann ich nun herausfinden, ob sie in Spalte 1 oder Spalte 1 meines Layouts steht?
GeometricBounds zeigt mit ja nur die Position des Rahmens mit der Randziffer, nicht aber die Marke.

Bitte um Hilfe
Christoph
X

Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

Hans Haesler
  
Beiträge gesamt: 5826

15. Okt 2018, 09:13
Beitrag # 2 von 7
Beitrag ID: #566856
Bewertung:
(2380 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

würdest Du bitte ein Beispiel-Dokument hochladen?

Gruss, Hans


als Antwort auf: [#566842]

Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

cwenet
Beiträge gesamt: 1136

15. Okt 2018, 10:03
Beitrag # 3 von 7
Beitrag ID: #566858
Bewertung:
(2372 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Hans,

danke fürs Antworten. Ich habe hier ein Demo-Dok abgelegt:

https://www.dropbox.com/s/4ezjpmkixacniyb/Randziffer_hds.indd?dl=0

Für die Randziffern gibt es zwei unterschiedliche Ojektformate.
Nun möchte ich erkennen können, wo sich die Ankermarke jeweils befindet – Innen oder Aussen – und dann dass passende Objektformat zuweisen.

Grüße
Christoph


als Antwort auf: [#566856]

Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

Hans Haesler
  
Beiträge gesamt: 5826

15. Okt 2018, 18:02
Beitrag # 4 von 7
Beitrag ID: #566862
Bewertung:
(2322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

ein anderer Ansatz: Mit einer Textsuche die Anker aufspüren. In einer Schleife deren horizontale Position speichern,
dem verankerten Textrahmen je nach Position (und linker oder rechter Seite) den Objektstil zuweisen.

Wichtig: Damit es funktioniert, muss der Linealursprung des Dokuments auf "Seite" geändert werden.

Code
//RandZiffernPositionieren_01d.js 

// die Auswahl speichern ...
var curSel = app.selection;
// ... und prüfen
if (curSel.length == 0) {
alert ("Es ist nichts ausgewählt.", "Achtung");
exit();
}
// der Variablen 'mainStory' den Textfluss zuweisen
if (curSel[0].constructor.name == "TextFrame") {
mainStory = curSel[0].parentStory;
}
else {
if (curSel[0].constructor.name == "InsertionPoint") {
mainStory = curSel[0].parent;
}
else {
alert ("Einen Rahmen des Textflusses auswählen.", "Stop");
exit();
}
}

// die Suchen/Ersetzen-Vorgaben zurücksetzen
app.findTextPreferences = app.changeTextPreferences = null;

// das Suchmuster definierem
app.findTextPreferences.findWhat = "^a";

// die Objektstile
objStyleOutside = app.documents[0].objectStyles.itemByName("Randziffer");
objStyleInside = app.documents[0].objectStyles.itemByName("Randziffer innen");

// die Vorkommen finden ...
var allFound = mainStory.findText();
// ... und zählen
var nFound = allFound.length;

// eine Schleife durch die Vorkommen
for (var n=0; n<nFound; n++) {
// die horizontale Position feststellen
var hOff = allFound[n].horizontalOffset;
// der verankerte Textrahmen
var curFrame = allFound[n].textFrames[0];
// linke oder rechte Seite
var curSide = (curFrame.parentPage.side)*1;
// je nach Position und linker oder rechter Seite das Objektformat zuweisen
if (hOff < 80) {
if (curSide == 1818653800) { // linke Seite
curFrame.applyObjectStyle(objStyleOutside);
curFrame.parentStory.justification = Justification.RIGHT_ALIGN;
}
else {
curFrame.applyObjectStyle(objStyleInside);
curFrame.parentStory.justification = Justification.RIGHT_ALIGN;
}
}
else {
if (curSide == 1919382632) { // rechte Seite
curFrame.applyObjectStyle(objStyleOutside);
}
else {
curFrame.applyObjectStyle(objStyleInside);
}
}
}

// die Suchen/Ersetzen-Vorgaben zurücksetzen
app.findTextPreferences = app.changeTextPreferences = null;

// das Ende der Aktion verkünden
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
$.sleep(999);
dlog.close();

Sollten die Ziffern nicht auch entsprechend ausgerichtet sein? Falls nicht: Die Zeilen 51 und 55 entfernen. ;-)

Gruss, Hans


als Antwort auf: [#566858]

Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

cwenet
Beiträge gesamt: 1136

15. Okt 2018, 19:18
Beitrag # 5 von 7
Beitrag ID: #566864
Bewertung:
(2312 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

vielen lieben Dank für das Script.
Es funktioniert sehr gut.

Ich hatte den Text versehentlich in die Musterseiten gelegt und nicht auf die "normale" Ebene. Habe es erst garnicht gemerkt. Ich hoffe, du musstest nicht lange danach suchen.

Eine Frage noch zur Einstellung "Lineal pro Seite":

Kann ich das auch "während der Fahrt" umstellen. Muss ich etwas beachten? Nebenwirkungen?

Schönen Abend und vielen Dank
Christoph


als Antwort auf: [#566862]

Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

Hans Haesler
  
Beiträge gesamt: 5826

15. Okt 2018, 19:38
Beitrag # 6 von 7
Beitrag ID: #566865
Bewertung:
(2305 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

bitte sehr. Danke für die positive Rückmeldung. Keine Sorge, die unzugänglichen Rahmen waren rasch gelöst.

Ja, das Umstellen des Lineals per Script ist möglich. Das ist harmlos. Und der Nullpunkt sollte Null/Null sein.

Code
// den Linealursprung auf "Seite" setzen 
var rO = (curDoc.viewPreferences.rulerOrigin)*1;
if (rO != 1380143215) {
curDoc.viewPreferences.rulerOrigin = RulerOrigin.PAGE_ORIGIN;
}

// den Nullpunkt auf Null/Null setzen
var zP = app.documents[0].zeroPoint;
if (zP != [0,0]) {
app.documents[0].zeroPoint = [0,0];
}

Am Schluss des Scripts können beide wiederhergestellt werden:

Code
if (rO != 1380143215) { 
app.documents[0].viewPreferences.rulerOrigin = rO;
}
if (zP != [0,0]) {
app.documents[0].zeroPoint = zP;
}

Gruss, Hans


als Antwort auf: [#566864]

Position "Marke für verankertes Objekt" herausfinden (CC2018, WIN10)

cwenet
Beiträge gesamt: 1136

15. Okt 2018, 19:48
Beitrag # 7 von 7
Beitrag ID: #566866
Bewertung:
(2299 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

besten Dank für den Scriptzusatz.
Das ist eine gute Idee. Somit ist der Ursprung wieder hergestellt und muss mir keine Sorgen wegen Nebenwirkungen machen.

Einen schönen Abend
Christoph


als Antwort auf: [#566865]
X