VBScript for Illustrator - 1
まずは定番のHello Worldからです。
ここではIllustrator上のドキュメントにHello Worldという文字を記載してみたいと思います。
以下のコードを作成して拡張子を .vbs として保存してください。
なを、2行目の Illustrator.Application.3 ですが、末尾の 3 は CS2 であることを表しています。 もし、使用のバージョンが CS1 であれば 2を指定してください。 Illustrator 10 であれば 1 になります。 これはScript機能 が Illustrator ver10 から導入された事に起因しています。なので ver10 が .1 となっています
次に 追加したドキュメント(現ドキュメント)に文字を追加します。 文字列は document.textframes として textframeオブジェクトを配列的に保管します。 新規に追加する場合は textframs.add() によって textframes オブジェクト に textframe を追加してやる必要があります。 追加した textframe オブジェクトの contents プロパティに表示される文字列が格納されるので、 textfram.contents = "Hello World!" とすれば文字が格納されるというわけです。 また、明示的に位置を決めたいので 位置を指定するプロパティである position に (x,y) 形式での配列を設定しています。 positionプロパティは配列を指定しますので array(x,y) で渡す必要があります。
ここで1つ、リファレンスでは positionの値を先に渡してあげていますが、これは後からの方が良いかと思います。 先に位置を決めてから文字を流し込むと、文字の位置が若干ずれます。 position指定とcontents指定を逆にしてみればそれが分かるかと思います。 実際に逆の場合、最後に msgbox(sText.position(0)) として位置を取得してみればずれているのがわかるかと思います。
なを、2行目の Illustrator.Application.3 ですが、末尾の 3 は CS2 であることを表しています。 もし、使用のバージョンが CS1 であれば 2を指定してください。 Illustrator 10 であれば 1 になります。 これはScript機能 が Illustrator ver10 から導入された事に起因しています。なので ver10 が .1 となっています
Dim app,cDoc,sText
Set app = CreateObject("Illustrator.Application.3")
Set cDoc = app.documents.add()
Set sText = cDoc.textframes.add()
sText.contents = "Hello World!"
sText.position = Array(0 , 500)
app.redraw()
作成したファイルをダブルクリックするとIllustratorが起動してドキュメント上に Hello World!の文字が表示されたかと思います。
2行目でIllustrator アプリケーションのオブジェクトを作成しています。
以後、操作はこのオブジェクトを対象に行う事になります。
次に documents.add() にて新規のファイルを作成しています。
もし既に開いている(アクティブ状態)ドキュメントを指定したい場合は app.activeDocument でドキュメントのオブジェクトを取得できます。
Illustrator では複数のドキュメントを一度に開けるので、その開いたドキュメントが documents にオブジェクトを配列式に格納しています。
ですからドキュメントを1枚も開いていない場合は documents には何も格納されていないことになります。もちろん activeDocument も使用できません。次に 追加したドキュメント(現ドキュメント)に文字を追加します。 文字列は document.textframes として textframeオブジェクトを配列的に保管します。 新規に追加する場合は textframs.add() によって textframes オブジェクト に textframe を追加してやる必要があります。 追加した textframe オブジェクトの contents プロパティに表示される文字列が格納されるので、 textfram.contents = "Hello World!" とすれば文字が格納されるというわけです。 また、明示的に位置を決めたいので 位置を指定するプロパティである position に (x,y) 形式での配列を設定しています。 positionプロパティは配列を指定しますので array(x,y) で渡す必要があります。
ここで1つ、リファレンスでは positionの値を先に渡してあげていますが、これは後からの方が良いかと思います。 先に位置を決めてから文字を流し込むと、文字の位置が若干ずれます。 position指定とcontents指定を逆にしてみればそれが分かるかと思います。 実際に逆の場合、最後に msgbox(sText.position(0)) として位置を取得してみればずれているのがわかるかと思います。
2008年 10月 8日ドキュメント作成
2008年 10月 8日ドキュメント更新