[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Bild teilen nach Maßvorgabe ID CS5

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

Bild teilen nach Maßvorgabe ID CS5

Effges
Beiträge gesamt: 16

15. Jul 2013, 20:50
Beitrag # 1 von 22
Bewertung:
(13495 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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!
X

Bild teilen nach Maßvorgabe ID CS5

Gerald Singelmann
  
Beiträge gesamt: 6269

16. Jul 2013, 11:51
Beitrag # 2 von 22
Beitrag ID: #515073
Bewertung:
(13430 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#515037]

Bild teilen nach Maßvorgabe ID CS5

Effges
Beiträge gesamt: 16

16. Jul 2013, 12:36
Beitrag # 3 von 22
Beitrag ID: #515082
Bewertung:
(13413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Bild teilen nach Maßvorgabe ID CS5

Martin Fischer
  
Beiträge gesamt: 12778

16. Jul 2013, 12:53
Beitrag # 4 von 22
Beitrag ID: #515085
Bewertung:
(13405 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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. ;-)


als Antwort auf: [#515073]

Bild teilen nach Maßvorgabe ID CS5

Ralf Hobirk
Beiträge gesamt: 5961

16. Jul 2013, 13:13
Beitrag # 5 von 22
Beitrag ID: #515090
Bewertung:
(13391 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.


als Antwort auf: [#515085]

Bild teilen nach Maßvorgabe ID CS5

-hans-
Beiträge gesamt: 748

16. Jul 2013, 14:06
Beitrag # 6 von 22
Beitrag ID: #515096
Bewertung:
(13365 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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


als Antwort auf: [#515085]

Bild teilen nach Maßvorgabe ID CS5

Effges
Beiträge gesamt: 16

16. Jul 2013, 17:55
Beitrag # 7 von 22
Beitrag ID: #515117
Bewertung:
(13321 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Bild teilen nach Maßvorgabe ID CS5

-hans-
Beiträge gesamt: 748

16. Jul 2013, 18:10
Beitrag # 8 von 22
Beitrag ID: #515119
Bewertung:
(13317 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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'


als Antwort auf: [#515117]

Bild teilen nach Maßvorgabe ID CS5

Effges
Beiträge gesamt: 16

16. Jul 2013, 18:14
Beitrag # 9 von 22
Beitrag ID: #515120
Bewertung:
(13312 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Bild teilen nach Maßvorgabe ID CS5

Ralf Hobirk
Beiträge gesamt: 5961

16. Jul 2013, 18:51
Beitrag # 10 von 22
Beitrag ID: #515125
Bewertung:
(13286 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.


als Antwort auf: [#515120]

Bild teilen nach Maßvorgabe ID CS5

-hans-
Beiträge gesamt: 748

16. Jul 2013, 20:49
Beitrag # 11 von 22
Beitrag ID: #515131
Bewertung:
(13237 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Ralf,

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


als Antwort auf: [#515125]

Bild teilen nach Maßvorgabe ID CS5

Ralf Hobirk
Beiträge gesamt: 5961

16. Jul 2013, 21:12
Beitrag # 12 von 22
Beitrag ID: #515133
Bewertung:
(13227 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Hans-Gerd,

alles klar, funktioniert ;-)


als Antwort auf: [#515131]

Bild teilen nach Maßvorgabe ID CS5

-hans-
Beiträge gesamt: 748

16. Jul 2013, 23:00
Beitrag # 13 von 22
Beitrag ID: #515139
Bewertung:
(13202 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
... 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 :)


als Antwort auf: [#515133]
(Dieser Beitrag wurde von -hans- am 16. Jul 2013, 23:05 geändert)

Bild teilen nach Maßvorgabe ID CS5

Ralf Hobirk
Beiträge gesamt: 5961

16. Jul 2013, 23:10
Beitrag # 14 von 22
Beitrag ID: #515141
Bewertung:
(13190 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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…


als Antwort auf: [#515139]

Bild teilen nach Maßvorgabe ID CS5

WernerPerplies
Beiträge gesamt: 2760

17. Jul 2013, 07:09
Beitrag # 15 von 22
Beitrag ID: #515144
Bewertung:
(13106 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.


als Antwort auf: [#515139]
X