[GastForen Programmierung/Entwicklung AppleScript InDesign: Per AppleScript Bildrahmen-Inhalt verschieben

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

InDesign: Per AppleScript Bildrahmen-Inhalt verschieben

Hans Haesler
  
Beiträge gesamt: 5826

7. Jun 2006, 21:48
Beitrag # 1 von 5
Bewertung:
(1817 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thorsten,

[ dies ist die Fortsetzung des Themas "Per Applescript Bildrahmen-Inhalt verschieben"
http://www.page-online.de/page/forum/viewthread/2992/ ]

Wenn benannte Rahmen angesprochen werden sollen, dann muss man das Script entsprechend anpassen.
Der Vorgabe-Rahmen-Name "Rueckenbild" kann im Dialog geändert werden. Die eingegebene Textkette
wird - mittles 'property' - für die nächste Ausführung gespeichert.

[ Wegen der Page-Forum-Beschränkung auf 6000 Zeichen muss der Code so dargestellt werden ]:

Code
-- den Namen der Ziel-Bildrahmen festlegen 
property frameLabel : "Rueckenbild"

-- den Vorgabe-Verschiebe-Wert bestimmen
property aVal : "-2"

-- feststellen, welches Zeichen als Dezimal-Separator definiert ist
set decSep to ""
try
  "1.5" as real
  set decSep to "."
on error
  set decSep to ","
end try

tell document 1 of application "Adobe InDesign CS2"
  activate
  -- den Anwender bitten, den Rahmen-Namen einzugeben
  set frameLabel to text returned of (display dialog "Den Rahmen-Namen eingeben:" default answer frameLabel)
 
  -- die Liste der Rahmen zusammenstellen, deren Namen dem eingegebenen entspricht
  set frameRefs to every page item whose label is frameLabel
  -- wenn die Liste leer ist, den Anwender informieren
  if frameRefs is {} then
    display dialog "Das aktive Dokument enthält keine Rahmen, welche \"" & frameLabel & "\" heissen." buttons
      "OK" default button 1 with icon 0
    -- der folgende Befehl bricht die Ausführung ab
    error number -128
  end if
 
  -- den Anwender bitten, den Versatz-Wert einzugeben
  set aVal to text returned of (display dialog "Die Bilder verschieben um:" default answer aVal)
  -- die Variable 'dVal' initialisieren
  set dVal to ""
  -- eine Schleife, um die Eingabe zu prüfen
  repeat with i from 1 to count of aVal
    -- der Variablen 'curChar' das aktuelle Zeichen der Eingabe zuweisen 
    set curChar to character i of aVal
    -- wenn dieses Zeichen einem der möglichen entspricht, wird es an 'dVal' angehängt
    if curChar is in "-0123456789" then
      set dVal to dVal & curChar
    else if curChar is in ".," then
      set dVal to dVal & decSep
    else
      display dialog "Die Eingabe enthält ein ungültiges Zeichen:
" & curChar buttons "OK" default button 1 with icon 0
      error number -128
    end if
  end repeat
  -- die Textkette 'dVal' in eine Zahl verwandeln
  set dVal to dVal as real
 
  -- eine Schleife durch die Rahmen, um den Versatz zuzuweisen
  repeat with curFrame in frameRefs
    tell curFrame
      try
        set {y1, x1, y2, x2} to geometric bounds of graphic 1
        set properties of graphic 1 to {geometric bounds:{y1 + dVal, x1 + dVal, y2 + dVal, x2 + dVal}}
      end try
    end tell
  end repeat
 
  display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell


Gruss, Hans
X

InDesign: Per AppleScript Bildrahmen-Inhalt verschieben

Anonym
Beiträge gesamt: 22827

8. Jun 2006, 08:45
Beitrag # 2 von 5
Beitrag ID: #421018
Bewertung:
(1816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
vielen Dank. Habe ne Menge gelernt und werde das Script als Nachschlagewerk für zukünftige nutzen.

Gruß, Thorsten


als Antwort auf: [#421017]

InDesign: Per AppleScript Bildrahmen-Inhalt verschieben

Hans Haesler
  
Beiträge gesamt: 5826

8. Jun 2006, 09:21
Beitrag # 3 von 5
Beitrag ID: #421019
Bewertung:
(1816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thorsten,

bitteschön. Ich musste das Script recht allgemein halten, da ich nicht genau
weiss, welche Aufgabe Du ausführen möchtest.

Und wie immer gilt: Es sollten noch der eine oder der andere Test eingebaut
werden, damit bei Problemen die Fehler abgefangen und verständlichere
Meldungen gezeigt werden können.

Gruss, Hans


als Antwort auf: [#421017]

InDesign: Per AppleScript Bildrahmen-Inhalt verschieben

Anonym
Beiträge gesamt: 22827

8. Jun 2006, 19:57
Beitrag # 4 von 5
Beitrag ID: #421020
Bewertung:
(1816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
das Script hilft bei der Anlage eines Schriftzuges auf einem Buchrücken bzw. auf den Seitenkanten. Auf jedem der -  in diesem Fall 480 -  Blätter wird das Bild positioniert und um die Seitenstärke verschoben. Da das Buch in mehrere Dokumente unterteilt ist, besteht die Möglichkeit, einen Anfangswert für den Versatz einzugeben.

--Wähle das Rückenbild per dialog oder fix (!"alias")
--set myNameFile to "74GB:20050904_19.jpg"
set myNameFile to choose file with prompt "Klick das Rueckenbild!"

tell document 1 of application "Adobe InDesign CS2"
--lege das rückenbild auf einen auf jeder seite bzw. montagefläche zu erzeugenden benannten Rahmen
--repeat with i from 1 to count of spreads
tell every spread
set myRueckenRectangle to make rectangle with properties {geometric bounds:{20, 292, 190, 299}, label:"Rueckenbild"}
try
--place alias (myNameFile) on myRueckenRectangle
place (myNameFile) on myRueckenRectangle
end try
end tell
--end repeat

-- Zweiter Teil: Verschiebe den Bildinhalt
set frameLabel to "Rueckenbild"
-- die Liste der Rahmen zusammenstellen, deren Namen dem eingegebenen entspricht
---- Den Anwender bitten, den Anfangs-Wert einzugeben
set anfangswert to text returned of (display dialog "Das Bild im ersten Rückenbildrahmen versetzen um:
Bitte positiven Wert mit Punkt statt Komma." default answer "0.0") as real
-- set anfangswert to 0
set seitenstaerke to anfangswert
repeat with i from 1 to count of spreads
set frameRefs to (every page item of spread i whose label is frameLabel)
-- eine Schleife durch die Rahmen, um den Versatz zuzuweisen
repeat with curFrame in frameRefs
tell curFrame
try
set {y1, x1, y2, x2} to geometric bounds of graphic 1
set properties of graphic 1 to {geometric bounds:{y1, x1 - seitenstaerke, y2, x2 - seitenstaerke}}
end try
end tell
end repeat
set seitenstaerke to (seitenstaerke + 0.12)
end repeat
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1

end tell


Grüße

Thorsten


als Antwort auf: [#421017]

InDesign: Per AppleScript Bildrahmen-Inhalt verschieben

Hans Haesler
  
Beiträge gesamt: 5826

8. Jun 2006, 20:56
Beitrag # 5 von 5
Beitrag ID: #421021
Bewertung:
(1816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thorsten,

ja, mit einem konkreten Beispiel ist die Sache viel klarer!

Kleiner Hinweis: Die Zeile, in welcher der Anwender höflich gebeten wird, doch ja den Punkt
zu verwenden, kann weggelassen werden. Aber um eine eventuelle Fehlermeldung zu vermeiden,
muss -  wie oben gezeigt -  der 'text returned' Zeichen um Zeichen geprüft werden.

Kommt ein Punkt oder ein Komma vor, dann setzt das Script an dessen Stelle jenes Zeichen in
die neue Textkette, welches am Anfang als Dezimalseparator festgestellt worden ist.

Somit gelingt das Umwandeln 'as real'. Im Ergebnis wird in beiden Fällen ein Punkt stehen.

Gruss, Hans


als Antwort auf: [#421017]
X