hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Objekt innerhalb einer Gruppe spiegeln (CS5, WIN, JS)

 



cwenet p
Beiträge: 450

28. Aug 2010, 08:36

Beitrag #1 von 5
Bewertung:

(1034 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Objekt innerhalb einer Gruppe spiegeln (CS5, WIN, JS)


Guten Morgen,

folgendes Script habe ich mir angelegt, um es über Tastenkürzel auszuführen:
Code
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR; 
if(app.selection[0].label == "Rahmen") {
app.selection[0].flip = Flip.horizontal;
}


Das funktioniert nur, wenn die Gruppe ein Etikett hat.
Wie kann ich nun innerhalb einer Gruppe ein bestimmtes Objekt damit bearbeiten?
In der Gruppe liegt ein Rahmen der bereits mit einem Scriptetikett versehen wurde.
Nun soll nur dieser Rahmen horizontal gespiegelt werden.

Gruss
Christoph


(Dieser Beitrag wurde von cwenet am 28. Aug 2010, 08:44 geändert)
Top

Hans Haesler  M  p
Beiträge: 3883

28. Aug 2010, 11:10

Beitrag #2 von 5
Beitrag ID: #450046

Bewertung:

(1011 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Objekt innerhalb einer Gruppe spiegeln (CS5, WIN, JS)


Hallo Christoph,

wenn Du den Test weglässt ...

Code
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR;  
app.selection[0].flip = Flip.horizontal;

... dann muss die Gruppe nicht benannt sein, damit sie geflippt wird.

Um nur einen bestimmten, gelabelten Rahmen der Gruppe zu spiegeln:

Code
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR;  
allFrames = app.selection[0].allPageItems;
for (var f=0; f<allFrames.length; f++) {
if (allFrames[f].label == "test") {
allFrames[f].flip = Flip.horizontal;
break;
}
}

Gruss, Hans

als Antwort auf: [#450034] Top

cwenet p
Beiträge: 450

28. Aug 2010, 17:34

Beitrag #3 von 5
Beitrag ID: #450059

Bewertung:

(978 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Objekt innerhalb einer Gruppe spiegeln (CS5, WIN, JS)


Lieber Hans,

vielen Dank.
Nun habe ich das Problem, dass das Script diese Aktion nur einmal ausführt.
Wie kann ich das so einrichten, dass ich quasi endlos horizontal "flippen" kann?
Also so, wie Indesign die Funktion über die Palette transformieren anbietet.

Gruss
Christoph

als Antwort auf: [#450046] Top

Hans Haesler  M  p
Beiträge: 3883

28. Aug 2010, 21:19

Beitrag #4 von 5
Beitrag ID: #450061

Bewertung:

(955 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Objekt innerhalb einer Gruppe spiegeln (CS5, WIN, JS)


Hallo Christoph,

dann musst Du den flip-Zustand feststellen. Wenn man diesen durch einen alert anzeigen lässt ...

Code
var curFlip = (allFrames[f].flip); 
alert (curFlip);

... dann bekommt man NONE oder HORIZONTAL (mit entsprechend geflipptem Rahmen).

Doch zum Testen taugt einzig der enum-Wert, welchen man durch Multiplizieren mit 1 erfährt (diesen Wert könnte man auch im Object-Model-Verzeichnis finden):

Code
var curFlip = (allFrames[f].flip)*1; 
alert (curFlip);

1852796517 für nicht geflippt; 1752134266 für horizontal geflippt.

Das Verwandeln in Dezimalstellen im Script selbst ist nicht zwingend. Je nach Wert, muss man daraufhin das Gegenteil ausführen lassen.

Code
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR;  
allFrames = app.selection[0].allPageItems;

for (var f=0; f<allFrames.length; f++) {
if(allFrames[f].label == "test") {
var curFlip = allFrames[f].flip;
if (curFlip == 1852796517) {
allFrames[f].flip = Flip.HORIZONTAL;
}
else if (curFlip == 1752134266) {
allFrames[f].flip = Flip.NONE;
}
break;
}
}

Hier tut es. Und bei Dir?

Gruss, Hans

als Antwort auf: [#450059] Top

cwenet p
Beiträge: 450

29. Aug 2010, 07:53

Beitrag #5 von 5
Beitrag ID: #450069

Bewertung:

(927 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Objekt innerhalb einer Gruppe spiegeln (CS5, WIN, JS)


Vielen lieben Dank Hans,

funktioniert wunderbar. Auf die Dezimalzahlen wäre ich nie gekommen.

Hab die Abfrage nun doch an die Rahmenfarbe orientiert, da nicht konsequent alle ein Skriptetikett haben:

Code
	if (allFrames[f].strokeColor.name == "MeineFarbe") { 



Gruss
Christoph

als Antwort auf: [#450061] Top


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Objekt innerhalb einer Gruppe spiegeln (CS5, WIN, JS)


^