プロフィール

Author:はるかわ しおん
なにか、新しいものを。
そして、楽しいものを。

FC2カウンター


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Illustrator のスクリプトからアクションを実行

Illustrator は、JavaScript からアクションを実行することができないようです。
仕方がないので VBScript からチャレンジ。っていうか私は VBScript の方が得意なので、前エントリのレイヤー合成も VBScript で書けば良かったか。

で、とりあえず『Illustrator CS3 Scripting Guide.pdf』を確認してサンプルのスクリプトを動かしてみようと思ったんですが・・・


Your first Illustrator script
The traditional first project in any programming language is to display the message "Hello World!"
1. Start any text editor (Notepad, for example).
2. Type the following code.
Rem Hello World
Set appRef = CreateObject("Illustrator.Application")
Rem Create a new document and assign it to a variable
Set documentRef = appRef.Documents.Add
Rem Create a new text frame item and assign it to a variable
Set sampleText = documentRef.TextFrames.Add
Rem Set the contents and position of the TextFrame
sampleText.Position = Array(200, 200)
sampleText.Contents = "Hello World!"

3. Save the file as text only in a folder of your choice. Give the file the file extension .vbs.
4. To test the script, do either of the following:
● Double-click the file.
● Start Illustrator and choose File > Scripts > Other Scripts, and then navigate to and run your script
file.


・・・すると、"Internal script execution error" というエラーダイアログ!?
まったくもって意味が分かりません。言われる通りにやったよママン。

上記で示されたサンプルは
C:\Program Files\Adobe\Adobe Illustrator CS3\プリセット\スクリプト\hoge.vbs
として保存して実行したのですが、なんだか嫌な予感がしたので C:\hoge.vbs にして実行。
・・・やっぱり同じでした。

おかしいなと思い、4. の「Start Illustrator and choose File > Scripts > Other Scripts, and then navigate to and run your script」ではなく、Illustrator をいったん落として「Double-click the file.」したところ、正しく動きました。
え、でも、Illustrator が起動している状態で使いたいんですけどっ!


他から持ってきたスクリプトを試したところ、どう見たって構文も合ってるし改行コードも問題なさそうなスクリプトなのに「ステートメントの末尾が不正です」エラーも出たし、さんざん悩まされました。
結論としては、『Visual Basic でエラーメッセージ「DLL 読み込み時のエラーです」が表示される(Illustrator CS3)』のせいでした。
これの対応をしたところ、.vbs がちゃんと動くようになりました。


と、本題の前に二時間ほど時間を消費してしまったが、いざアクションを呼ぶスクリプトの作成だ!
・・・あれ?

『Illustrator CS3 VBScript Reference.pdf』 の DoScript より。

Plays an action from the Actions
palette.
Note: Use DoScript only if you
intend to run your script
from an application
external to Illustrator,
such as the Windows
Script Host. Calling
DoScript when running
a script from Illustrator’s
File > Scripts menu may
yield unexpected results.


なんとまぁ、Illustrator 起動中に DoScript を使ってはいけないそうです。
ところで

DoScript
(Action as String,
From as String
[, dialogs as Boolean])

の From って何!?
説明が「Plays an action from the Actions palette.」だけじゃ何も分からん。

"Action" で文書を検索してゆくと、

Set appRef = CreateObject("Illustrator.Application")
appRef.DoScript "Opacity 60 (selection)", "Default Actions"
WHILE(appRef.ActionIsRunning)
WScript.sleep 1000
WEND
msgbox "Done"

というサンプルが。ああ、そういうことね。。。


というわけで、文書の記述を元にちょっと直したスクリプトがこちら。
直接 .vbs を実行すると、Hello World という JPG 画像を自動保存します。
下記を hello.vbs など、適当な名前で保存してください。

Rem Hello World
Set appRef = CreateObject("Illustrator.Application")
Rem Create a new document and assign it to a variable
Set documentRef = appRef.Documents.Add
Rem Create a new text frame item and assign it to a variable
Set sampleText = documentRef.TextFrames.Add
Rem Set the contents and position of the TextFrame
sampleText.Position = Array(200, 200)
sampleText.Contents = "Hello World!"

appRef.DoScript "Web用に保存(JPG 標準)", "初期設定アクション"
WHILE(appRef.ActionIsRunning)
WScript.sleep 1000
WEND
msgbox "Done"


たったこれだけのことをするために、なんでこんなに苦労しなきゃならんのですかね。ふう。



コメント

コメントの投稿

   管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。