hilfdirselbst.ch
Facebook Twitter gamper-media
cwenet S
Beiträge: 855
26. Okt 2013, 14:07
Beitrag #1 von 9
Bewertung:
(1998 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


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
Top
 
X
Gerald Singelmann  M  p
Beiträge: 6178
26. Okt 2013, 17:26
Beitrag #2 von 9
Beitrag ID: #518975
Bewertung:
(1969 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


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.

--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#518973] Top
 
cwenet S
Beiträge: 855
26. Okt 2013, 17:44
Beitrag #3 von 9
Beitrag ID: #518978
Bewertung:
(1959 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


Lieber Gerald Singelmann,

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

Gruss
Christoph
als Antwort auf: [#518975] Top
 
Hans Haesler  M  p
Beiträge: 5557
26. Okt 2013, 22:46
Beitrag #4 von 9
Beitrag ID: #518982
Bewertung:
(1911 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


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
als Antwort auf: [#518978] Top
 
Gerald Singelmann  M  p
Beiträge: 6178
27. Okt 2013, 00:29
Beitrag #5 von 9
Beitrag ID: #518984
Bewertung:
(1891 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


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

gehen?

--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#518982] Top
 
Hans Haesler  M  p
Beiträge: 5557
27. Okt 2013, 06:40
Beitrag #6 von 9
Beitrag ID: #518986
Bewertung:
(1845 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


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
als Antwort auf: [#518984] Top
 
cwenet S
Beiträge: 855
27. Okt 2013, 07:46
Beitrag #7 von 9
Beitrag ID: #518987
Bewertung:
(1832 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


Merci viel mal,

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

Schönen Tag wünscht
Christoph
als Antwort auf: [#518986] Top
 
Hans Haesler  M  p
Beiträge: 5557
27. Okt 2013, 09:25
Beitrag #8 von 9
Beitrag ID: #518988
Bewertung:
(1787 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


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
als Antwort auf: [#518987] Top
 
cwenet S
Beiträge: 855
27. Okt 2013, 09:31
Beitrag #9 von 9
Beitrag ID: #518989
Bewertung:
(1781 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bilder innerhalb eines Frames verschieben (CS6, Win7)


Guten Morgen Hans,

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

Schönen Sonntag
Christoph
als Antwort auf: [#518988] Top
 
X