[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: 195

17. Okt 2018, 16:38
Beitrag # 1 von 6
Bewertung:
(1005 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: 4590

17. Okt 2018, 21:29
Beitrag # 2 von 6
Beitrag ID: #566912
Bewertung:
(963 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: 399

18. Okt 2018, 00:53
Beitrag # 3 von 6
Beitrag ID: #566918
Bewertung:
(944 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: 195

18. Okt 2018, 17:08
Beitrag # 4 von 6
Beitrag ID: #566950
Bewertung:
(898 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: 5673

18. Okt 2018, 22:38
Beitrag # 5 von 6
Beitrag ID: #566957
Bewertung:
(863 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: 195

22. Okt 2018, 17:20
Beitrag # 6 von 6
Beitrag ID: #566998
Bewertung:
(737 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]
Hier Klicken X

Aktuell

PDF / Print
pdfChip

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
24.01.2019

Impressed GmbH, Hamburg
Donnerstag, 24. Jan. 2019, 10.00 - 10.30 Uhr

Webinar

Wir stellen Ihnen in diesem kostenlosen ca. halbstündigen Webinar das neue Enfocus Switch PDF Review Modul zur Freigabe von PDF-Druckdaten vor. Wir zeigen Ihnen, wie Sie die Lösung in bestehende Enfocus Switch-Workflows einbinden und somit die Freigabeprozesse mit Ihren Kunden erheblich beschleunigen können.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Detlef Grimm, E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=250

Enfocus Switch PDF Review Modul
Veranstaltungen
24.01.2019

Hochschule der Medien, Stuttgart
Donnerstag, 24. Jan. 2019, 18.00 Uhr

Vortrag

Wie jedes Jahr im Januar besucht uns Monika Gause mit Neuigkeiten zu Illustrator und aus der restlichen Publishing-Welt. Der Abend ist pickepacke voll: Zunächst zeigt uns Monika alles Neue, was uns Adobe in Illustrator 2019 gepackt hat. Anschließend zeigt sie verschiedenen Möglichkeiten der realistischen Darstellung: Verläufe, Verlaufsgitter, Angleichungen und wie man sie in den Griff bekommt. Dazu gehört auch die Vorstellung des kostenlosen Plugin Mesh Tormentor. Abgeschlossen wird mit dem "Best-of" aus einem Infografik/Dokumentation-Seminar, das Monika letztes Jahr in München gehalten hat. Es ist nicht nötig Tickets zu kaufen oder eine Registrierung durchzuführen. Komme einfach vorbei! Wir freuen uns Katharina Frerichs und Christoph Steffens

Kostenlos, Ticketkauf oder Anmeldung ist nicht nötig.

Nein

Organisator: IDUG Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailchristoph.steffens AT gmail DOT com

Illustrator mit Monika Gause