Hallo Willem,
bitte sehr. So kann Dein Wunsch umgesetzt werden: den Winkel verlangen, zur Bruchzahl konvertieren und 5 dazuzählen:
---
tell document 1 of application "QuarkXPress 4.11"
activate
tell current box
tell image 1
set angle to (angle as real) + 5
end tell
end tell
end tell
---
Das funktioniert. Solange bis mal die volle Umdrehung überschritten wird. Dann kommt eine Fehlermeldung, weil der Wert nicht grösser sein kann als 360°.
Die Lösung: Das Script muss den aktuellen Wert prüfen. Sobald dieser unzulässig sein würde, muss eine neuer Wert zugewiesen werden. Dieser wird so errechnet: die gewünschte Drehung minus (360 minus den aktuellen Wert).
Das folgende Script beginnt mit der Initialisierung der Variable 'modAngle'. Das erlaubt, den Rotations-Wert komfortabel zu ändern: nur an einem Ort (und nicht in den drei Befehlen).
---
set modAngle to 5
tell document 1 of application "QuarkXPress 4.11"
activate
tell current box
tell image 1
set curAngle to (angle as real)
if curAngle < (360 - modAngle) then
set angle to curAngle + modAngle
else
set angle to modAngle - (360 - curAngle)
end if
end tell
end tell
end tell
---
Eine kürzere Lösung, welche aber auf den ersten Blick weniger klar ist:
---
set modAngle to 5
tell document 1 of application "QuarkXPress 4.11"
activate
tell current box
tell image 1
set angle to ((angle as real) + modAngle) mod 360
end tell
end tell
end tell
---
Der Winkel wird abgefragt, zur Bruchzahl umgewandelt, der Drehwert wird dazugezählt und das Ganze durch 360 geteilt. Durch die Verwendung des Operatoren 'mod' ist das Resultat der Restwert. Einige Beispiele: 10 mod 2 = 0 | 10 mod 3 = 1 | 10 mod 4 = 2.
Mit anderen Worten: solange der Winkel unter 360 bleibt, ist der Restwert die Addition von aktuellem Winkel und Drehwert. Sobald der neue Winkel aber grösser wäre als 360, sorgt die Division mit 'mod' dafür, dass nur der Restwert als neuer Winkel gebraucht wird.
Noch ein Beispiel: aktueller Winkel 357° + Drehwert 5° = 362° dividiert mit 'mod' bleibt ein neuer Winkel von 2°. Alles klar?
Übrigens: der Drehwert, also die Variable 'modAngle', könnte auch per Dialog eingegeben werden. Im Dialog könnte der aktuelle Winkel und der momentan definierte Drehwert gezeigt werden. Der Anwender könnte diesen Wert bestätigen oder ändern. Wenn dies nützlich wäre und Du dabei Hilfe brauchst: Anfrage genügt. :-)
Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418425]