hilfdirselbst.ch
Facebook Twitter gamper-media
« « 1 2 » »  
Effges
Beiträge: 16
5. Aug 2013, 21:56
Beitrag #1 von 17
Bewertung:
(3550 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Ich arbeite an folgender Skriptlösung:

Einem platzierten Bild, das versehentlich auf Endformat (also ohne Beschnitt) angelegt ist, soll virtueller Beschnitt durch Mehrfach-duplizierung und Spiegelung der Bild-Duplikate hinzugefügt werden. Also besteht dann am jeweiligen Übergang der Kanten eine Pixelwiederholung. In den Dokumenteinstellungen wird automatisch der Beschnitt mit 3 mm aktiviert. Dann ließe sich das Ergebnis z.B. als PDF-Datei oder in einem anderen gewünschten Format speichern. Das geöffnete InDesign-Dokument hat lediglich eine Seite und beinhaltet lediglich das darin platzierte Bild, welches angewählt sein soll.

Beim aktuellen Stand meines Skriptversuches hakt es aber bei der Gruppierung der bis dahin nebeneinander erzeugten 3 Bildrahmen.

Hat jemand von euch einen Tipp, wie ich das Skript für CS3 bis CS5 lauffähig bekomme?

Vorige Versuche mit dem DUPLICATE-Befehl sind leider weniger erfolgreich gewesen.

Hier der aktuelle Skripttext:

Code
#target indesign 
//InDesign-Skript "Kantenerweiterung.jsx"
//
//Einem platzierten Bild, das versehentlich auf Endformat angelegt ist,
//soll virtueller Beschnitt durch Mehrfachduplizierung und Spiegelung
//der Duplikate hinzugefügt werden.
//In den Dokumenteinstellungen wird der Beschnitt mit 3 mm aktiviert.

//Existenz von Seite und Auswahl prüfen
if (app.documents.length != 0){
if (app.selection.length != 0){
}
else {
alert("Kein Objekt ausgewählt.");
}
}
else{
alert("Kein Dokument geöffnet. Bitte Dokument öffnen und wiederholen.");

//Maßeinheiten auf Millimeter stellen
app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;

}
//Variablen festlegen
if (app.selection.length > 0){
var _auswahl = app.selection[0]
var _dok = app.activeDocument;
var _breite = _auswahl.visibleBounds[3] - _auswahl.visibleBounds[1];
var _hoehe = _auswahl.visibleBounds[2] - _auswahl.visibleBounds[0];
var _myPageHeight = app.activeDocument.documentPreferences.pageHeight;
var _myPageWidth = app.activeDocument.documentPreferences.pageWidth;
}

//Seitengröße anpassen
with(_dok.documentPreferences){
pageHeight = _hoehe;
pageWidth = _breite;
}

//Referenzpunkt einstellen
_dok.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_LEFT_ANCHOR;

//Auswahlobjekt bewegen
_auswahl.move([0,0]);

//Objekt in die Zwischenablage kopieren
app.copy();

//rechtes Duplikat einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([_breite, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.horizontal;

//linkes Duplikat einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([- _breite, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.horizontal;

//alles anwählen
app.select(app.activeWindow.activePage.allPageItems);

//Objekte gruppieren
myObjects = app.selection;
app.activeWindow.activePage.groups.add(myObjects);

//Objektgruppe in die Zwischenablage kopieren
app.copy();

//Gruppe einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([_hoehe, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR;
app.selection[0].flip = Flip.vertical;

//Gruppe einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([- _hoehe, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR;
app.selection[0].flip = Flip.vertical;

//Beschnitt auf 3 mm einstellen (Bleed)
with(_dok.documentPreferences){
documentBleedUniformSize = true;
documentBleedTopOffset = "3mm";
}

Top
 
X
WernerPerplies
Beiträge: 2177
6. Aug 2013, 06:49
Beitrag #2 von 17
Beitrag ID: #515907
Bewertung:
(3506 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Effges,

Code
//Objekte gruppieren  
myObjects = app.selection;
app.activeWindow.activePage.groups.add(myObjects);


Schau mal in die Doku :

Group add (groupItems: Array of PageItem[, layer: Layer][, at: LocationOptions=LocationOptions.UNKNOWN][, reference: varies][, withProperties: Object])
Creates a new Group. Parameter Type Description
groupItems Array of PageItem The objects to group.
layer Layer The layer on which to create the Group. (Optional)
at LocationOptions:
LocationOptions.BEFORE
LocationOptions.AFTER
LocationOptions.AT_END
LocationOptions.AT_BEGINNING
LocationOptions.UNKNOWN The location at which to insert the Group relative to the reference object or within the container object. (Optional) (default: LocationOptions.UNKNOWN)
reference Document
Layer
MasterSpread
Page
PageItem
Spread The reference object. Note: Required when the at parameter is before or after. Can accept: Document, Spread, MasterSpread, Page, Layer or PageItem. (Optional)
withProperties Object Initial values for properties of the new Group (Optional)

Außerdem empfehle ich Dir, dass Du Dich mal mit der Sichtbarkeit von Variablen und Errorhandling beschäftigst.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#515906]
(Dieser Beitrag wurde von WernerPerplies am 6. Aug 2013, 06:52 geändert)
Top
 
Effges
Beiträge: 16
6. Aug 2013, 19:16
Beitrag #3 von 17
Beitrag ID: #515936
Bewertung:
(3443 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Werner,

vielen Dank für die Hilfe und die Hinweise.
Ich werde mich noch mal reinknien und hoffe,
dass ich zum Ziel komme.

Beste Grüße
Thomas
als Antwort auf: [#515907] Top
 
WernerPerplies
Beiträge: 2177
6. Aug 2013, 19:31
Beitrag #4 von 17
Beitrag ID: #515937
Bewertung:
(3440 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Thomas,

Zitat vielen Dank für die Hilfe und die Hinweise.


Gerne,

Zitat Ich werde mich noch mal reinknien und hoffe,
dass ich zum Ziel komme.


Das wünsche ich Dir.

Ich bin nicht sicher, ob Du den enscheidenden Punkt schon gesehen hast.

Da Du keine Beispieldatei zur Verfügung gestellt hast, habe ich versucht das Problem nachzustellen.

Du verwendest an der entsprechenden Stelle eine Collection die (zumindestens bei mir) auch Objekte enthält, die keine PageItems sind.

Lesestoff zum Thema:
Bücher und weitere Infos

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#515936] Top
 
Effges
Beiträge: 16
6. Aug 2013, 20:24
Beitrag #5 von 17
Beitrag ID: #515939
Bewertung:
(3415 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Das Buch „InDesign automatisieren“ von Gregor Fellenz hatte ich mir bereits zugelegt.

Frage: Dürfen sich PageItems nicht außerhalb des Dokumentrahmens befinden odser ist das eine reine Klassifizierungssache?

Schönen Abend wünscht
Thomas
als Antwort auf: [#515937] Top
 
WernerPerplies
Beiträge: 2177
7. Aug 2013, 09:44
Beitrag #6 von 17
Beitrag ID: #515953
Bewertung:
(3351 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Thomas,

Zitat Das Buch „InDesign automatisieren“ von Gregor Fellenz hatte ich mir bereits zugelegt.


Das hatte ich bereits vermutet.

Wenn es Dir möglich ist, solltest Du auch noch einen Blick in das Buch von Grant Gamble werfen. ;-)

Zitat Frage: Dürfen sich PageItems nicht außerhalb des Dokumentrahmens befinden odser ist das eine reine Klassifizierungssache?


Da habe ich gleich zwei Verständnisprobleme:
1. Was verstehst unter Dokumentrahmen
Den Druckbogen?
2. Und was ist eine Klassifizierungssache?

Wenn Du Druckbogen meinst:
PageItems dürfen sich auch außerhalb eines Druckbogen befinden.

Ich habe mal versucht, Dein Skript mit meinen Mitteln nachzubauen, kann aber ohne eine Beispieldatei und eine Datei mit dem gewünschten Ergebnis nicht beurteilen, ob das Skript das macht, was Du möchtest.

Probiere es einfach mal aus:
Code
#target indesign  
//InDesign-Skript "Kantenerweiterung.jsx"
//
//Einem platzierten Bild, das versehentlich auf Endformat angelegt ist,
//soll virtueller Beschnitt durch Mehrfachduplizierung und Spiegelung
//der Duplikate hinzugefügt werden.
//In den Dokumenteinstellungen wird der Beschnitt mit 3 mm aktiviert.

// um die Sichtbarkeit der Variablen einzuschränken,
// sollte das eigentliche Skript über einen Funktionsaufruf abgerufen werden:

main();

/*void*/function main()
{
// Fehlerbehandlung
try
{
var savedMeasurementUnits = storeMeasurementUnitsForRestoring();
//Maßeinheiten auf Millimeter stellen
setMeasurementUnits2mm();
//Variablen festlegen
if ((app.selection.length==0) || (app.selection[0].constructor.name != "Rectangle"))
throw new Error("Bitte zuerst den Bildrahmen auswählen!");
var dimensions = loadNeededDimensions();
if (dimensions == null);
throw new Error("Fehler bei der Größenermittlung!");
//Seitengröße anpassen
with(app.activeDocument.documentPreferences)
{
pageHeight = dimensions.hoehe;
pageWidth = dimensions.breite;
}
//Referenzpunkt einstellen
app.activeDocument.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_LEFT_ANCHOR;

var pageItems = new Array();

//Auswahlobjekt bewegen
app.selection[0].move([0,0]);
// und Objekt in PageItems-Array speichern
pageItems.push(app.selection[0]);
//Objekt in die Zwischenablage kopieren
app.copy();

//rechtes Duplikat einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([dimensions.breite, 0]);
// und Objekt in PageItems-Array speichern
pageItems.push(app.selection[0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.horizontal;

//linkes Duplikat einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([- dimensions.breite, 0]);
// und Objekt in PageItems-Array speichern
pageItems.push(app.selection[0]);
app.activeDocument.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.horizontal;

// die Rahmen gruppieren
app.activeWindow.activePage.groups.add(pageItems);
app.activeWindow.activePage.groups[-1].select();
//Objektgruppe in die Zwischenablage kopieren
app.copy();

//Gruppe einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([dimensions.hoehe, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR;
app.selection[0].flip = Flip.vertical;

//Gruppe einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([- dimensions.hoehe, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR;
app.selection[0].flip = Flip.horizontal;

//Beschnitt auf 3 mm einstellen (Bleed)
with(app.activeDocument.documentPreferences)
{
documentBleedUniformSize = true;
documentBleedTopOffset = "3mm";
}
}
catch (error)
{
alert(error.message +"\n"+error.line);
}
finally
{
restoreMeasurementUnits(savedMeasurementUnits);
}
return;
/*Object*/function storeMeasurementUnitsForRestoring()
{
var measurementUnits = {};
measurementUnits.viewPreferencesHorizontalMeasurementUnits = app.activeDocument.viewPreferences.horizontalMeasurementUnits;
measurementUnits.viewPreferencesVerticalMeasurementUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;
return MeasurementUnits;
}
/*void*/function restoreMeasurementUnits(/*Object*/measurementUnits)
{
app.activeDocument.viewPreferences.horizontalMeasurementUnits = measurementUnits.viewPreferencesHorizontalMeasurementUnits;
app.activeDocument.viewPreferences.verticalMeasurementUnits = measurementUnits.viewPreferencesVerticalMeasurementUnits;
return;
}
/*void*/function setMeasurementUnits2mm()
{
app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
return;
}
/*object*/function loadNeededDimensions()
{
try
{
var dimensions = {};
dimensions.breite = app.selection[0].visibleBounds[3] - app.selection[0].visibleBounds[1];
dimensions.hoehe = app.selection[0].visibleBounds[2] - app.selection[0].visibleBounds[0];
dimensions.pageHeight = app.activeDocument.documentPreferences.pageHeight;
dimensions.pageWidth = app.activeDocument.documentPreferences.pageWidth;
return dimensions;
}
catch (error)
{
throw new Error(error.message + "\n" + error.line + "\n" + $.stack);
}
return null
}
}


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#515939] Top
 
Effges
Beiträge: 16
7. Aug 2013, 19:35
Beitrag #7 von 17
Beitrag ID: #515969
Bewertung:
(3313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Guten Abend Werner,

recht herzlichen Dank für Deine ganze Arbeit.
Zwar lief es nicht so wie gewünscht (Meldung „Fehler bei der Größenermittlung“), aber Dein Ansatz hat mich inspiriert auch mal quer zu denken und nach einer simpleren Lösung zu suchen.
Sicher lässt sich das Ganze professioneller und auch mit weniger „Code-Menge“ umsetzen, aber so weit bin ich noch lange nicht.

Bin aber sehr glücklich mit meiner eigenwilligen, unter meinen Bedingungen funktionierenden Lösung und hoffe, dass mein Skript auch einigen anderen InDesign-Nutzern irgendwann mal aus der Patsche hilft. Man sollte aber schon abwägen, bei welchem Bildmaterial man dieses Javaskript einsetzen kann. Denn bei Bildern mit Diagonalen am Bildrand ist das nicht sehr sinnvoll.
Aber in der Not...

Hier mein Code:

Zitat #target indesign
//InDesign-Skript "Kantenerweiterung_virtuell_TS.jsx"
//
//Einem platzierten Bild, das versehentlich auf Endformat angelegt ist,
//soll virtueller Beschnitt durch Mehrfachduplizierung und Spiegelung
//der Duplikate hinzugefügt werden.
//In den Dokumenteinstellungen wird der Beschnitt mit 3 mm aktiviert.

//Existenz von Seite und Auswahl prüfen
if (app.documents.length != 0){
if (app.selection.length != 0){
}
else {
alert("Kein Objekt ausgewählt.");
}
}
else{
alert("Kein Dokument geöffnet. Bitte Dokument öffnen und wiederholen.");

//Maßeinheiten auf Millimeter stellen
app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;

}
//Variablen festlegen
if (app.selection.length > 0){
var _auswahl = app.selection[0]
var _dok = app.activeDocument;
var _breite = _auswahl.visibleBounds[3] - _auswahl.visibleBounds[1];
var _hoehe = _auswahl.visibleBounds[2] - _auswahl.visibleBounds[0];
var _myPageHeight = app.activeDocument.documentPreferences.pageHeight;
var _myPageWidth = app.activeDocument.documentPreferences.pageWidth;
}

//Pasteboard vergrößern, Voreinstellung evtl. anpassen
with(_dok.pasteboardPreferences){
minimumSpaceAboveAndBelow = "500mm";
}

//Seitengröße anpassen
with(_dok.documentPreferences){
pageHeight = _hoehe;
pageWidth = _breite;
}

//Beschnitt auf 3 mm einstellen (Bleed), Voreinstellung evtl. anpassen
with(_dok.documentPreferences){
documentBleedUniformSize = true;
documentBleedTopOffset = "3mm";
}

//Referenzpunkt einstellen
_dok.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_LEFT_ANCHOR;

//Auswahlobjekt bewegen
_auswahl.move([0,0]);

//Objekt in die Zwischenablage kopieren
app.copy();

//Duplikat links Mitte (1) einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([- _breite, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.horizontal;

//Duplikat links oben (2) einfügen und drehen
app.paste();
app.selection[0].move([- _breite, - _hoehe]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
if (app.documents.length > 0)
for (n = 0; n < app.selection.length; n++)
try {app.selection[n].rotationAngle += 180} catch (_){}

//Duplikat oben (3) einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([0, - _hoehe]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.vertical;

//Duplikat rechts oben (4) einfügen und drehen
app.paste();
app.selection[0].move([_breite, - _hoehe]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
if (app.documents.length > 0)
for (n = 0; n < app.selection.length; n++)
try {app.selection[n].rotationAngle += 180} catch (_){}

//Duplikat rechts Mitte (5) einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([_breite, 0]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.horizontal;

//Duplikat rechts unten (6) einfügen und drehen
app.paste();
app.selection[0].move([_breite, _hoehe]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
if (app.documents.length > 0)
for (n = 0; n < app.selection.length; n++)
try {app.selection[n].rotationAngle += 180} catch (_){}

//Duplikat unten (7) einfügen und horizontal spiegeln
app.paste();
app.selection[0].move([0, _hoehe]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
app.selection[0].flip = Flip.vertical;

//Duplikat links unten (8) einfügen und drehen
app.paste();
app.selection[0].move([- _breite, _hoehe]);
app.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
if (app.documents.length > 0)
for (n = 0; n < app.selection.length; n++)
try {app.selection[n].rotationAngle += 180} catch (_){}


Werner, Dir noch mal ein ganz fettes DANKESCHÖN!

Beste Grüße an den Kenner
Thomas
als Antwort auf: [#515953] Top
 
Effges
Beiträge: 16
7. Aug 2013, 20:01
Beitrag #8 von 17
Beitrag ID: #515972
Bewertung:
(3308 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Antwort auf [ WernerPerplies ] Wenn es Dir möglich ist, solltest Du auch noch einen Blick in das Buch von Grant Gamble werfen. ;-)

Deinen Tipp nehme ich gerne entgegen.

Ich möchte auch noch eben Deine Fragen beantworten.

Mit Dokumentrahmen meinte ich tatsächlich die Begrenzung des Druckbogens.

Unter Klassifizierung würde ich eine Zuordnung eines bestimmten Skripting-Objektes zu einem eingrenzenden Oberbegriff in der Javaskript- bzw. Dokument-Struktur verstehen. Also Begrifflichkeiten wie Document, Page, Spread, String, Text usw.

Mit der Fehlerbehandlung werde ich mich noch mal eingehend befassen müssen, genauso wie mit dem Skripten von Werte-Abfragen und Eingabeaufforderungen.

Beim Buch von G.F. vermisse ich einige Suchbegriffe im Index, was mir als Leser das Auffinden von bestimmten Inhalten deutlich erschwert.

Bis bald
Thomas
als Antwort auf: [#515953] Top
 
WernerPerplies
Beiträge: 2177
8. Aug 2013, 07:20
Beitrag #9 von 17
Beitrag ID: #515985
Bewertung:
(3257 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Thomas,

Zitat Unter Klassifizierung würde ich eine Zuordnung eines bestimmten Skripting-Objektes zu einem eingrenzenden Oberbegriff in der Javaskript- bzw. Dokument-Struktur verstehen. Also Begrifflichkeiten wie Document, Page, Spread, String, Text usw.


Also die Eltern (Parent) eines Objektes:
Parent.object.

Zitat Mit der Fehlerbehandlung werde ich mich noch mal eingehend befassen müssen...


Eine gute Idee!
Code
try{...}catch(error){} 

Und nicht vergessen, das ist eine Fehler_behandlungs_methode und keine Fehler_ignorier_methode.

So etwas
Code
try {app.selection[n].rotationAngle += 180} catch (_){} 

ist wie die Abschaffung der Polizei zur Senkung der Kriminalitätsrate!

Zitat Beim Buch von G.F. vermisse ich einige Suchbegriffe im Index, was mir als Leser das Auffinden von bestimmten Inhalten deutlich erschwert.

Das liegt wohl daran, das das Buch ein [i]Lehrbuch und kein Nachschlagewerk ist.
Grant Gamble führt einen [b]systematisch an die Programmierung von Skripten heran und untermauert alles mit nützlichen Beispielen.
Dabei vergisst er auch die Grundlagen der Grundlagen der Programmierung nicht, beschäftigt sich mit dem ESTK und fast jeder Abschnitt endet mit [b]Try it yorself.

Zum Nachschlagen verwendest Du besser den [i]Objktmodell Viewer im ESTK oder einen Extrakt aus der [i]TLB, wie Du ihn zum Beispiel bei Jongware findest.

Aus [b]meiner Sicht :-) außerordent nützlich ist auch:
Eigenschaften eines beliebigen Adobe InDesign Objektes auslesen

Noch kurz zu meinem Skript:

Da habe ich tatsächlich am Schluss einen Fehler eingebaut. Dieser Fehler zeigt wie wichtig eine saubere Schreibweise beim Progammieren ist.
Code
if (dimensions == null);<---- 

Siehst Du das Semikolon? Es beendet direkt den Vergleich und führt
Code
throw new Error("Fehler bei der Größenermittlung!"); 

[b]ohne Berücksichtigung des Vergleichsergebnisses aus.

Solch einen Fehler findet man übrigens sehr leicht durch setzten eines Unterbrecherpunktes auf den Funktionsaufruf!

Aber schlimmer!
[i]Vergleich und [i]throw ist komplett überflüssig, denn das [i]Throw in der Funktion [b]loadNeededDimensions() führt direkt in das Catch der aufrufenden Routine!

Probiere es aus, in dem Du einen Fehler in die Funktion einbaust.

Entschuldige bitte diesen Fehler.

Richtig solle es so aussehen:
Code
. 
.
.
var dimensions = loadNeededDimensions();
//Seitengröße anpassen
with(app.activeDocument.documentPreferences)
{
pageHeight = dimensions.hoehe;
pageWidth = dimensions.breite;
}

.
.
.

Und viel Erfolg weiterhin!

Noch etwas:
Der BBCode-Parser der Forumsoftware hat in diesem Beitrag wohl keine rechte Lust mehr gehabt, denn die meisten Schriftauszeichnungen werden nicht mehr richt interpretiert!

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#515972] Top
 
Uwe Laubender S
Beiträge: 3991
8. Aug 2013, 09:27
Beitrag #10 von 17
Beitrag ID: #515987
Bewertung:
(3224 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo, Werner!

Ich möchte noch mal kurz auf das Buch von Grant Gamble eingehen:
Eine Auslassung möchte ich bemängeln. Multistatus-Objekte (MSOs) werden überhaupt nicht behandelt…

Schade. Alle Tiefen und Untiefen von MSOs auszuloten ist gar nicht so einfach.
Aber vielleicht war damals die Zeit noch nicht reif dafür (InDesign CS5). Für heutige Anwendungen, gerade im Hinblick auf's iPad-Publishing, aber ein echter Gewinn!

Die gesamte Scripting-Community ist auf jeden Fall Grant zu Dank verpflichtet, da er der erste war, der gezeigt hat (oder zumindest der erste, der es veröffentlicht hat), wie man einen bestimmten Objekttyp aus einer Übermenge ermitteln kann.

Stichwort: "Resolve the object specifier"

Hier ein Beispiel mit der Objektoberklasse PageItems:

Code
var myObjectConstructorName = myDoc.pageItems[0].getElements()[0].constructor.name; 


Einfach, aber genial…

Ich jedenfalls empfinde Grants Buch als äußerst spannend.
Fast wie ein guter Krimi ;-)
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515985] Top
 
WernerPerplies
Beiträge: 2177
8. Aug 2013, 09:34
Beitrag #11 von 17
Beitrag ID: #515988
Bewertung:
(3217 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Uwe,

Zitat Eine Auslassung möchte ich bemängeln. Multistatus-Objekte (MSOs) werden überhaupt nicht behandelt…


Vielleicht könnte das ja mal jemand in einem Beitrag als Info ergänzen. ;-)

Zitat Ich jedenfalls empfinde Grants Buch als äußerst spannend.
Fast wie ein guter Krimi ;-)

Ich freue mich, dass Du das Buch ähnlich positiv siehst.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#515987] Top
 
Uwe Laubender S
Beiträge: 3991
8. Aug 2013, 09:36
Beitrag #12 von 17
Beitrag ID: #515990
Bewertung:
(3217 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Zitat von Werner Ich freue mich, dass Du das Buch ähnlich positiv siehst.


Wobei mir aber die schlechte Typografie schwer im Magen liegt…
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515988] Top
 
WernerPerplies
Beiträge: 2177
8. Aug 2013, 09:44
Beitrag #13 von 17
Beitrag ID: #515991
Bewertung:
(3211 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Uwe,

na ja, ich finde, hier zählt der Inhalt.
Außerden wäre ich der letzte, der so etwas beurteilen könnte. ;-)
Nicht jeder, der gute InDesignskripts schreibt, muss ein guter Typograf sein, und vielleicht hat hat er ja das Werk selbst erstellt.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#515990] Top
 
Uwe Laubender S
Beiträge: 3991
8. Aug 2013, 09:45
Beitrag #14 von 17
Beitrag ID: #515992
Bewertung:
(3208 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Zitat von Werner Vielleicht könnte das ja mal jemand in einem Beitrag als Info ergänzen. ;-)


Das schwenkt hier zwar vom Thema ab, hat aber für alle InDesign-Dokumente Gültigkeit, die MSOs enthalten:

"myDoc.allPageItems" listet mitnichten alle Page Items eines Dokuments!

Page Items, die sich nicht innerhalb des aktiven (sichtbaren) Status eines MSOs befinden, werden von allPageItems nicht erfasst.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515988] Top
 
Effges
Beiträge: 16
9. Aug 2013, 19:12
Beitrag #15 von 17
Beitrag ID: #516087
Bewertung:
(3086 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Virtuelle Beschnittzugabe durch Mehrfachduplizierung und Spiegelung


Hallo Werner!

Zitat Das liegt wohl daran, dass das Buch ein Lehrbuch und kein Nachschlagewerk ist.

Schade, ich wäre froh, wenn ein gutes Lehrbuch gleichzeitig auch ein Nachschlagewerk sein könnte. ;-)

Zitat So etwas ist wie die Abschaffung der Polizei zur Senkung der Kriminalitätsrate!

Muss es dann so lauten?
Code
try { 
app.selection[n].rotationAngle += 180
}
catch(error){}

Oder fehlt da noch etwas?

Zitat Und viel Erfolg weiterhin!

Vielen Dank, wünsche ich Dir auch.
Ich bleibe am Ball und ziehe den Kauf des Gamble-Buches ernsthaft in Erwägung.

Allerbeste Grüße
(auch an Uwe)

Thomas
als Antwort auf: [#515985] Top
 
« « 1 2 » »  
X