[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Skript: Adjust Layout inkl. Rotation

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

Skript: Adjust Layout inkl. Rotation

drfoots
Beiträge gesamt: 129

24. Mär 2010, 21:55
Beitrag # 1 von 5
Bewertung:
(3163 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle Skripter,

ich hatee vor das obrige Skript aus denn mitgelieferten Skripten um eine Rotationsfunktion zu erweitern.
Jetzt stelle ich doch fest, dass ich mich festgefahren habe und nicht weiterkomme.

Die Erweiterung mit dem Menü hab ich noch hinbekommen, aber jetzt hänge ich an der Ausführung der Rotation fest.

Ziel soll sein, dass er jedes einzelne Element auf der Seite um seine Mittelachse dreht. Den Winkel gibt man ja im Auswahlmenü an.

den kompletten Code sende ich hier mal mit.

Mein Fehler liegt denke ich mal in der Zeile 175.

Code
	    myPageItem.transform(CoordinateSpaces.pasteboardCoordinates, AnchorPoint.centerAnchor, [myR,]); 



Hier das gesamte Skript:


Code
//AdjustLayout.jsx 
//An InDesign CS4 JavaScript
/*
@@@BUILDINFO@@@ "AdjustLayout.jsx" 2.0.0 5-December-2007
*/
//Moves the content of even/odd pages by specified amounts; attempts to get
//objects back into the correct position after a master page margin change
//and/or page insertion.
//
//
//For more information on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting/index.html
//Or visit the InDesign Scripting User to User forum at http://www.adobeforums.com.
//
main();
function main(){
//Make certain that user interaction (display of dialogs, etc.) is turned on.
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
if(app.documents.length != 0){
if(app.activeDocument.pageItems.length != 0){
myDisplayDialog();
}
else{
alert("Document contains no page items.");
}
}
else{
alert("Please open a document and try again.");
}
}
function myDisplayDialog(){
var myLabelWidth = 70;
var myDialog = app.dialogs.add({name:"Adjust Layout"});
var myPageNames = myGetPageNames();
with(myDialog.dialogColumns.add()){
with(borderPanels.add()){
with(dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Start Page:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
var myStartPageDropdown = dropdowns.add({stringList:myPageNames, selectedIndex:0});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"End Page:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
var myEndPageDropdown = dropdowns.add({stringList:myPageNames, selectedIndex:myPageNames.length-1});
}
}
}
}
with(borderPanels.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Even Pages", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Horizontal:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Vertical:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Rotate:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
staticTexts.add({staticLabel:""});
var myEvenXField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myEvenYField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myEvenRField = angleEditboxes.add({editValue:0,});
}
}
}
with(borderPanels.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Odd Pages", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Horizontal:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Vertical:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Rotate:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
staticTexts.add({staticLabel:""});
var myOddXField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myOddYField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myOddRField = angleEditboxes.add({editValue:0,});

}
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var myStartPageName = myPageNames[myStartPageDropdown.selectedIndex];
var myEndPageName = myPageNames[myEndPageDropdown.selectedIndex];
if(myCheckPageRange(myStartPageName, myEndPageName) == true){
var myEvenX = myEvenXField.editValue;
var myEvenY = myEvenYField.editValue;
var myEvenR = myEvenRField.editValue;
var myOddX = myOddXField.editValue;
var myOddY = myOddYField.editValue;
var myOddR = myOddRField.editValue;

myDialog.destroy();
myAdjustPages(myEvenX, myEvenY, myEvenR, myOddX, myOddY, myOddR, myStartPageName, myEndPageName);
}
else{
myDialog.destroy();
alert("Invalid page range.");
}
}
else{
myDialog.destroy();
}
}
function myAdjustPages(myEvenX, myEvenY, myEvenR, myOddX, myOddY, myOddR, myStartPageName, myEndPageName){
var myPage, myPageAdjust;
// Set the transform content property to true so that content will move with frames.
//myOldTransformContent = app.transformPreferences.transformContent;
//app.transformPreferences.transformContent = true;
var myOldXUnits = app.activeDocument.viewPreferences.horizontalMeasurementUnits;
var myOldYUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;
//Set the measurement units to points.
app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
//Save the old page numbering
var myOldPageNumbering = app.generalPreferences.pageNumbering;
app.generalPreferences.pageNumbering = PageNumberingOptions.section;
var myStartPage = app.activeDocument.pages.item(myStartPageName);
var myEndPage = app.activeDocument.pages.item(myEndPageName);
//Set page numbering to absolute
app.generalPreferences.pageNumbering = PageNumberingOptions.absolute;
//Does the document start with an even page?
if(myCheckPageStart(app.activeDocument) == false){
myPageAdjust = 1;
}
else{
myPageAdjust = 0;
}
for(var myCounter = (myStartPage.documentOffset-1); myCounter < myEndPage.documentOffset; myCounter++){
myPage = app.activeDocument.pages.item(myCounter);
var myPageValue = myPage.documentOffset;
myPageValue = myPageValue + myPageAdjust;
if(myPageValue % 2 == 0){
//Page is an even page.
myAdjustPage(myPage, myEvenX, myEvenY, myEvenR);
}
else{
//Page is an odd page.
myAdjustPage(myPage, myOddX, myOddY, myOddR);
}
}
//Reset the transform content and measurement units to their original values.
app.activeDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
app.activeDocument.viewPreferences.verticalMeasurementUnits = myOldYUnits;
//app.transformPreferences.transformContent = myOldTransformContent;
app.generalPreferences.pageNumbering = myOldPageNumbering;
}
function myAdjustPage(myPage, myX, myY, myR){
var myPageItem;
var myResetItemLock = false;
var myResetLayerLock = false;
for(var myCounter = 0; myCounter < myPage.pageItems.length; myCounter ++){
myPageItem = myPage.pageItems.item(myCounter);
if(myPageItem.locked == true){
myPageItem.locked = false;
myResetItemLock = true;
}
if(myPageItem.itemLayer.locked == true){
myPageItem.itemLayer.locked = false;
myResetLayerLock = true;

}
myPageItem.move(undefined, [myX, myY,]);
if(myResetItemLock == true){
myPageItem.locked = true;
}
myPageItem.transform(CoordinateSpaces.pasteboardCoordinates, AnchorPoint.centerAnchor, [myR,]);
if(myResetItemLock == true){
myPageItem.locked = true;
}
if(myResetLayerLock == true){
myPageItem.itemLayer.locked = true;
}
}
}
function myGetPageNames(){
var myPageNames = new Array;
for(myCounter = 0; myCounter < app.activeDocument.pages.length; myCounter ++){
myPageNames.push(app.activeDocument.pages.item(myCounter).name);
}
return myPageNames;
}
function myCheckPageStart(myDocument){
var mySection = myDocument.sections.item(0);
if(mySection.continueNumbering == true){
//Starting page number is defined by other documents in the book
return true;
}
if(mySection.pageNumberStart % 2 == 0){
//Starting page number is an even page.
return false;
}
else{
//Starting page number is an odd page.
return true;
}
}
function myCheckPageRange(myStartPageName, myEndPageName){
var myStartIndex = app.activeDocument.pages.item(myStartPageName).documentOffset;
var myEndIndex = app.activeDocument.pages.item(myEndPageName).documentOffset;
if(myStartIndex <= myEndIndex){
return true;
}
else{
return false;
}
}



Vielleicht kann mir ja einer weiterhelfen und vielleicht hilft das fertige Skript auch dem einen oder anderen dann weiter.


Schöne Grüße
drfoots

(Dieser Beitrag wurde von drfoots am 24. Mär 2010, 21:57 geändert)
X

Skript: Adjust Layout inkl. Rotation

Martin Fischer
  
Beiträge gesamt: 12684

25. Mär 2010, 07:25
Beitrag # 2 von 5
Beitrag ID: #437591
Bewertung:
(3124 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Du musst dafür eine Transformationsmatrix einrichten.
Siehe das Beispiel von Gerald in Skript für 50%-Skalierung.

Deine Matrix könnte etwa so aussehen:
Code
var myScaleMatrix = app.transformationMatrices.add( { counterclockwiseRotationAngle: myR } ); 


Zu platzieren vor der Schleife durch die Seitenobjekte.


als Antwort auf: [#437585]

Skript: Adjust Layout inkl. Rotation

drfoots
Beiträge gesamt: 129

25. Mär 2010, 08:03
Beitrag # 3 von 5
Beitrag ID: #437595
Bewertung:
(3109 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,

vielen Dank für den Hinweis. Nach einigem kurzen Testen und herausfinden was eine Schleife ist, hab ich es hinbekommen.

Gibt es für Skriptanfänger gute Quellen um in das Thema reinzukommen?
Die Skripting Reference im Internet, die ich bisher gefunden habe, ist teilweise noch für CS3 und für den Anfänger auch nicht ganz ersichtlich, finde ich zumindest.

Als weitere Hilfe zu JavaScript benutze ich teilweise noch selfhtml.

Wahrscheinlich hilft aber auf Dauer nur der abschreckende Weg über ein Buch über JavaScript mit dem für Nichtprogrammierer herausfordernden Objektmodell, usw.

aber für alle die das Skript interessiert hier noch das fertige:

Code
//AdjustLayout.jsx 
//An InDesign CS4 JavaScript
/*
@@@BUILDINFO@@@ "AdjustLayout.jsx" 2.0.0 5-December-2007
*/
//Moves the content of even/odd pages by specified amounts; attempts to get
//objects back into the correct position after a master page margin change
//and/or page insertion.
//
//
//For more information on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting/index.html
//Or visit the InDesign Scripting User to User forum at http://www.adobeforums.com.
//
main();
function main(){
//Make certain that user interaction (display of dialogs, etc.) is turned on.
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
if(app.documents.length != 0){
if(app.activeDocument.pageItems.length != 0){
myDisplayDialog();
}
else{
alert("Document contains no page items.");
}
}
else{
alert("Please open a document and try again.");
}
}
function myDisplayDialog(){
var myLabelWidth = 70;
var myDialog = app.dialogs.add({name:"Adjust Layout"});
var myPageNames = myGetPageNames();
with(myDialog.dialogColumns.add()){
with(borderPanels.add()){
with(dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Start Page:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
var myStartPageDropdown = dropdowns.add({stringList:myPageNames, selectedIndex:0});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"End Page:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
var myEndPageDropdown = dropdowns.add({stringList:myPageNames, selectedIndex:myPageNames.length-1});
}
}
}
}
with(borderPanels.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Even Pages", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Horizontal:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Vertical:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Rotate:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
staticTexts.add({staticLabel:""});
var myEvenXField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myEvenYField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myEvenRField = angleEditboxes.add({editValue:0,});
}
}
}
with(borderPanels.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Odd Pages", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Horizontal:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Vertical:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:"Rotate:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
staticTexts.add({staticLabel:""});
var myOddXField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myOddYField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
var myOddRField = angleEditboxes.add({editValue:0,});

}
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var myStartPageName = myPageNames[myStartPageDropdown.selectedIndex];
var myEndPageName = myPageNames[myEndPageDropdown.selectedIndex];
if(myCheckPageRange(myStartPageName, myEndPageName) == true){
var myEvenX = myEvenXField.editValue;
var myEvenY = myEvenYField.editValue;
var myEvenR = myEvenRField.editValue;
var myOddX = myOddXField.editValue;
var myOddY = myOddYField.editValue;
var myOddR = myOddRField.editValue;

myDialog.destroy();
myAdjustPages(myEvenX, myEvenY, myEvenR, myOddX, myOddY, myOddR, myStartPageName, myEndPageName);
}
else{
myDialog.destroy();
alert("Invalid page range.");
}
}
else{
myDialog.destroy();
}
}
function myAdjustPages(myEvenX, myEvenY, myEvenR, myOddX, myOddY, myOddR, myStartPageName, myEndPageName){
var myPage, myPageAdjust;
// Set the transform content property to true so that content will move with frames.
//myOldTransformContent = app.transformPreferences.transformContent;
//app.transformPreferences.transformContent = true;
var myOldXUnits = app.activeDocument.viewPreferences.horizontalMeasurementUnits;
var myOldYUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;
//Set the measurement units to points.
app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
//Save the old page numbering
var myOldPageNumbering = app.generalPreferences.pageNumbering;
app.generalPreferences.pageNumbering = PageNumberingOptions.section;
var myStartPage = app.activeDocument.pages.item(myStartPageName);
var myEndPage = app.activeDocument.pages.item(myEndPageName);
//Set page numbering to absolute
app.generalPreferences.pageNumbering = PageNumberingOptions.absolute;
//Does the document start with an even page?
if(myCheckPageStart(app.activeDocument) == false){
myPageAdjust = 1;
}
else{
myPageAdjust = 0;
}
for(var myCounter = (myStartPage.documentOffset-1); myCounter < myEndPage.documentOffset; myCounter++){
myPage = app.activeDocument.pages.item(myCounter);
var myPageValue = myPage.documentOffset;
myPageValue = myPageValue + myPageAdjust;
if(myPageValue % 2 == 0){
//Page is an even page.
myAdjustPage(myPage, myEvenX, myEvenY, myEvenR);
}
else{
//Page is an odd page.
myAdjustPage(myPage, myOddX, myOddY, myOddR);
}
}
//Reset the transform content and measurement units to their original values.
app.activeDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
app.activeDocument.viewPreferences.verticalMeasurementUnits = myOldYUnits;
//app.transformPreferences.transformContent = myOldTransformContent;
app.generalPreferences.pageNumbering = myOldPageNumbering;
}
function myAdjustPage(myPage, myX, myY, myR){
var myPageItem;
var myResetItemLock = false;
var myResetLayerLock = false;
var myScaleMatrix = app.transformationMatrices.add( { counterclockwiseRotationAngle: myR } );
for(var myCounter = 0; myCounter < myPage.pageItems.length; myCounter ++){
myPageItem = myPage.pageItems.item(myCounter);
if(myPageItem.locked == true){
myPageItem.locked = false;
myResetItemLock = true;
}
if(myPageItem.itemLayer.locked == true){
myPageItem.itemLayer.locked = false;
myResetLayerLock = true;

}
myPageItem.move(undefined, [myX, myY,]);
if(myResetItemLock == true){
myPageItem.locked = true;
}
myPageItem.transform(CoordinateSpaces.pasteboardCoordinates, AnchorPoint.centerAnchor, myScaleMatrix);
if(myResetItemLock == true){
myPageItem.locked = true;
}
if(myResetLayerLock == true){
myPageItem.itemLayer.locked = true;
}
}
}
function myGetPageNames(){
var myPageNames = new Array;
for(myCounter = 0; myCounter < app.activeDocument.pages.length; myCounter ++){
myPageNames.push(app.activeDocument.pages.item(myCounter).name);
}
return myPageNames;
}
function myCheckPageStart(myDocument){
var mySection = myDocument.sections.item(0);
if(mySection.continueNumbering == true){
//Starting page number is defined by other documents in the book
return true;
}
if(mySection.pageNumberStart % 2 == 0){
//Starting page number is an even page.
return false;
}
else{
//Starting page number is an odd page.
return true;
}
}
function myCheckPageRange(myStartPageName, myEndPageName){
var myStartIndex = app.activeDocument.pages.item(myStartPageName).documentOffset;
var myEndIndex = app.activeDocument.pages.item(myEndPageName).documentOffset;
if(myStartIndex <= myEndIndex){
return true;
}
else{
return false;
}
}



Um die Ausgangswerte (hier immer 0) zu verändern muss die EditValue in den "Editboxen" im oberen Teil des Skriptes angepasst werden.

Danke für die Hilfe
Dr.Foots


als Antwort auf: [#437591]

Skript: Adjust Layout inkl. Rotation

Martin Fischer
  
Beiträge gesamt: 12684

25. Mär 2010, 08:20
Beitrag # 4 von 5
Beitrag ID: #437599
Bewertung:
(3107 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#437595]

Skript: Adjust Layout inkl. Rotation

drfoots
Beiträge gesamt: 129

25. Mär 2010, 08:25
Beitrag # 5 von 5
Beitrag ID: #437600
Bewertung:
(3103 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,

vielen Dank für die Links.

Da steht noch ein Haufen Arbeit an wie ich sehe. :)
Aber ohne Fleiß ja auch kein Preis.

Sonnige Grüße
Dr.Foots


als Antwort auf: [#437599]
X

Aktuell

InDesign / Illustrator
axaio_PR_Bild_300x300_10_22

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/