[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Abfrage isValid funktioniert nicht wunschgemäß

faxinger
Beiträge gesamt: 246

25. Okt 2018, 15:59
Bewertung:

gelesen: 3072

Beitrag als Lesezeichen
Hallo,

ich bin immer noch bei meinem Skript des Preisausrichtens und stehe nun vor folgendem Problem:

Ich habe 3 Objekte ausgewählt: preis, preiszusatz, und grundpreis_zusatz.

Wenn alle 3 ausgewählt sind funktioniert das ausrichten der einzelnen Elemente, wenn ich nur 2 ausgewählt habe funktioniert es nicht.

Ich habe versucht mit if Anweisungen und isValid das Problem in den Griff zu bekommen, aber leider hat das nicht funktioniert.

Müsste ich mit einer try catch Operation arbeiten?

Hier nochmal das Skript:
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 == "grundpreis_zusatz") grundpreis_zusatz = curSel;
};

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;
};

// preiszusatz A U S R I C H T E N A M P R E I S //
if (preiszusatz.isValid)
{

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]) ;
};

// grundpreis_zusatz 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 x_koord_preis_komma_stelle = preis.characters[kommaindex+1].endHorizontalOffset;
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];
grundpreis_zusatz.move([x_koord_preis_komma_stelle, preisgbY + preis_hoehe - grundpreis_zusatz_hoehe]) ;

};




Danke für eure Mithilfe.

(Dieser Beitrag wurde von faxinger am 25. Okt 2018, 16:06 geändert)
Änderungsverlauf:
Beitrag geändert von faxinger (User) am 25. Okt 2018, 16:06