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.
Anonym
Beiträge: 22827
18. Sep 2003, 22:56
Beitrag #1 von 4
Bewertung:
(834 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Quark und Coerce - keine % Angaben


Hi Scripter,

ich scripte unter OS X und die Angaben von Quark kommen unter OS X leider nicht richtig. Ich muß die Angaben umrechnen und möchte nun die Properties Angaben in die realen Zahlen umrechnen. Das funktioniert bei den "bounds" ohne Probleme, aber bei "angle" und "scale" nicht. Wer weiß Rat?

tell application "QuarkXPress Passport™ 4.11"
   tell page 1 of spread 1 of document 1
      set xPref to (get properties of picture box 1)
      set xPrefPict to (get properties of image 1 of picture box 1)
      set xAngle to (angle of image 1 of picture box 1)
      set xAngle to coerce xAngle to real
      log xAngle
      set xRotation to (scale of image 1 of picture box 1)
      set xRotation to coerce xRotation to real
      log xRotation
      set xScale to (scale of image 1 of picture box 1)
      set xScale to coerce xScale
      log xScale
      set xBound to (bounds of picture box x as list)
   end tell
end tell


Vielen Dank für jeden Tipp

happy filemaking

Armin Top
 
X
Hans Haesler  M  p
Beiträge: 5414
23. Sep 2003, 21:25
Beitrag #2 von 4
Beitrag ID: #418300
Bewertung:
(833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Quark und Coerce - keine % Angaben


Hallo Armin,

in Deinem Script-Beispiel sind die Begriffe 'rotation' und 'scale' in der gleichen Zeile eingesetzt. Ich nehme an, dies ist ein Resultat Deiner verzweifelten Versuche, eine Lösung zu bekommen. Zudem verlangst Du nach Properties, ohne sie aber auszunutzen.

Der Reihe nach: versuche, mit gezielten 'tell'-Instruktionen die Objekte so zu adressieren, dass Wiederholungen (wie 'of image 1 of picture box 1') vermieden werden (siehe Muster unten).

Interessant: Man erzielt einen erheblichen Geschwindigkeitsgewinn, wenn die Properties in eine Variable gelesen werden und dann für die einzelnen Werte diese Variable adressiert wird - und nicht wieder 'image 1 of picture box 1'.

In Deinem Script funktioniert das Umrechnen von 'angle' (die Rotation des Bildes innerhalb der Box). Es kann aber direkter geschehen. Das heisst die Anzahl Befehle bleibt gleich, aber man kann sie in eine Zeile packen.
---
tell document 1 of application "QuarkXPress Passport™ 4.11"
  tell page 1
    tell picture box 1
      tell image 1
        set xPrefPict to properties
        set xAngle to coerce (angle of xPrefPict) to real
        set pScale to coerce (scale of xPrefPict) to list
        set yScale to coerce (item 1 of pScale) to real
        set xScale to coerce (item 2 of pScale) to real
      end tell
    end tell
  end tell
end tell
{xAngle, yScale, xScale}
---
Bei der Rotation (= angle) genügt eine Befehlszeile. Für die beiden Bildprozentwerte benötigt man deren drei. Zuerst muss man den 'percent point' in eine Liste wandeln. Dann müssen die beiden Werte der Liste einzeln in eine Bruchzahl umgewandelt werden.

Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418299] Top
 
Anonym
Beiträge: 22827
23. Sep 2003, 22:09
Beitrag #3 von 4
Beitrag ID: #418301
Bewertung:
(833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Quark und Coerce - keine % Angaben


Hallo Hans,

Zitat von Hans Haesler in Deinem Script-Beispiel sind die Begriffe 'rotation' und 'scale' in der gleichen Zeile eingesetzt. Ich nehme an, dies ist ein Resultat Deiner verzweifelten Versuche, eine Lösung zu bekommen. Zudem verlangst Du nach Properties, ohne sie aber auszunutzen.

Das mit rotation und scale war ein Fehler - hab ich leider erst später entdeckt. Properties - war nur zur Info, was alles in den box properties drin ist - als Gedächtnisstütze.

Zitat von Hans Haesler Der Reihe nach: versuche, mit gezielten 'tell'-Instruktionen die Objekte so zu adressieren, dass Wiederholungen (wie 'of image 1 of picture box 1') vermieden werden (siehe Muster unten). Interessant: Man erzielt einen erheblichen Geschwindigkeitsgewinn, wenn die Properties in eine Variable gelesen werden und dann für die einzelnen Werte diese Variable adressiert wird - und nicht wieder 'image 1 of picture box 1'.

Super Tipp - ist echt schneller. Ich kenne das aus FileMaker und mach das bereits so - dumm nur, das ich nicht daran gedacht habe und das noch nicht bei Quark probiert habe. Was solls, jetzt weiß ich's auch.

Zitat von Hans Haesler In Deinem Script funktioniert das Umrechnen von 'angle' (die Rotation des Bildes innerhalb der Box). Es kann aber direkter geschehen. Das heisst die Anzahl Befehle bleibt gleich, aber man kann sie in eine Zeile packen.

Das Tuning werd ich mit übernehmen - wichtig war erst einmal, das es funktioniert.

Mein Hauptproblem war, das ich die Liste immer in real umwandeln wollte. coerce to list - ist richtig. Ich hab aus den "nicht gewandelten" Werten nicht erkannt, das es eine Liste ist - ist zwar logisch, aber vor lauter Bäumen den Wald nicht gesehen. Das Scripten unter OS X ist mit Quark echt nicht so lustig - es müssen unnötige Umwandlungen vorgenommen werden, die auch Zeit kosten.

Vielen Dank für deine Bemühungen

Armin
als Antwort auf: [#418299] Top
 
Hans Haesler  M  p
Beiträge: 5414
24. Sep 2003, 17:06
Beitrag #4 von 4
Beitrag ID: #418302
Bewertung:
(833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Quark und Coerce - keine % Angaben


Hallo Armin,

einverstanden, das Resultat von 'get scale' sieht nicht nach Liste aus:
---
set yx to (scale of xPrefPict)
--> &laquo;data FP% 0001000000010000&raquo;

Aber die Erfahrung mit "normalem" Scripten unter Mac OS 9.x und auch die 'class' sagt uns, dass darin zwei Werte stecken müssen:
---
class of yx
--> percent point

Die obige 16stellige Zahl erhält man, wenn die Bildgrössen je 100% aufweisen. Also: die Stellen halbieren (= "00010000"), die drei führenden Nullen wegmachen (= "10000") und den Dezimalseparator vor den zwei letzten Stellen einfügen (= "100.00").

Doch halt: so einfach ist es nicht, weil die Werte im Hexadezimal-Format sind:
Code
10 = 16; 100 = 256; 1000 = 4096; 10000 = 65536

Man muss also die Zahl vom Hexadezimal-Format (= 00010000) in einen Integer-Wert (= 65536) umrechnen und dann in Prozente verwandeln (= (65536 / 655.35) div 0.01 / 100). Das Resultat = 100.0

Weil dies alles von XPress dank dem 'coerce'-Befehl souverän erledigt wird, erkläre ich den Hexadezimal-Konverter nicht hier, sondern in einem neuen Thema.

Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418299] Top
 
X