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

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

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

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

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

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

Aktuell

Diverses
Dateipfaden_FileMaker_300

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 hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
09.12.2019

pre2media, Dammstrasse 8, 8610 Uster
Montag, 09. Dez. 2019, 18.13 - 18.14 Uhr

Referat

Alle reden davon – wir zeigen ihnen kompakt was in den einzelnen Programmen wirklich steckt. Sind die Programme von Affinity – bereits heute – eine Alternative zu den Adobe-Programmen? Was versteht Affinity unter StudioLink und der vollständigen Integration der Affinity-Apps.

10.00 bis 12.00 Affinity Photo Bildbearbeitung CHF 90.00 13.00 bis 15.00 Affinity Designer Grafikdesign CHF 90.00 15.00 bis 17.00 Affinity Publisher Layoutprogramm CHF 90.00 Alle drei Affinity Programme zusammen (6 Lektionen) CHF 220.00

Ja

Organisator: pre2media gmbh, Dammstrasse 8, 8610 Uster, info@pre2media.ch, www.pre2media.ch

Kontaktinformation: Roger Thurnherr, E-Mailinfo AT pre2media DOT ch

https://www.pre2media.ch/-1/de/kurse/affinity--referate-und-kurse/mo-9-dezember-2019--affinity-referate/252/

Affinity-Referat bei pre2media
Veranstaltungen
12.12.2019

Ortsunabhängig
Donnerstag, 12. Dez. 2019, 10.00 - 10.30 Uhr

Webinar

In diesem ca. halbstündigen kostenlosen Webinar stellen wir Ihnen die Neuerungen in der Version 2019 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 2019
Hier Klicken