[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Rectangle von Seite in InsertionPoint verschieben

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

Rectangle von Seite in InsertionPoint verschieben

Marc Sidon
Beiträge gesamt: 262

9. Dez 2010, 09:31
Beitrag # 1 von 7
Bewertung:
(2423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

kann mir jemand sagen, ob es möglich ist, ein Rectangle, welches ganz normal auf der Seite platziert ist, via Scripting in einem Textrahmen zu veranken?

Das Ganze sollte nach Möglichkeit ohne Zwischenablage funktionieren, also nicht mit Cut auf der Seite und Paste im InsertionPoint.

Ein Rectangle hat ja die Methode move(), diese nimmt aber keinen InsertionPoint an...

Gibt es eine andere Möglichkeit?

Gruß,
Marc
X

Rectangle von Seite in InsertionPoint verschieben

Martin Fischer
  
Beiträge gesamt: 12714

9. Dez 2010, 10:32
Beitrag # 2 von 7
Beitrag ID: #459283
Bewertung:
(2402 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

wie Du selbst herausgefunden hast, lassen sich pageItems mit dem move()-Befehl nicht an einen bestimmten Einfügepunkt verschieben:

Zitat move ([to: {Array of 2 Units | Spread | Page | Layer} ][, by: Array of Measurement Unit (Number or String)=any])


Ich sehe spontan zwei Möglichkeiten:

1. Cut & Paste (gegeben ein Textrahmen und ein Rechteck auf der ersten Seite)

Code
app.documents.firstItem().pages.firstItem().rectangles.firstItem().select(); 
app.cut();
app.documents.firstItem().pages.firstItem().textFrames.firstItem().insertionPoints.firstItem().select();
app.paste();

Das wolltest Du ausdrücklich vermeiden.
Dann wäre noch eine zweite Methode:

2. Erzeugung eines neuen Rechtecks und Übertragung der Eigenschaften des alten Rechtecks an das neue

Code
var old_r = app.documents.firstItem().pages.firstItem().rectangles.firstItem(); 
var new_r = app.documents.firstItem().pages.firstItem().textFrames.firstItem().insertionPoints.firstItem().rectangles.add();
new_r.properties = old_r.properties;
old_r.remove()


Beide Methoden verstehe ich nur als Behelfslösungen, die jeweils ihre eigenen Risiken bergen.


als Antwort auf: [#459271]

Rectangle von Seite in InsertionPoint verschieben

Marc Sidon
Beiträge gesamt: 262

9. Dez 2010, 12:19
Beitrag # 3 von 7
Beitrag ID: #459303
Bewertung:
(2381 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin...

Antwort auf [ Martin Fischer ] 2. Erzeugung eines neuen Rechtecks und Übertragung der Eigenschaften des alten Rechtecks an das neue


hmm.... das wäre eine Idee... Ich werde mal versuchen, ob das in meinem Falle ausreicht. Zumindest gefällt es mir auf den ersten Blick besser als die Cut&Paste-Variante.

Vielen Dank für den Tip...

Gruß,
Marc


als Antwort auf: [#459283]

Rectangle von Seite in InsertionPoint verschieben

Martin Fischer
  
Beiträge gesamt: 12714

9. Dez 2010, 12:31
Beitrag # 4 von 7
Beitrag ID: #459305
Bewertung:
(2376 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Beim rectangle als solchem könnte es so funktionieren.

Achte aber auch darauf, was mit Objekten (Bilder), die im rectangle enthalten sein können, passiert.

Vermutlich werden diese nicht als Teil der Eigenschaften des übergeordneten Rahmens interpretiert und gehen bei der Aktion verloren.
In diesem Fall müsste man die Inhalte des Rahmens ermitteln und nachträglich im neuen Rahmen einfügen und justieren. Das dürfte eine sehr wackelige Angelegenheit werden. :-(


als Antwort auf: [#459303]
(Dieser Beitrag wurde von Martin Fischer am 9. Dez 2010, 12:33 geändert)

Rectangle von Seite in InsertionPoint verschieben

Marc Sidon
Beiträge gesamt: 262

9. Dez 2010, 13:44
Beitrag # 5 von 7
Beitrag ID: #459315
Bewertung:
(2357 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Achte aber auch darauf, was mit Objekten (Bilder), die im rectangle enthalten sein können, passiert.


Genau das ist nämlich bei mir der Fall und das habe ich auch eben rausgefunden.
Bilder sind nicht in den properties enthalten. Man muß sie manuell auch im neuen Objekt einfügen und dann noch deren Position in Relation zu dem neuen Objekt setzen.

Code
var ob1; // Objekt mit Bild 
var ob2; // Zielrahmen / Textrahmen, in den das erste Objekt eingefügt werden soll

var obNew1 = ob2.insertionPoints.firstItem().rectangles.add();
obNew1.properties = ob1.properties;

var img1 = ob1.images.firstItem();
obNew1.place(img1.itemLink.filePath, false, img1.properties);

var imgNew1 = obNew1.images.firstItem();

var pos0 = obNew1.geometricBounds[0] + (img1.geometricBounds[0] - ob1.geometricBounds[0]);
var pos1 = obNew1.geometricBounds[1] + (img1.geometricBounds[1] - ob1.geometricBounds[1]);
var pos2 = obNew1.geometricBounds[2] + (img1.geometricBounds[2] - ob1.geometricBounds[2]);
var pos3 = obNew1.geometricBounds[3] + (img1.geometricBounds[3] - ob1.geometricBounds[3]);

imgNew1.geometricBounds = new Array(pos0, pos1, pos2, pos3);
ob1.remove();


Das klappt soweit ganz gut. Ein Problem bekommt man nur dann, wenn der Textrahmen, in den das Bildobjekt eingefügt wurde, zu klein für das Objekt ist, also überfließt (oder wie das heißt).

Dann hat man nämlich das innere Objekt nicht mehr im Zugriff und kann die geometricBounds nicht mehr setzen.

In diesem Fall wiederum ist wohl tatsächlich die einzige Möglichkeit die Cut&Paste-Variante, die Aufgabenstellung ohne Fehler zu lösen.

Gruß,
Marc


als Antwort auf: [#459305]

Rectangle von Seite in InsertionPoint verschieben

Martin Fischer
  
Beiträge gesamt: 12714

9. Dez 2010, 13:53
Beitrag # 6 von 7
Beitrag ID: #459316
Bewertung:
(2353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

tertium datur!*

Export - Import

Ich weiß, Du magst das nicht.
Aber so könnte es auch gehen.

1. Export des rectangles als Snippet
2. Platzieren des exportieren Snippets an der gewünschten Einfügemarke.

Freilicht geht das auf die Performance.
Aber es dürfte insgesamt sicherer und weniger umständlich sein als die Methode mit dem Austausch der Eigenschaften und dem Nachbau der Innereien.


----
* ein Drittes ist gegeben


als Antwort auf: [#459315]

Rectangle von Seite in InsertionPoint verschieben

Marc Sidon
Beiträge gesamt: 262

9. Dez 2010, 18:51
Beitrag # 7 von 7
Beitrag ID: #459350
Bewertung:
(2325 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank.

Ich werde das auch mal testen, besonders im Hinblick auf die tatsächliche Performance. Vielleicht ist es ja gar nicht so viel langsamer wie ich glaube.

Gruß,
Marc


als Antwort auf: [#459316]
X