Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Bilder innerhalb eines Frames verschieben (CS6, Win7)

Bilder innerhalb eines Frames verschieben (CS6, Win7)

cwenet
Beiträge gesamt: 1139

26. Okt 2013, 14:07
Bewertung:

gelesen: 2385

Beitrag als Lesezeichen
Guten Tag,

ich würde gerne alle Bilder im Dokument innerhalb des Rahmens wieder auf Null (oben links) verschieben.

Folgender Scriptschnipsel zeigt mir für das Bild und für den Frame aber beidesmal identische Werte an:

Code
var link, image, frame; 
var doc = app.activeDocument;
var graphics = doc.allGraphics;

for (var i = 0; i < graphics.length; i++) {
link = graphics[i].itemLink;
image = link.parent;
frame = image.parent;
alert( image.geometricBounds + '\r'+ frame.geometricBounds);

}


Wenn ich aber mit dem Direktauswahlwerkzeug das Bild markiere, habe ich x=y=0, egal an welcher Stelle auf
der Seite das Bild steht.

Wie bekomme ich Bilder, die innerhalb eines Rahmens verschoben wurden, wieder auf Null?

Bitte um Hilfe
Gruss
Christoph

Bilder innerhalb eines Frames verschieben (CS6, Win7)

Gerald Singelmann
  
Beiträge gesamt: 6269

26. Okt 2013, 17:26
Bewertung:

gelesen: 2356

Beitrag als Lesezeichen
Zitat Wenn ich aber mit dem Direktauswahlwerkzeug das Bild markiere, habe ich x=y=0, egal an welcher Stelle auf der Seite das Bild steht.

Wie bekomme ich Bilder, die innerhalb eines Rahmens verschoben wurden, wieder auf Null?


Mit anderen Worten: Die Bilder stehen bereits alle auf 0 und wie bekomme ich sie jetzt auf 0?

Ich glaub, ich verstehe die Frage nicht.

Anhang:
Bildschirmfoto 2013-10-26 um 17.25.08.png (67.0 KB)

Bilder innerhalb eines Frames verschieben (CS6, Win7)

cwenet
Beiträge gesamt: 1139

26. Okt 2013, 17:44
Bewertung:

gelesen: 2346

Beitrag als Lesezeichen
Lieber Gerald Singelmann,

ja es geht um den Inhaltsversatz.
Ich habe zur Verdeutlichung noch zwei Doks angehängt.

Gruss
Christoph

Anhang:
Bilder_verschieben_vorher.idml (27.6 KB)   Bilder_verschieben_nachher.idml (27.5 KB)

Bilder innerhalb eines Frames verschieben (CS6, Win7)

Hans Haesler
  
Beiträge gesamt: 5826

26. Okt 2013, 22:46
Bewertung:

gelesen: 2298

Beitrag als Lesezeichen
Hallo Christoph,

so sollte es klappen:

Code
var doc = app.activeDocument; 
var graphics = doc.allGraphics;

for (var g=0; g<graphics.length; g++) {
var curImage = graphics[g];
var curFrame = curImage.parent;
var igB = curImage.geometricBounds;
var fgB = curFrame.geometricBounds;
curImage.move(undefined, [fgB[1]-igB[1], fgB[0]-igB[0]]);
}

Vorausgesetzt, dass alle Drehwinkel (Rahmen und Bilder) null Prozent betragen.
Und dass kein Rahmen gesperrt ist.

Gruss, Hans

Bilder innerhalb eines Frames verschieben (CS6, Win7)

Gerald Singelmann
  
Beiträge gesamt: 6269

27. Okt 2013, 00:29
Bewertung:

gelesen: 2278

Beitrag als Lesezeichen
Müste nicht auch
Code
curImage.move([fgB[1], fgB[0]]); 

gehen?

Bilder innerhalb eines Frames verschieben (CS6, Win7)

Hans Haesler
  
Beiträge gesamt: 5826

27. Okt 2013, 06:40
Bewertung:

gelesen: 2232

Beitrag als Lesezeichen
Hallo Gerald,

doch, das geht auch. :-)

Erklärung für Christoph: Das aktuelle Bild wird nicht um die Differenz verschoben, sondern an die Position des Bildrahmens.

Der Vollständigkeit halber der zusammengeschmolzene Code:

Code
var doc = app.activeDocument; 
var graphics = doc.allGraphics;

for (var g=0; g<graphics.length; g++) {
var gB = graphics[g].parent.geometricBounds;
graphics[g].move([gB[1], gB[0]]);
}

Gruss, Hans

Bilder innerhalb eines Frames verschieben (CS6, Win7)

cwenet
Beiträge gesamt: 1139

27. Okt 2013, 07:46
Bewertung:

gelesen: 2219

Beitrag als Lesezeichen
Merci viel mal,

an Gerald und Hans.
Klappt prima.
Danke auch für die Erklärung, Hans.

Schönen Tag wünscht
Christoph

Bilder innerhalb eines Frames verschieben (CS6, Win7)

Hans Haesler
  
Beiträge gesamt: 5826

27. Okt 2013, 09:25
Bewertung:

gelesen: 2174

Beitrag als Lesezeichen
Hallo Christoph,

bitte sehr. Die Erklärung hätte detaillierter sein können ...

Zitat void move ([to: varies][, by: Array of Measurement Unit (Number or String)])
Moves the PageItem to a new location. Note: Either the 'to' or 'by' parameter is required; if both parameters are defined, only the to value is used.

to The new location of the PageItem, in the format (x, y). Can accept: Array of 2 Units, Spread, Page or Layer. (Optional)
by The amount (in measurement units) to move the PageItem relative to its current position, in the format (x, y). (Optional)

Das Objekt wird an die neue Position verschoben. 'void' bedeutet, dass die Aktion kein Ergebnis zurückgibt.

Für to (= an diese Position) kann ein Array mit zwei Masseinheit-Elementen (Zahlen oder String) eingefügt werden. Oder ein Druckbogen oder eine Seite oder eine Ebene.
Für by (= um diese Werte, von der aktuellen Position ausgehend) gilt: ein Array mit zwei Masseinheit-Elementen (Zahlen oder String).

Einer der beiden Parameter muss definiert sein. Wenn man by verwenden will, muss to als undefined gesetzt werden:

Code
curItem.move(undefined, [x, y]); 

Zu beachten: Der horizontale Wert kommt zuerst.

Gruss, Hans

Bilder innerhalb eines Frames verschieben (CS6, Win7)

cwenet
Beiträge gesamt: 1139

27. Okt 2013, 09:31
Bewertung:

gelesen: 2168

Beitrag als Lesezeichen
Guten Morgen Hans,

vielen lieben Dank. Das speichere ich mir gleich zum Script dazu.

Schönen Sonntag
Christoph