Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » In Design Script mit Fehler aber wie lösen?

In Design Script mit Fehler aber wie lösen?

Kenzo
Beiträge gesamt: 5

10. Feb 2006, 18:09
Bewertung:

gelesen: 809

Beitrag als Lesezeichen
HI @all

Ich hab ein Script mit geringen Kenntnissen über InDesign Script geschrieben und hab nun ein paar Probleme. Hier erstmal das Script.

Code
var myFiles = new Array;  
var myFilteredFiles = new Array;

//The myExtensions array contains the extensions of the graphic file types you want
//to include in the catalog. You can remove extensions from or add extensions to this list.
var myExtensions = [".jpg", ".jpeg", ".eps", ".ps", ".pdf", ".tif", ".tiff", ".gif", ".psd", ".ai"]

$.level = 1;
//Display the folder browser.
var myFolder = Folder.selectDialog("Select the folder containing the images", "");
var myRankFolder = Folder.selectDialog("Select the folder containing the rank-images", "");
var myCSVFile = File.openDialog("Please select the csv-File for import");


//Get the path to the folder containing the files you want to place.
if(myFolder != null){
if(myCSVFile != null){
for(myExtensionCounter = 0; myExtensionCounter < myExtensions.length; myExtensionCounter++){
myExtension = myExtensions[myExtensionCounter];
myFiles = myFolder.getFiles("*"+ myExtension);
if(myFiles.length != 0){
for(var myFileCounter = 0; myFileCounter < myFiles.length; myFileCounter++){
myFilteredFiles.push(myFiles[myFileCounter]);
}
}
}
if(myFilteredFiles.length != 0){
myDisplayDialog(myFilteredFiles, myFolder, myCSVFile, myRankFolder);
}
}
}

function myDisplayDialog(myFiles, myFolder, myCSVFile, myRateFolder){
var myLabelWidth = 115;
var myDialog = app.dialogs.add({name:"Magic Catalog"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Information"});
}
}
with(borderPanels.add()){
with(dialogColumns.add()){
with(dialogRows.add()){
staticTexts.add({staticLabel:"Image Source Folder:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:myFolder.path + "/" + myFolder.name});
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"Rank Source Folder:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:myRateFolder.path + "/" + myRankFolder.name});
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"Source CSV-File:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:myCSVFile.path + "/" + myCSVFile.name});
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"Number of Images:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:myFiles.length + ""});
}
}
}
// with(dialogRows.add()){
// staticTexts.add({staticLabel:"Options"});
// }
// with(borderPanels.add()){
// with(dialogColumns.add()){
// with(dialogRows.add()){
// with(dialogColumns.add()){
// staticTexts.add({staticLabel:"Number of Rows:", minWidth:myLabelWidth});
// }
// with(dialogColumns.add()){
// var myNumberOfRowsField = integerEditboxes.add({editValue:3});
// }
// }
// with(dialogRows.add()){
// staticTexts.add({staticLabel:"Number of Columns:", minWidth:myLabelWidth});
// var myNumberOfColumnsField = integerEditboxes.add({editValue:3});
// }
// with(dialogRows.add()){
// var myLabelsCheckbox = checkboxControls.add({staticLabel:"Add Labels", checkedState:true});
// }
// with(dialogRows.add()){
// var myRemoveEmptyFramesCheckbox = checkboxControls.add({staticLabel:"Remove Empty Frames:", checkedState:true});
// }
// }
// }
}
var myResult = myDialog.show();
if(myResult == true){
// var myNumberOfRows = myNumberOfRowsField.editValue;
// var myNumberOfColumns = myNumberOfColumnsField.editValue;
// var myLabels = myLabelsCheckbox.checkedState;
// var myRemoveEmptyFrames = myRemoveEmptyFramesCheckbox.checkedState;
// myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myLabels, myRemoveEmptyFrames);
myMakeImageCatalog(myFiles, myCSVFile, myFolder, myRateFolder);
}
myDialog.destroy();
}

//function myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myLabels, myRemoveEmptyFrames){
function myMakeImageCatalog(myFiles, myCSVFile, myFolder, myRateFolder){
var myPage, myFile, myCounter, myRectangle;
var myDocument = app.activeDocument;
myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
var myDocumentPreferences = myDocument.documentPreferences;
// var myNumberOfFrames = myFiles.length;
// var myNumberOfPages = Math.round(myNumberOfFrames / myFramesPerPage);
// if ((myNumberOfPages * myFramesPerPage) < myNumberOfFrames){
// myNumberOfPages++;
// }
// myDocumentPreferences.pagesPerDocument = myNumberOfPages;
// myDocumentPreferences.facingPages = false;
var myPage = myDocument.pages.item(0);
var myPages = myDocument.pages;

var myPicWidth = 99.1;
var myPicHeight = 141.8;
var myPicRWidth = 85.9;
var myPicRHeight = 7;
var myPos1X1 = new Array();
var myPos1X2 = new Array();
var myPos1Y1 = new Array();
var myPos1Y2 = new Array();
var myPos2X1 = new Array();
var myPos2X2 = new Array();
var myPos2Y1 = new Array();
var myPos2Y2 = new Array();
var myPosR1X1 = new Array();
var myPosR1X2 = new Array();
var myPosR1Y1 = new Array();
var myPosR1Y2 = new Array();
var myPosR2X1 = new Array();
var myPosR2X2 = new Array();
var myPosR2Y1 = new Array();
var myPosR2Y2 = new Array();

myPos1X1[0]=28;
myPos1X1[1]=149;
myPos1X1[2]=270;
myPos1X1[3]=28;
myPos1X1[4]=149;
myPos1X1[5]=270;
myPos1X1[6]=28;
myPos1X1[7]=149;
myPos1X1[8]=270;

myPos1Y1[0]=34;
myPos1Y1[1]=34;
myPos1Y1[2]=34;
myPos1Y1[3]=211;
myPos1Y1[4]=211;
myPos1Y1[5]=211;
myPos1Y1[6]=388;
myPos1Y1[7]=388;
myPos1Y1[8]=388;

myPos2X1[0]=455;
myPos2X1[1]=576;
myPos2X1[2]=697;
myPos2X1[3]=455;
myPos2X1[4]=576;
myPos2X1[5]=697;
myPos2X1[6]=455;
myPos2X1[7]=576;
myPos2X1[8]=697;

myPos2Y1[0]=34;
myPos2Y1[1]=34;
myPos2Y1[2]=34;
myPos2Y1[3]=211;
myPos2Y1[4]=211;
myPos2Y1[5]=211;
myPos2Y1[6]=388;
myPos2Y1[7]=388;
myPos2Y1[8]=388;

myPosR1X1[0]=53;
myPosR1X1[1]=174;
myPosR1X1[2]=294;
myPosR1X1[3]=53;
myPosR1X1[4]=174;
myPosR1X1[5]=294;
myPosR1X1[6]=53;
myPosR1X1[7]=174;
myPosR1X1[8]=294;

myPosR1Y1[0]=197;
myPosR1Y1[1]=197;
myPosR1Y1[2]=197;
myPosR1Y1[3]=374;
myPosR1Y1[4]=374;
myPosR1Y1[5]=374;
myPosR1Y1[6]=551;
myPosR1Y1[7]=551;
myPosR1Y1[8]=551;

myPosR2X1[0]=479;
myPosR2X1[1]=600;
myPosR2X1[2]=721;
myPosR2X1[3]=479;
myPosR2X1[4]=600;
myPosR2X1[5]=721;
myPosR2X1[6]=479;
myPosR2X1[7]=600;
myPosR2X1[8]=721;

myPosR2Y1[0]=197;
myPosR2Y1[1]=197;
myPosR2Y1[2]=197;
myPosR2Y1[3]=374;
myPosR2Y1[4]=374;
myPosR2Y1[5]=374;
myPosR2Y1[6]=551;
myPosR2Y1[7]=551;
myPosR2Y1[8]=551;

for (var i = 0; i < 9; i++ ){
myPos1X2[i] = myPos1X1 + myPicWidth;
myPos1Y2[i] = myPos1Y1 + myPicHeight;
myPos2X2[i] = myPos1X1 + myPicWidth;
myPos2Y2[i] = myPos1Y1 + myPicHeight;
myPosR1X2[i] = myPosR1X1 + myPicRWidth;
myPosR1Y2[i] = myPosR1Y1 + myPicRHeight;
myPosR2X2[i] = myPosR1X1 + myPicRWidth;
myPosR2Y2[i] = myPosR1Y1 + myPicRHeight;
}


var myResult = myCSVFile.open("r", undefined, undefined);
var myCounter = 0;
var mySiteCounter = 1;
var mySiteSite = 1;
do{
myCounter++;
var myLine = myCSVFile.readln();
var myCSVArray = myLine.split(",");
var myBildName = myCSVArray[0];
var myBildRate = myCSVArray[1];
myPage = myPages.item(mySiteCounter) ;


if (mySiteSite == 0){

var myX1 = myPos1X1[myCounter];
var myX2 = myPos1X2[myCounter];
var myY1 = myPos1Y1[myCounter];
var myY2 = myPos1Y2[myCounter];

myRectangle = myPage.rectangles.add(myDocument.layers.item(-1), undefined, undefined, {geometricBounds:[myY1, myX1, myY2, myX2], strokeWeight:0, strokeColor:myDocument.swatches.item("None")});
}else{

var myX1 = myPos2X1[myCounter];
var myX2 = myPos2X2[myCounter];
var myY1 = myPos2Y1[myCounter];
var myY2 = myPos2Y2[myCounter];

myRectangle = myPage.rectangles.add(myDocument.layers.item(-1), undefined, undefined, {geometricBounds:[myY1, myX1, myY2, myX2], strokeWeight:0, strokeColor:myDocument.swatches.item("None")});
}

myRectangle.place(File(myFolder+"/"+myFolder.name+"/"+myBildName));
myRectangle.label = myFile.fsName.toString();
myRectangle.fit(FitOptions.proportionally);
myRectangle.fit(FitOptions.centerContent);
myRectangle.fit(FitOptions.frameToContent);



if (mySiteSite == 0){
var myX1 = myPosR1X1[myCounter];
var myX2 = myPosR1X2[myCounter];
var myY1 = myPosR1Y1[myCounter];
var myY2 = myPosR1Y2[myCounter];

myRectangle = myPage.rectangles.add(myDocument.layers.item(-1), undefined, undefined, {geometricBounds:[myY1, myX1, myY2, myX2], strokeWeight:0, strokeColor:myDocument.swatches.item("None")});
}else{
var myX1 = myPosR2X1[myCounter];
var myX2 = myPosR2X2[myCounter];
var myY1 = myPosR2Y1[myCounter];
var myY2 = myPosR2Y2[myCounter];

myRectangle = myPage.rectangles.add(myDocument.layers.item(-1), undefined, undefined, {geometricBounds:[myY1, myX1, myY2, myX2], strokeWeight:0, strokeColor:myDocument.swatches.item("None")});
}

myRectangle.place(File(myFolder+"/"+myRateFolder.name+"/"+myBildRate));
myRectangle.label = myFile.fsName.toString();
myRectangle.fit(FitOptions.proportionally);
myRectangle.fit(FitOptions.centerContent);
myRectangle.fit(FitOptions.frameToContent);

if (myCounter == 8){
myCounter = 0;
mySiteCounter++;
if (mySiteSite == 1){
mySiteSite = 0;
}else{
mySiteSite = 1;
}
}
} while(myCSVFile.eof == false);

}


So wie ihr seht ist dass das ImageCatalog Script nur ein wenig umgeschrieben nun gibt es zwei Probleme. Einmal wenn ich diese Zeile ausführe:
Code
myPage.rectangles.add(myDocument.layers.item(-1), undefined, undefined, {geometricBounds:[myY1, myX1, myY2, myX2], strokeWeight:0, strokeColor:myDocument.swatches.item("None")}); 

Da hat er Probleme mit den Koordinaten und ich weiß nicht wieso . Er sagt einfach nur Runtime error. Wie muss ich die Koordinaten angeben.

Das zweite Problem ist der Pfad an dieser Stelle:
Code
myRectangle.place(File(myFolder+"/"+myRateFolder.name+"/"+myBildRate)); 

Wie muss ich, denn den Pfad angeben? Habe schon eine Menge an Sachen ausprobiert und das klappt einfach nicht.

Schon mal ein herzliches Dankeschön im Vorraus.
Kenzo

In Design Script mit Fehler aber wie lösen?

Martin Fischer
  
Beiträge gesamt: 12783

10. Feb 2006, 21:38
Bewertung:

gelesen: 789

Beitrag als Lesezeichen
Hallo,


> myPage.rectangles.add()

> Da hat er Probleme mit den Koordinaten und ich weiß nicht wieso.
> Er sagt einfach nur Runtime error. Wie muss ich die Koordinaten angeben.

Die Syntax ist korrekt.
Woher weißt Du, daß der Fehler von den Koordinaten her rührt?

Zum Debuggen würde ich den langen Befehl aufschlüsseln.

Versuch's mal mit
Code
myRec = myPage.rectangles.add(myDocument.layers.item(-1)) 
with (myReg)
{
geometricBounds = [myY1, myX1, myY2, myX2];
strokeWeight=0;
strokeColor=myDocument.swatches.item("None")
}

Hast Du die Koordinaten an dieser Stelle schon mal überprüft?


> Das zweite Problem ist der Pfad an dieser Stelle:
> myRectangle.place(File(myFolder+"/"+myRateFolder.name+"/"+myBildRate));
> Wie muss ich, denn den Pfad angeben? Habe schon eine Menge an Sachen ausprobiert
> und das klappt einfach nicht.

Der Pfad sieht eigentlich ganz vernünftig aus.
Hast Du Dir den Pfad mal als String ausgeben lassen?
Code
myFilePath = myFolder+"/"+myRateFolder.name+"/"+myBildRate; 
alert(myFilePath);
myRectangle.place(File(myFilePath));


Arbeitest Du unter Windows?
Wenn ja, dann könntest Du eventuell mit demselben Problem kämpfen, mit dem ich mich gestern rumgeschlagen habe:
http://www.hilfdirselbst.ch/..._P210600.html#210600

Ich konnte das Problem lösen, indem ich vor dem place()-Befehl einen unsinnigen select()-Befehl eingefügt habe.

Versuchs mal und gib Bescheid.

Übrigens: Dein Skript ist ab Zeile 219 myPos1X2 = myPos1X1 + myPicWidth;) unlesbar, da kursiv. Die Forumsoftware interpretiert "[" + "i" + "]" als Anweisung zur Kursivstellung. Der Zähler geht also verloren (unsichtbar) und der Rest wird kursiv.

Tipp: Ersetze vor dem Posten alle "i" z.B. durch "myCounter" (ganzes Wort/Groß-/Kleinschreibung).

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 10. Feb 2006, 21:39 geändert)