[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:
(2476 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: 4658

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

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

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

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
14.08.2020 - 18.09.2020

Digicomp Academy AG, Zürich oder virtuell
Freitag, 14. Aug. 2020, 13.00 Uhr - Freitag, 18. Sept. 2020, 15.00 Uhr

Lehrgang

Im berufsbegleitenden Web Publisher Lehrgang vertiefen Sie Ihr Wissen rund um das Thema Screendesign und die Umsetzung von Websites. Wir befähigen Sie dazu selbständig und professionell Ihren Webauftritt zu planen und in die Realität umzusetzen. Erlangen Sie das Digicomp-Zertifikat zum Web Publisher. Mit dem Zertifikat bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 3'250.-
Dauer: 8.5 Tage (ca. 56 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/zertifizierung/software-anwendungs-zertifikate/publishing-zertifizierung/lehrgang-web-publisher

Veranstaltungen
19.08.2020 - 20.08.2020

Digicomp Academy AG, Zürich oder virtuell
Mittwoch, 19. Aug. 2020, 08.30 Uhr - Donnerstag, 20. Aug. 2020, 17.00 Uhr

Kurs

Mit After Effects können Sie visuelle Effekte und Animationen für Video, Web, DVD und Blu-Ray erzeugen. In diesem Kurs lernen Sie die Grundlagen kennen und sehen inspirierende Anwendungsbeispiele, die Ihnen helfen, Ihre eigenen Ideen umzusetzen.

Preis: CHF 1'700.-
Dauer: 2 Tage

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/video-und-audio-publishing/adobe-after-effects-cc/kurs-adobe-after-effects-basic

Neuste Foreneinträge


(beschränkter) vertikaler Keil

Anker eines verankerten Objekts verschieben

Adobe Acrobat Pro 2017: ICC-Farbprofile einrichten / Konvertierungs-/Preflight-Profile

TextStyle2charStyle uppercase (WIN10, CC2020)

Dateien verpacken – Fonts sind versteckt

Horizontal zerschnittene Pfade

Coole Mukke

Legalen In-App Purchase manuell wiederherstellen, wenn Programm diese Funktion verwehrt?

Photo, Designer, Publisher

Index aus Worddatei Indesign CC 2019
medienjobs