[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:
(630 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: 4584

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

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

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

Affinity

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
22.11.2018

In dieser Veranstaltung kombinieren wir Emotion und Ratio, Gestaltung und Rechtschreibung.

Hochschule der Medien, Stuttgart
Donnerstag, 22. Nov. 2018, 18.00 - 20.00 Uhr

Vortrag

Sven Tillack und Steffen Knöll vom mehrfach ausgezeichneten "Studio Tillack Knoell", Stuttgart, (studiotillackknoell.com) geben einen Einblick in die Arbeit in der visuellen Kommunikation. Ihr Arbeitsfeld ist digitales und analoges, von visuellen Erscheinungsbildern bis hin zu kommunizierender Grafik im Raum. Besondere Erfahrungen hat Sven bei der Arbeit mit Risographie gemacht, Steffen setzt sich seit längerem mit Grafik im Raum auseinander. Auch über diese Projekte werden sie berichten. Lasst euch von ihnen, ihrem Vortrag und ihrer Arbeit inspirieren. Etienne Roth ist Computerlinguist. Er hat die Duden-Korrekturlösungen bereits als Projektleiter und Produktmanager beim Dudenverlag mitentwickelt. Bei EPC betreut er das Lexikon und die Grammatik(fehler)analyse der Korrekturengine. Außerdem ist er Produktmanager für die Duden-Integration in Adobe InDesign. Bei EPC werden die professionellen Duden-Korrekturlösungen weiterentwickelt, vertrieben und gewartet. Dazu gehören Rechtschreib- und Grammatikkorrektur, Stilprüfung und Thesaurus sowie Werkzeuge zur Wörterbuchpflege, lokal und in Netzwerkumgebungen. Die Duden-Rechtschreibprüfung und Silbentrennung sind seit Version 13 (CC 2018) ein integraler Teil von Adobe InDesign. Viele Kunden vermissen aber die bewährte Grammatikprüfung. Der Duden Korrektor CC bringt die beste Grammatikprüfung für die deutsche Sprache zurück nach InDesign und InCopy. Er enthält außerdem die Stilprüfung und den Thesaurus von Duden. Verlosung: Wir verlosen wieder Software, Bücher und Fachzeitschriften im Wert von über 1000 Euro. Neben dem bekannten "CC-Abo für ein Jahr" nun auch ein "Foto-Abo für ein Jahr mit 1 TB Speicher" und brandneu "10 Bilder pro Monat von Adobe Stock für ein Jahr". Die Firma EPC verlost eine Lizenz "Duden Korrektor CC"! Mach Werbung und bring gerne Freunde und Kollegen mit! Wir freuen uns auf Dich. Katharina Frerichs und Christoph Steffens

Nein

Organisator: IDUG Stuttgart

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

idugs51.eventbrite.com

Veranstaltungen
29.11.2018

Impressed GmbH, Hamburg
Donnerstag, 29. Nov. 2018, 10.00 - 10.30 Uhr

Webinar

In diesem ca. halbstündigen Webinar stellen wir Ihnen die Neuerungen in der Version 2018 von Enfocus PitStop Pro vor.

Ja

Organisator: Impressed GmbH

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

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

Enfocus PitStop 2018