[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt EndhorizontalOffset

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

EndhorizontalOffset

faxinger
Beiträge gesamt: 233

17. Okt 2018, 16:38
Beitrag # 1 von 6
Bewertung:
(2000 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

im Prinzip ist dies die Weiterentwicklung meines Skriptes, die auf Objekte anhand des jeweils zugewiesenen Objektformates zugreift.

Die aktuelle Hürde liegt beim EndhorizontalOffset:
Das Skript liest mir das Zeichen aus von dem ich das EndhorizontalOffset herausfinden möchte. Doch die Info selber bekomme ich nicht.

Code
// die Auswahl  
var sel = app.selection;

// eine Liste mit Variablen-Namen vorbereiten
var
preis,
streichpreis,
preishit,
streichpreis_hit,
preiszusatz,
preiszusatz_palettenabnahme,
grundpreis_zusatz,
grundpreis_zusatz_palette,
palettenpreis,
palettenpreis_einzelabnahme,
feature_1,
feature_2,
feature_3,
feature_4,
feature_hit_1,
feature_hit_2,
feature_hit_3;

// eine Scheife durch die Auswahl
for (var i = 0; i < sel.length; i++) {
// das gerade untersuche Objekt in der Auswahl
var curSel = sel[i];
// das gerade verwendete Objektformat
var objStyleName = curSel.appliedObjectStyle.name;

//den Namen des Objektformats prüfen und der Variablen zuweisen
if (objStyleName == "preis") preis = curSel;
else if (objStyleName == "streichpreis") streichpreis = curSel;

else if (objStyleName == "preishit") preishit = curSel;
else if (objStyleName == "streichpreis_hit") streichpreis_hit = curSel;

else if (objStyleName == "preiszusatz") preiszusatz = curSel;
else if (objStyleName == "preiszusatz") preiszusatz_palettenabnahme = curSel;

else if (objStyleName == "grundpreis_zusatz") grundpreis_zusatz = curSel;
else if (objStyleName == "grundpreis_zusatz") grundpreis_zusatz_palette = curSel;

else if (objStyleName == "palettenpreis") palettenpreis = curSel;
else if (objStyleName == "palettenpreis") palettenpreis_einzelabnahme = curSel;
else if (objStyleName == "grundpreis_zusatz") grundpreis_zusatz_palette = curSel;

else if (objStyleName == "feature") feature_1 = curSel;
else if (objStyleName == "feature") feature_2 = curSel;
else if (objStyleName == "feature") feature_3 = curSel;

else if (objStyleName == "feature_hit") feature_hit_1 = curSel;
else if (objStyleName == "feature_hit") feature_hit_2 = curSel;
else if (objStyleName == "feature_hit") feature_hit_3 = curSel;
};


/* PREISZUSATZ A U S R I C H T E N A M P R E I S */
// if (preiszusatz.isValid)
// {
var preis_erste_zahl = preis.contents[0];
//alert (preis_erste_zahl);
var font_groesse_preis = preis.characters[0].pointSize;
//alert (font_groesse_preis);
var faktor = font_groesse_preis*0.001;
//alert (faktor);
var abstand_preis = preis_erste_zahl;
switch(preis_erste_zahl) {
case "0":
abstand_preis = faktor*0.9
break;
case "1":
abstand_preis = faktor*-31.2
break;
case "2":
abstand_preis = faktor*10
break;
case "3":
abstand_preis = faktor*10.75
break;
case "4":
abstand_preis = faktor*7.5
break;
case "5":
abstand_preis = faktor*13.1
break;
case "6":
abstand_preis = faktor*1
break;
case "7":
abstand_preis = faktor*-18
break;
case "8":
abstand_preis = faktor*10.5
break;
case "9":
abstand_preis = faktor*-0.75
break;
};
var preiszusatz_gb = preiszusatz.geometricBounds;
var preiszusatz_breite = preiszusatz_gb[3] - preiszusatz_gb[1];
var preiszusatz_hoehe = preiszusatz_gb[2] - preiszusatz_gb[0];
var preis_hoehe = preis.geometricBounds[2] - preis.geometricBounds[0];
var preisgbX = preis.geometricBounds[1];
var preisgbY = preis.geometricBounds[0];
//alert (preisgbX);
//alert (preiszusatz_gb);
preiszusatz.move([preisgbX - preiszusatz_breite - abstand_preis, preisgbY + preis_hoehe - preiszusatz_hoehe]) ;
// }

/* GRUNDPREISZUSATZ A U S R I C H T E N A M P R E I S */
//if (grundpreis_zusatz.isValid)
// {
var preis_inhalt = preis.contents;
var kommaindex = preis_inhalt.indexOf("\.");
var kommaposition = preis_inhalt[kommaindex];
alert (kommaposition);
var x_koord_preis_komma_stelle = kommaposition.endhorizontalOffset;
alert (x_koord_preis_komma_stelle);
// };
/*
var grundpreis_zusatz_gb = grundpreis_zusatz.geometricBounds;
var grundpreis_zusatz_hoehe = grundpreis_zusatz_gb[2] - grundpreis_zusatz_gb[0];
var preis_hoehe = preis.geometricBounds[2] - preis.geometricBounds[0];
var preisgbX = preis.geometricBounds[1];
var preisgbY = preis.geometricBounds[0];
// alert (preisgbX);
// alert (preiszusgb);
// grundpreis_zusatz.move([x_koord_preis_komma_stelle, preisgbY + preis_hoehe - grundpreis_zusatz_hoehe]) ;
*/




Habt ihr eine Idee?
Vielen Dank.

Anhang:
test.idml (36.6 KB)
X

EndhorizontalOffset

Kai Rübsamen
Beiträge gesamt: 4632

17. Okt 2018, 21:29
Beitrag # 2 von 6
Beitrag ID: #566912
Bewertung:
(1958 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Faxinger, die Idee von Gerald einen neuen Beitrag zu erstellen, macht es leider nicht besser: Dein Skript ist zu lang. Wenn das jetzt einer auseinander nimmt, ist er eine halbe Stunde locker damit beschäftigt. DAS geht über die übliche Hilfestellung eines Forums hinaus. Ich rate, dass sich deswegen keiner meldet …
Gruß Kai Rübsamen


als Antwort auf: [#566906]

EndhorizontalOffset

drerol74
Beiträge gesamt: 411

18. Okt 2018, 00:53
Beitrag # 3 von 6
Beitrag ID: #566918
Bewertung:
(1939 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

schreib mal in deinen Alert:
alert(kommaposition.constructor.name);

Mit »preis.contents« bekommst du einen String zurück, somit ist »kommaposition« auch kein Textobjekt mit der gewünschten Eigenschaft.


Schöne Grüße
Roland


als Antwort auf: [#566906]

EndhorizontalOffset

faxinger
Beiträge gesamt: 233

18. Okt 2018, 17:08
Beitrag # 4 von 6
Beitrag ID: #566950
Bewertung:
(1893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Roland.
Ja ich bekomme einen String zurück.
Ich dachte dass ich genau dieses eine Zeichen erhalte.
Wie muss ich das dann adressieren?
So scheinbar ja nicht:
Code
            var kommaindex = preis_inhalt.indexOf("\."); 
var kommaposition = preis_inhalt[kommaindex];



Ich hab jetzt den Code mal auf das notwendigste gekürzt:

Code
// die Auswahl  
var sel = app.selection;

// eine Liste mit Variablen-Namen vorbereiten
var
preis,
preiszusatz,
grundpreis_zusatz;
// eine Scheife durch die Auswahl
for (var i = 0; i < sel.length; i++) {
// das gerade untersuche Objekt in der Auswahl
var curSel = sel[i];
// das gerade verwendete Objektformat
var objStyleName = curSel.appliedObjectStyle.name;

//den Namen des Objektformats prüfen und der Variablen zuweisen
if (objStyleName == "preis") preis = curSel;

else if (objStyleName == "preiszusatz") preiszusatz = curSel;
else if (objStyleName == "grundpreiszusatz") grundpreiszusatz = curSel;
};

/* PREISZUSATZ A U S R I C H T E N A M P R E I S */
var preis_erste_zahl = preis.contents[0];

var font_groesse_preis = preis.characters[0].pointSize;

var faktor = font_groesse_preis*0.001;

var abstand_preis = preis_erste_zahl;
switch(preis_erste_zahl) {
case "0":
abstand_preis = faktor*0.9
break;
case "1":
abstand_preis = faktor*-31.2
break;
case "2":
abstand_preis = faktor*10
break;
case "3":
abstand_preis = faktor*10.75
break;
case "4":
abstand_preis = faktor*7.5
break;
case "5":
abstand_preis = faktor*13.1
break;
case "6":
abstand_preis = faktor*1
break;
case "7":
abstand_preis = faktor*-18
break;
case "8":
abstand_preis = faktor*10.5
break;
case "9":
abstand_preis = faktor*-0.75
break;
};
var preiszusatz_gb = preiszusatz.geometricBounds;
var preiszusatz_breite = preiszusatz_gb[3] - preiszusatz_gb[1];
var preiszusatz_hoehe = preiszusatz_gb[2] - preiszusatz_gb[0];
var preis_hoehe = preis.geometricBounds[2] - preis.geometricBounds[0];
var preisgbX = preis.geometricBounds[1];
var preisgbY = preis.geometricBounds[0];
preiszusatz.move([preisgbX - preiszusatz_breite - abstand_preis, preisgbY + preis_hoehe - preiszusatz_hoehe]) ;


/* GRUNDPREISZUSATZ A U S R I C H T E N A M P R E I S */
var preis_inhalt = preis.contents;
var kommaindex = preis_inhalt.indexOf("\.");
var kommaposition = preis_inhalt[kommaindex];
alert(kommaposition.constructor.name);
var x_koord_preis_komma_stelle = kommaposition.endhorizontalOffset;
alert (x_koord_preis_komma_stelle);



Danke an alle.
LG
faxinger


als Antwort auf: [#566918]

EndhorizontalOffset

Hans Haesler
  
Beiträge gesamt: 5741

18. Okt 2018, 22:38
Beitrag # 5 von 6
Beitrag ID: #566957
Bewertung:
(1858 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

versuche es bitte mal so:

Code
var preis_inhalt = preis.contents; 
var kommaindex = preis_inhalt.indexOf(".");
var x_koord_preis_komma_stelle = preis.characters[kommaindex].endHorizontalOffset;
alert (x_koord_preis_komma_stelle);

Wichtig: endHorizontalOffset (mit Versal-H).

Gruss, Hans


als Antwort auf: [#566950]

EndhorizontalOffset

faxinger
Beiträge gesamt: 233

22. Okt 2018, 17:20
Beitrag # 6 von 6
Beitrag ID: #566998
Bewertung:
(1732 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für deine Antwort.

Jetzt funktioniert es wunderbar.

Danke
LG
faxinger


als Antwort auf: [#566957]
X

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.

Veranstaltungen
23.09.2019

Nürnberg
Montag, 23. Sept. 2019, 09.30 Uhr

Schulung, Seminar

Unsere Schulung Colormanagement bzw. Farbmanagement für Grafik, Foto und PrePress erklärt dem Anwender die praxisgerechte Anwendung von ICC-Colormanagement. Sie lernen, Colormanagement sicher in der täglichen Praxis einzusetzen. Angefangen bei der Monitorkalibration über die PSD-Grundeinstellungen bis hin zum medienneutralen CMM in InDesign.

Ja

Organisator: Cleverprinting.de

https://www.cleverprinting.de/schulungen/colormanagement-farbmanagement-schulung/

Colormanagement für Grafik, Foto und PrePress
Veranstaltungen
24.09.2019

Nürnberg
Dienstag, 24. Sept. 2019, 09.30 Uhr

Schulung, Seminar

In unserer eintägigen Schulung „Acrobat Professional und PDF/X für Grafik und PrePres“ erklären wir Ihnen alle Grundlagen der PDF-Technologie: angefangen vom richtigen Umgang mit Schriften, dem korrekten Erzeugen einer PDF-Datei bis hin zur Speicherung Ihrer PDF-Datei als Preflight-geprüftes PDF/X.

Ja

Organisator: Cleverprinting.de

https://www.cleverprinting.de/schulungen/schulung-acrobat-professional-und-pdfx/

Acrobat Professional und PDF/X für Grafik und PrePress