hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.
Hans Haesler  M  p
Beiträge: 5431
3. Mai 2004, 12:25
Beitrag #1 von 7
Bewertung:
(1424 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

QXP 6.1: Rundungsfehler ab 272 mm


Wenn die Masseinheit "Millimeter" ist und die Positionswerte von Boxen per Script zugewiesen werden, funktioniert dies bestens. Solange kein Wert grösser als 272 ist.

Ein Beispiel. Manuell eine Box erzeugen und deren Oberkante auf 280 mm setzen.
Diese Box ausgewählt lassen und folgendes Script ausführen:
---
tell document 1 of application "QuarkXPress 6.1"
  set y1 to 275
  tell current box
    set top of bounds to y1
  end tell
end tell
---
Der Y-Wert in der Masspalette zeigt nicht "275 mm", sondern "274,999 mm".

Okay, diese Differenz von einem Tausendstel wird auf dem fertigen Druck-Erzeugnis nicht sichtbar sein. Dennoch: es ist ärgerlich, dass nach dem internen Umrechnen diese Ungenauigkeit auftritt.

Abhilfe: Ausrechnen, wieviel Mal der Grenzwert von 272 im zuzuweisenden Wert enthalten ist und entsprechend der Anzahl je einen halben Tausendstel zugeben.
---
tell document 1 of application "QuarkXPress 6.1"
  set y1 to 275
  set y1 to (((y1 / 272) div 1) * 5.0E-4) + y1
  tell current box
    set top of bounds to y1
  end tell
end tell
---
Im Detail: '((y1 / 272) div 1)' bedeutet: 275 geteilt durch 272 ergibt 1.011029411765. Mit 'div 1' wird auf ganze Zahlen abgerundet, also '1'. Dieser Wert wird mit dem Korrekturfaktor '0.0005' multipliziert. Dieser halbe Tausendstel wird beim Prüfen der Syntax automatisch in die weniger lesbare exponentielle Notation konvertiert: Das 'E-4' bedeutet, dass sich der Dezimalseparator in Wahrheit um vier Stellen nach links befindet. Am Schluss wird noch der ursprüngliche Wert dazugezählt. Resultat: '275.0005'.

Dieser Wert wird vorbeugend eingegeben, um den Umrechnungsfehler aufzuheben.

Hans Haesler <hsa@ringier.ch> Top
 
X
Anonym
Beiträge: 22827
3. Mai 2004, 19:36
Beitrag #2 von 7
Beitrag ID: #418757
Bewertung:
(1423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

QXP 6.1: Rundungsfehler ab 272 mm


Hallo Hans,

oder prinzipiell:
(SollWert + 5.0E-5)

Hier klappt das zumindest - X, wie Y ;-)

Karsten
als Antwort auf: [#418756] Top
 
Hans Haesler  M  p
Beiträge: 5431
3. Mai 2004, 20:38
Beitrag #3 von 7
Beitrag ID: #418758
Bewertung:
(1423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

QXP 6.1: Rundungsfehler ab 272 mm


Hallo Karsten,

dann versuch's bitte mal mit einer Box deren 'top of bounds' bei 570 mm liegt. Dieser Wert soll auf 560 reduziert werden. Laut Deiner Vereinfachung würde das Script ungefähr so aussehen:
---
tell document 1 of application "QuarkXPress 6.1"
  set SollWert to 560
  tell current box
    set top of bounds to (SollWert + 5.0E-5)
  end tell
end tell
---
Was bei 275 mm noch aufgeht, resultiert mit einem doppelt so hohen Wert wieder in einem Rundungsfehler. Es hilft auch nichts, wenn ich die '5.0E-5' (= 0.00005) verzehnfache und "meine" '5.0E-4' (= 0.0005) einsetze.

Nochmals: Um ein korrektes Resultat zu erhalten, muss man feststellen, wieviel Mal der SollWert den SchwellWert von 272 enthält und dann das Resultat mit '5.0E-4' multiplizieren.

Einverstanden? ;-)

Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418756] Top
 
Anonym
Beiträge: 22827
3. Mai 2004, 21:56
Beitrag #4 von 7
Beitrag ID: #418759
Bewertung:
(1423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

QXP 6.1: Rundungsfehler ab 272 mm


Hallo Hans,
genau darauf wollte ich hinaus (299 hätte wohl auch gereicht) &#133; ;-)

ABER:
Gremlins mit Workarounds zu umgehen, die in absehbarer Zeit(?) wieder zu Gremlins werden (können)?

ANYWAY:
Nach dem Ermitteln der gewünschten Einheiten (hier "mm") sollte der "Klassiker":
---
set SollWert to 1218 --mm
set SollWert to SollWert * 72 / 25.4
---
doch problemlos funktionieren.

Und die Modifikation des Objekts erfolgt dann mit:
Code
set top of bounds to (SollWert as point units)

Karsten
als Antwort auf: [#418756] Top
 
Hans Haesler  M  p
Beiträge: 5431
4. Mai 2004, 07:57
Beitrag #5 von 7
Beitrag ID: #418760
Bewertung:
(1423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

QXP 6.1: Rundungsfehler ab 272 mm


Hallo Karsten,
Zitat Gremlins mit Workarounds zu umgehen, die in absehbarer Zeit(?) wieder zu Gremlins werden (können)?

Bis solch ein Bug gefixt ist, muss man einen Workaround einsetzen. Und wenn die neue Version da ist, das Script an das Update anpassen.

Ja, der Klassiker funktioniert problemlos. Aber ich bleibe trotzdem bei meiner Methode. Die 'top of bounds' habe ich nur als einfache Illustration des Problems gebraucht. In den "richtigen" Scripts werden alle vier Werte der Boxenränder bestimmt und zwar in einem Handler, welcher die Werte als Liste zurückgibt: return {y1, x1, y2, x2}. Abgesehen davon, gibt der Anwender seine Werte ein, und dabei muss die gewählte Masseinheit berücksichtigt werden.

Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418756] Top
 
Hans Haesler  M  p
Beiträge: 5431
9. Mai 2004, 20:59
Beitrag #6 von 7
Beitrag ID: #418761
Bewertung:
(1423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

QXP 6.1: Rundungsfehler ab 272 mm


Hello Karsten,

okay &#150; you have won! :-( (;-).

Beim Testen einer Reihe von Scripts (Näheres demnächst hier &#133;), klappte mein Workaround nicht. Zwar nur mit einem einzigen Projekt. Dennoch habe ich beschlossen, überall meine geheimnisvoll-wissenschaftliche Formulierung durch die einfachere In-Punkte-Umrechnung zu ersetzen.

Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418756] Top
 
Anonym
Beiträge: 22827
10. Mai 2004, 21:28
Beitrag #7 von 7
Beitrag ID: #418762
Bewertung:
(1423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

QXP 6.1: Rundungsfehler ab 272 mm


Hallo Hans,

na, siehst du - geht doch ;-)

Im Ernst: Tut mir leid, dass dir da Produktionsgeschichten "um die Ohren fliegen", aber genau aus diesem Grunde gehe ich - im Falle des ERSTEN Fehlverhaltens - halt den "Weg des geringsten Widerstands" ... (wenn es ihn denn gibt) ;-)

Karsten

PS: Wie die Firma "Quark" Fehler behebt kann man ja am jüngsten Spross der Produktfamilie erkennen ...
http://www.quark.com/service/desktop/downloads/details.jsp?idx=545
als Antwort auf: [#418756] Top
 
X