hilfdirselbst.ch
Facebook Twitter gamper-media
Effges
Beiträge: 16
15. Jul 2013, 20:50
Beitrag #1 von 22
Bewertung:
(8242 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo zusammen,
schon einige Zeit suche ich nach einer Skriptlösung für das Teilen von großen Bildern, allerdings geht es nicht um das gleichmäßige Aufteilen mit Zwischenräumen, wie es vom Skript MakeGrid.jsx bekannt ist. Das Bild wäre im Dokument platziert und als Auswahl markiert. Es hat beispielsweise eine Höhe von 1.200 mm und eine Länge von 5.800 mm. Die Länge des Bildes soll in (z.B.) vier unterschiedlich Große Segmente unterteilt werden.
Segment A ist 1.250 mm breit, Segment B 1.500 mm, Segment C wieder 1.250 mm und das Vierte Segment 1.800 mm.
Es würde mir schon reichen, wenn ich durch mehrfache Anwendung eines Skriptes (bei dem ein Breitenwert = linkes Segment von mir abgefragt wird) zu einer gewünschten Teilung käme. Hat jemand von euch eine Idee o der kennt wer ein ähnliches Skript?

Für jeglichen Hinweis besten Dank!
Top
 
X
Gerald Singelmann  M  p
Beiträge: 6153
16. Jul 2013, 11:51
Beitrag #2 von 22
Beitrag ID: #515073
Bewertung:
(8177 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Look you here: http://www.indesign-faq.de/...lit_images_by_number

So in etwa?

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

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

http://www.cuppascript.com
als Antwort auf: [#515037] Top
 
Effges
Beiträge: 16
16. Jul 2013, 12:36
Beitrag #3 von 22
Beitrag ID: #515082
Bewertung:
(8160 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Danke Gerald,

das geht genau in die gewünschte Richtung.
Das Skript werde ich mir genauer ansehen und an meine genauen Vorstellungen anpassen. Vielen Dank!
als Antwort auf: [#515073] Top
 
Martin Fischer  M  p
Beiträge: 11678
16. Jul 2013, 12:53
Beitrag #4 von 22
Beitrag ID: #515085
Bewertung:
(8152 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo Gerald,

gut gemacht.
Funktioniert und gefällt.


Antwort auf: Auf HDS gab es heute eine Anfrage, die mir kurzweiliger erschien als das Projekt, das eigentlich dringend meine Aufmerksamkeit bräuchte ;)


Genau so ging es auch mir.
Und ich hab auch einen Entwurf gefertigt.
Allerdings nicht so komfortabel mit Eingabedialog und so wie bei Dir.
Deswegen hatte ich mein Konzept noch zurückgehalten.
Nun bin ich froh über diese Entscheidung. ;-)

Viele Grüße
Martin
als Antwort auf: [#515073] Top
 
Ralf Hobirk S
Beiträge: 5653
16. Jul 2013, 13:13
Beitrag #5 von 22
Beitrag ID: #515090
Bewertung:
(8138 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo zusammen,

ich hänge mich jetzt mal hier dran ;-)

Ich habe in meinen Jobs häufig Bilder, die in der Breite über eine komplette Doppelseite laufen. Da die Bindung dieser Kataloge in Klebebindung erfolgt, und ich den später nicht sichtbaren Teil der Bilder kompensieren muss, mache ich vor dem Export der Druck-PDFs folgendes:

– Ich teile das Bild im Bund (exakt in der Mitte). Im Klartext: "Step & Repeat" ohne Versatz, dann jeweils die Rahmen mit der Maus entsprechend zusammenziehen, so dass sie sich im Bund "treffen".

– Dem Bild im linken Rahmen einen bestimmten Versatz nach links geben, dem Bild im rechten Rahmen nach rechts.

Ließe sich das Script von Gerald dahingehend erweitern/ändern? Ggfs. mit fest im Script eingegebenen Werten für den rechts/links-Versatz? Es geht immer nur um einen senkrechten Schnitt.

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.8.5 | CS6 (ID 8.0.1)
als Antwort auf: [#515085] Top
 
-hans-
Beiträge: 733
16. Jul 2013, 14:06
Beitrag #6 von 22
Beitrag ID: #515096
Bewertung:
(8112 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Mein Ansatz als Nichtprogrammierer, und ich fürchte nach Arbeitsweise und logischem Denkansatz wird das auch nix mehr ;-)

Code
var currSel = app.selection[0];
if(currSel ==undefined)exit();
if(currSel.graphics.length ==0)exit();

var currDoc = app.activeDocument;

with(currDoc.viewPreferences){
horizontalMeasurementUnits = MeasurementUnits.millimeters;
verticalMeasurementUnits = MeasurementUnits.millimeters;
}

var oGBounds = currSel.geometricBounds
var currWidth = oGBounds[3] - oGBounds[1];

var segmentsArray = currDialog(currWidth);

setSegments(segmentsArray, currSel);


function currDialog(currWidth){

var currNbr = getSegmentsCount();
var w = new Window ("dialog", "get exact widths ...", );
var g = w.add('group');
for(var i = 0; i < currNbr; i++){
var eT = g.add ("edittext");
if(i == 0)eT.text = currWidth;
eT.characters = currWidth.toString().length;
eT.onChanging = function(){
var allET = this.parent.children;
var res = 0;
for(var e = 0; e < allET.length-1; e++){
res = res + parseFloat(allET[e].text);
}
var rest = 0;
allET[allET.length-1].visible = false
if(currWidth - res > 0){rest = currWidth - res; allET[allET.length-1].visible = true}
allET[allET.length-1].text = rest;

}
}


w.add ("button", undefined, "OK");
w.add ("button", undefined, "Cancel");
w.show ();

sArray = [];
allET = g.children
for(var e = 0; e < allET.length; e++){
currText = allET[e].text;
if(currText == '' || allET[e].visible = false){alert('nicht korrekt ausgefüllt'),exit();
}else{
sArray.push(currText)}
}

return sArray

}

function getSegmentsCount(){
var w = new Window ("dialog", "Segments");
var myDropdown = w.add ("dropdownlist", undefined, ["2", "3","4", "5", "6","7", "8", "9","10"]);
myDropdown.selection = 0;
w.add ("button", undefined, "OK");
w.add ("button", undefined, "Cancel");
w.show ();

return myDropdown.selection.index +2;

}



function setSegments(segmentsArray, currSel){
for(var s = 0; s < segmentsArray.length; s++){
if(s == 0){
var oGBounds = currSel.geometricBounds;
var newx2 = oGBounds[1] + parseFloat(segmentsArray[s]);
currSel.geometricBounds = [oGBounds[0], oGBounds[1],oGBounds[2],newx2];
}else{
var currSel = currSel.duplicate(undefined,[0,0]);
var oGBounds = currSel.geometricBounds;
var newx2 = oGBounds[3] + parseFloat(segmentsArray[s]);
currSel.geometricBounds = [oGBounds[0],oGBounds[3],oGBounds[2], newx2];
}

}
}


P.S. Als Antwort nur auf Post 1
Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515085] Top
 
Effges
Beiträge: 16
16. Jul 2013, 17:55
Beitrag #7 von 22
Beitrag ID: #515117
Bewertung:
(8068 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Allen, die sich meiner Angelegenheit angenommen haben, erbiete meinen herzlichen Dank. Ganz besondere Anerkennung gilt aber dem HANS! Du bist mir doch noch Einiges voraus und Dein Skript ist genau so geworden, wie ich es mir gewünscht habe. Hast das auch noch schneller hinbekommen als die Polizei erlaubt... #ZWINKER + SMILEY#
als Antwort auf: [#515096] Top
 
-hans-
Beiträge: 733
16. Jul 2013, 18:10
Beitrag #8 von 22
Beitrag ID: #515119
Bewertung:
(8064 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


sehr lieb, Danke

Scriptbeschreibung ergänzend:
Im ersten Textfeld des Dialoges wird die Grafikrahmenbreite als Orientierung angezeigt.
Der Wert im Textfeld für das letzte Segment wird automatisch ergänzt und ist 'schreibgeschützt'
Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515117] Top
 
Effges
Beiträge: 16
16. Jul 2013, 18:14
Beitrag #9 von 22
Beitrag ID: #515120
Bewertung:
(8059 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo ihr,
habe noch eben einen Dokument- und Auswahl-Check ergänzt und die Eingabeaufforderung angepasst. Ich liebe es, das Skript und auch das erfolgreiche Skripten von selbsternannten Nicht-Programmierern.

Beste Grüße
Thomas
Code
#target indesign
//InDesign Skript "Bildsegmentierung.jsx"
//
//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.");
}

var currSel = app.selection[0];
if(currSel ==undefined)exit();
if(currSel.graphics.length ==0)exit();

var currDoc = app.activeDocument;

with(currDoc.viewPreferences){
horizontalMeasurementUnits = MeasurementUnits.millimeters;
verticalMeasurementUnits = MeasurementUnits.millimeters;
}

var oGBounds = currSel.geometricBounds
var currWidth = oGBounds[3] - oGBounds[1];

var segmentsArray = currDialog(currWidth);

setSegments(segmentsArray, currSel);


function currDialog(currWidth){

var currNbr = getSegmentsCount();
var w = new Window ("dialog", "Bitte horizontale Segmentbreiten eingeben", );
var g = w.add('group');
for(var i = 0; i < currNbr; i++){
var eT = g.add ("edittext");
if(i == 0)eT.text = currWidth;
eT.characters = currWidth.toString().length;
eT.onChanging = function(){
var allET = this.parent.children;
var res = 0;
for(var e = 0; e < allET.length-1; e++){
res = res + parseFloat(allET[e].text);
}
var rest = 0;
allET[allET.length-1].visible = false
if(currWidth - res > 0){rest = currWidth - res; allET[allET.length-1].visible = true}
allET[allET.length-1].text = rest;

}
}


w.add ("button", undefined, "OK");
w.add ("button", undefined, "Cancel");
w.show ();

sArray = [];
allET = g.children
for(var e = 0; e < allET.length; e++){
currText = allET[e].text;
if(currText == '' || allET[e].visible = false){alert('unvollständig oder unkorrekt ausgefüllt'),exit();
}else{
sArray.push(currText)}
}

return sArray

}

function getSegmentsCount(){
var w = new Window ("dialog", "Segments");
var myDropdown = w.add ("dropdownlist", undefined, ["2", "3","4", "5", "6","7", "8", "9","10"]);
myDropdown.selection = 0;
w.add ("button", undefined, "OK");
w.add ("button", undefined, "Cancel");
w.show ();

return myDropdown.selection.index +2;

}



function setSegments(segmentsArray, currSel){
for(var s = 0; s < segmentsArray.length; s++){
if(s == 0){
var oGBounds = currSel.geometricBounds;
var newx2 = oGBounds[1] + parseFloat(segmentsArray[s]);
currSel.geometricBounds = [oGBounds[0], oGBounds[1],oGBounds[2],newx2];
}else{
var currSel = currSel.duplicate(undefined,[0,0]);
var oGBounds = currSel.geometricBounds;
var newx2 = oGBounds[3] + parseFloat(segmentsArray[s]);
currSel.geometricBounds = [oGBounds[0],oGBounds[3],oGBounds[2], newx2];
}

}
}

als Antwort auf: [#515117] Top
 
Ralf Hobirk S
Beiträge: 5653
16. Jul 2013, 18:51
Beitrag #10 von 22
Beitrag ID: #515125
Bewertung:
(8033 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hmm… im Gegensatz zu Geralds Script akzeptiert dieses keine Kommastellen, also nur glatte Millimeter. Es ist mir zumindest nicht gelungen, ein Bild von 131 mm Breite "sauber" zu teilen.

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.8.5 | CS6 (ID 8.0.1)
als Antwort auf: [#515120] Top
 
-hans-
Beiträge: 733
16. Jul 2013, 20:49
Beitrag #11 von 22
Beitrag ID: #515131
Bewertung:
(7984 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hi Ralf,

Separator ist der "."
http://de.selfhtml.org/...ngig.htm#parse_float
Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515125] Top
 
Ralf Hobirk S
Beiträge: 5653
16. Jul 2013, 21:12
Beitrag #12 von 22
Beitrag ID: #515133
Bewertung:
(7974 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hi Hans-Gerd,

alles klar, funktioniert ;-)

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.8.5 | CS6 (ID 8.0.1)
als Antwort auf: [#515131] Top
 
-hans-
Beiträge: 733
16. Jul 2013, 23:00
Beitrag #13 von 22
Beitrag ID: #515139
Bewertung:
(7949 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


... nichts desto trotz mag es durchaus andere Schwächen aufweisen :)
Werner P. hat mal sinngemäß gepostet, dass die meiste Zeit beim Scripten für die Fehleranalyse verwendet werden muss!
Antworten hier betrachte ich als Denkanstoß bzw. Hilfestellung für den Fragesteller und sie sind i. d. R. zwischen Tür und Angel geschrieben. Wer was hundertprozentiges erwartet und / oder von der Materie keine Ahnung hat, sollte ggf. auch bezahlen dürfen :)
Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515133]
(Dieser Beitrag wurde von -hans- am 16. Jul 2013, 23:05 geändert)
Top
 
Ralf Hobirk S
Beiträge: 5653
16. Jul 2013, 23:10
Beitrag #14 von 22
Beitrag ID: #515141
Bewertung:
(7937 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Antwort auf: dass die meiste Zeit beim Scripten für die Fehleranalyse verwendet werden muss!

Ich weiß. Wir sollen Ende August für unser Reservierungssystem eine zusätzliche Applikation geliefert bekommen. Und unser (Web)programmierer weiß jetzt schon, dass er sich auf rund 2 Monate debuggen einstellen darf, um die Schnittstelle zwischen Website und Reservierungssystem (IBE = Internet Booking Engine) vernünftig zum Laufen zu bekommen…

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.8.5 | CS6 (ID 8.0.1)
als Antwort auf: [#515139] Top
 
WernerPerplies
Beiträge: 2109
17. Jul 2013, 07:09
Beitrag #15 von 22
Beitrag ID: #515144
Bewertung:
(7853 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo Hans,

Zitat Werner P. hat mal sinngemäß gepostet, dass die meiste Zeit beim Scripten für die Fehleranalyse verwendet werden muss!

Na ja, ich weiß auch gerade nicht, was ich damals genau geschrieben habe, aber das Schreiben des eigentlichen Skriptes ist mit Sicherheit der geringste Aufwand bei der Erstellung eines einigermaßen benutzerfreundlichen, stabilen Skriptes.

1. Ein erheblicher Teil des Aufwandes (oft > 30 %) besteht schon mal darin, die Aufgabenstellung genau zu verstehen und ausreichendes Testmaterial zu bekommen.
Jeder nachgeschobene Wunsch oder jede neue Erkenntnis durch unzureichendes Testmaterial nach der Fertigstellung des Skriptes treibt den Gesamtaufwand extrem nach oben.
Also, die richtige Vorbereitung ist oft schon die halbe Miete.

2. Beim Schreiben des Skriptes Fehlermöglichkeiten weitgehend auszuschließen, also Grenzbedingungen zu berücksichtigen und zu behandeln.
Nützlich ist dabei auch immer die Überlegung:
Was könnte mein Anwender mit meinem Skript alles anstellen? ;-)
Da gibt es dann schon mal Überraschungen.

3. Sich auf Fehler vorbereiten:
Also try .. catch ... mit Fehlerbehandlung.
Außerdem enthält jedes meiner Auftragsskripte eine Protokollfunktion mit Fehlermeldung, Zeilennummer und bei Bedarf zuschaltbar den Aufruf-Stack.

4. Das Skript vor Auslieferung sorgfältig testen.

Und dennoch gibt es oft Fehler beim ersten Aufruf des Anwenders, weil durch die Bedingungen beim Anwender eventuell schon die Installation schief gelaufen ist.

Zitat Antworten hier betrachte ich als Denkanstoß bzw. Hilfestellung für den Fragesteller und sie sind i. d. R. zwischen Tür und Angel geschrieben.

Das sollte eigentlich jedem Anwender klar sein, ist es aber oft nicht.

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: [#515139] Top
 
-hans-
Beiträge: 733
17. Jul 2013, 13:16
Beitrag #16 von 22
Beitrag ID: #515172
Bewertung:
(2652 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo Ralf,

teste mal folgendes Script.
Im Idealfall ;-) sollte der Grafikrahmen am Bund getrennt werden.
Dadurch können auch Rahmen verarbeitet werden die nicht mittig über dem Bund stehen. Bildversatz bitte oben angeben.

keine Fehlerbehandlung, ausgewählter Grafikrahmen vorrausgestzt:

Code
var Bildversatz = 3; //Einheit mm


var currDoc = app.activeDocument;

currDoc.zeroPoint = [0,0];
with(currDoc.viewPreferences)
{
horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
}

var currSel = app.selection[0];
var pSpread = currSel.parentPage.parent;
var pPages = pSpread.pages;
if(pPages.length)
var pPagesBounds = pPages.everyItem().bounds;
var selBounds = currSel.geometricBounds;

var pPage = pPages[getParentPage(pPagesBounds, selBounds)];
var newSelX3 = pPage.bounds[3];
currSel.geometricBounds = [selBounds[0], selBounds[1], selBounds[2], newSelX3];
currSel.images[0].move(undefined,[-Bildversatz, 0]);
var newSel = currSel.duplicate(undefined,[0,0]);
var newSelBounds = newSel.geometricBounds;
newSel.geometricBounds = [selBounds[0], newSelBounds[3], selBounds[2], selBounds[3]];
newSel.images[0].move(undefined,[2*Bildversatz, 0]);

$




function getParentPage(pPagesBounds, selBounds)
{
x1Sel = selBounds[1];
x2Sel = selBounds[3];
for(var pb = 0; pb < pPagesBounds.length; pb++)
{
if(x1Sel < pPagesBounds[pb][3] && x2Sel > pPagesBounds[pb][3] ) break;
}
return pb;
}


Kritik, Wünsche, Anregungen?
Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515090] Top
 
Ralf Hobirk S
Beiträge: 5653
17. Jul 2013, 13:54
Beitrag #17 von 22
Beitrag ID: #515178
Bewertung:
(2633 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo Hans-Gerd,

erstmal vielen, vielen Dank!

Bildrahmen, die exakt mittig über dem Bund stehen, werden korrekt geteilt, die Bilder in den Rahmen bekommen auch den korrekten Versatz links/rechts. Trotzdem kommt eine Fehlermeldung:
Code
Error Number: 89858
Error String: Unknown object type
Engine: main
Source: Return value


Bei Bildrahmen, die nicht mittig über dem Bund stehen (z.B. 1/3 links vom Bund und 2/3 rechts vom Bund), passiert gar nichts außer dieser Fehlermeldung:
Code
Error Number: 45
Error String: Object is invalid
Line: 25
Source: var newSelX3 = pPage.bounds[3];


---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.8.5 | CS6 (ID 8.0.1)
als Antwort auf: [#515172] Top
 
-hans-
Beiträge: 733
17. Jul 2013, 14:14
Beitrag #18 von 22
Beitrag ID: #515180
Bewertung:
(2626 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hm,

läuft hier unter 5.5 und 6 problemlos.
Hast Du ein einfaches Musterdokument und die ID-Version?

thx :)
Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515178] Top
 
Ralf Hobirk S
Beiträge: 5653
17. Jul 2013, 15:27
Beitrag #19 von 22
Beitrag ID: #515183
Bewertung:
(2589 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo Hans-Gerd,

den Fehler mit dem asynchronen Bildrahmen (1/3+2/3) muss ich zurücknehmen. Ich habe gerade festgestellt, dass es sich nicht um eine "echte" Doppelseite handelte, sondern um ein A3-Dokument. Ohne Bund geht da natürlich nichts.

Ein (abgespecktes) Testdokument sende ich dir per Mail zu, meine ID-Version ist CS6 (8.0.1).

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.8.5 | CS6 (ID 8.0.1)
als Antwort auf: [#515180] Top
 
-hans-
Beiträge: 733
17. Jul 2013, 17:02
Beitrag #20 von 22
Beitrag ID: #515190
Bewertung:
(2552 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Lieber Ralf,

auch in dem Beispieldokument funktioniert bei mir alles ohne Fehler.
In dem eben geposteten Script war zwar an zwei Stellen noch unerklärlicher Codemüll (sorry & deshalb hier nochmal clean), aber deine Fehlerquelle finde ich nicht.
Vllt. kann (bitte :) ) gerade noch jemand kompetentes darauf schauen?

Code
var Bildversatz = 3; //Einheit mm 


var currDoc = app.activeDocument;

currDoc.zeroPoint = [0,0];
with(currDoc.viewPreferences)
{
horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
}

var currSel = app.selection[0];
var pSpread = currSel.parentPage.parent;
var pPages = pSpread.pages;
var pPagesBounds = pPages.everyItem().bounds;
var selBounds = currSel.geometricBounds;

var pPage = pPages[getParentPage(pPagesBounds, selBounds)];

var newSelX3 = pPage.bounds[3];
currSel.geometricBounds = [selBounds[0], selBounds[1], selBounds[2], newSelX3];
currSel.images[0].move(undefined,[-Bildversatz, 0]);

var newSel = currSel.duplicate(undefined,[0,0]);
var newSelBounds = newSel.geometricBounds;
newSel.geometricBounds = [selBounds[0], newSelBounds[3], selBounds[2], selBounds[3]];
newSel.images[0].move(undefined,[2*Bildversatz, 0]);




function getParentPage(pPagesBounds, selBounds)
{
x1Sel = selBounds[1];
x2Sel = selBounds[3];
for(var pb = 0; pb < pPagesBounds.length; pb++)
{
if(x1Sel < pPagesBounds[pb][3] && x2Sel > pPagesBounds[pb][3] )
{
break;
}
}
return pb;
}

Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515183] Top
 
Ralf Hobirk S
Beiträge: 5653
17. Jul 2013, 17:20
Beitrag #21 von 22
Beitrag ID: #515191
Bewertung:
(2534 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


Hallo Hans-Gerd,

mit dem bereinigten Code ist jetzt alles korrekt. Keine Fehlermeldung mehr. Hab's mit zwei unterschiedlichen Dateien getestet.

Hätte ich das Script mal vor ca. 2 Wochen gehabt ;-) Aber der nächste Job mit dieser Anforderung läuft Anfang August…

Habe dem Script übrigens den Namen SplitImagesOnSpline gegeben :-)

Noch mal vielen, vielen Dank!

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.8.5 | CS6 (ID 8.0.1)
als Antwort auf: [#515190] Top
 
-hans-
Beiträge: 733
17. Jul 2013, 17:22
Beitrag #22 von 22
Beitrag ID: #515192
Bewertung:
(2533 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Bild teilen nach Maßvorgabe ID CS5


na denne :)
Lieben Gruß

Hans-Gerd Claßen
als Antwort auf: [#515191] Top
 
X