2016-06-24 2 views
0

Wir haben ein Automatisierungstool für Photoshop, mit einer Steuer-App, die Applescripts aufrufen, die Photoshop steuern.Applescript: Photoshop: So finden Sie heraus, ob das Bild wirklich geöffnet ist

Eine Situation ist, dass wir ein RAW-Bild im CameraRAW-Plug-in öffnen und dann in Photoshop öffnen müssen. Dieser Teil wird über ein Applet mit Systemereignissen bearbeitet. Wenn dieses Applet beendet wird, führen wir das Verarbeitungsskript für Photoshop aus.

Da einige Bilder relativ lange geöffnet werden müssen, müssen wir sicherstellen, dass das Bild wirklich geöffnet ist, bevor das Skript ausgeführt werden kann. ... und da stecke ich fest.

Im Moment verwende ich den folgenden Code, der warten soll, bis das Bild geöffnet ist (das Kriterium für "Öffnen" ist korrekt (und manuell getestet), so dass das hier nicht das Problem ist).

tell application "Adobe Photoshop CC 2015" 
     activate 

     tell application "System Events" 
      tell application process "Photoshop CC" 

       -- 
       display alert "Waiting for Window" 
       -- 

       repeat 
        try 
         set wn to name of window 1 as text 
         try 
          if (wn contains "(RGB/16") then 
           set wn to "image is open: " & wn 
          end if 
         end try 
         if (wn contains "(RGB/16") then 
          display alert "We are there, quitting now… " & wn 
          exit repeat 
         end if 
        end try 
        delay 1 
       end repeat 


      end tell 
     end tell 

     -- 
     display alert "Ready for process" 
     -- 
-- and here comes the processing code 

end tell 

Ich habe auch versucht, eine Variable zu setzen, die als Argument für die Wiederholung getestet wird, und verändern, wenn die Austrittsbedingung erfüllt ist.

Der Versuch, selbst Warnungen innerhalb der Wiederholungsschleife zu erstellen, führt zu keinem Effekt; Das Skript endet in einer Endlosschleife.

Es ist gut möglich, dass ich das Offensichtliche vermisse ... Also, ich bin dankbar für jeden hilfreichen Hinweis.

Vielen Dank im Voraus.

Antwort

1

Ich denke, Sie haben ein paar kleine Probleme mit Ihrem Skript, die Ihr Problem verursachen.

  1. Sie verwenden name of window 1, wenn ich Sie name of document 1 müssen glauben. Mit Ihrem ersten try Block strukturiert, wie es war, Sie wussten nicht, dass es tatsächlich einen Fehler auf name of window 1
  2. gab Der Name, der zurückgegeben wird, enthält nicht den Farbraum und Bitzahl, also habe ich den Ergebnistest geändert eine leere Zeichenfolge
  3. Beachten sie die Änderungen an der try Block um den Dokumentnamen immer
  4. ich glaube nicht, es ist notwendig, oder einen Grund sehen sie unter „Systemereignisse“ in diesem Fall zu benutzen, also habe ich die Version unten geändert ohne es.

Beispiel Script

 tell application "Adobe Photoshop CC 2015" 
     display alert "Waiting for Window" 
     repeat 
      try 
       set wn to name of document 1 as text 
      on error 
       set wn to "" 
      end try 

      try 
       if wn is not equal to "" then 
        set wn to "image is open: " & wn 
       end if 
      end try 
      if wn is not equal to "" then 
       display alert "We are there, quitting now… " & wn 
       exit repeat 
      end if 
      delay 1 
     end repeat 

     display alert "Ready for process" 

    end tell 
+0

Vielen Dank für diese Hilfe; Ein Noob (wenn es um AppleScript geht) hat etwas gelernt. Dieser Code-Block löste das Problem, und der Prozess scheint (nach nicht so vielen Tests) ordnungsgemäß zu funktionieren. Obwohl wir das Dokument nach der Verarbeitung schließen, muss ich möglicherweise Schutz gegen bereits geöffnete Dokumente hinzufügen. –

Verwandte Themen