Forenindex » Programmierung/Entwicklung » AppleScript » QXP 4.11: Aufgepasst bei Boxen auf der Montagefläche

QXP 4.11: Aufgepasst bei Boxen auf der Montagefläche

Hans Haesler
  
Beiträge gesamt: 5826

24. Apr 2004, 14:56
Bewertung:

gelesen: 444

Beitrag als Lesezeichen
Beim Testen eines Scripts, welches am linken Rand von Bildboxen senkrechte Linien zeichnet, bin ich auf folgendes Problem gestossen (dieser Bug ist ab QuarkXPress 5 eliminiert worden).

Ein Doppelseiten-XPress-Dokument, 2 Seiten auf der ersten Montagefläche. Ein Script geht die Seiten durch und adressiert beispielsweise die Bildboxen:
---
tell document 1 of application "QuarkXPress 4.11"
  repeat with i from 1 to 2
    tell page i
      repeat with j from 1 to count of picture boxes
        tell picture box j
          set {y1, x1, y2, x2} to bounds as list
          -- weitere Befehle
        end tell
      end repeat
    end tell
  end repeat
end tell
---
Das funktioniert gut, aber nur wenn keine Bildboxen auf der linken Montagefläche liegen. Obwohl das Script sich ausdrücklich an die Seite 2 wendet, werden Boxen, welche – wie beschrieben – ausserhalb der Seiten liegen, mitgezählt. Je nach den Befehlen, die noch eingefügt werden, ist das Resultat verfälscht.

Abhilfe? Man kann einen Test einfügen, welcher den Wert des linken Randes prüft:
---
        tell picture box j
          set {y1, x1, y2, x2} to bounds as list
          if i = 1 then
            -- weitere Befehle
          else if i = 2 then
            if (x1 as real) > 0 then
              -- weitere Befehle
            end if
          end if
        end tell
Code
Aber vorgängig muss der Seiten-Nullpunkt getestet und wenn notwendig auf {0, 0} gesetzt werden: 

tell document 1 of application "QuarkXPress 4.11"
  set {pROy, pROx} to page rule origin as list
  if (pROy as real) is not 0 or (pROx as real) is not 0 then set page rule origin to {0, 0}
---

Ach ja: Wer nicht weiss, wie man ein doppelseitiges Dokument mit einer Doppelseite beginnt, der erhebe die Hand. ;-)

Hans Haesler <hsa@ringier.ch>