3.線を描いてみる

今回はVBからイラストレータを操作してパスを描く方法を紹介します。イラストレータでは連続した線分のことををパス(Path)といいます。1本の直線でも、折れ線グラフのような線でもパスです。
また、パスのオブジェクトはパスアイテムパス(PathItem)と言います。
イラストレータで線分を描くには、書類にパスアイテムオブジェクトを追加し、そのオブジェクトに対してパラメータを設定していく、という手順になります。
サンプルプロジェクトをここからダウンロードしてください。

イラストレータの書類のカラーモードには2種類(CMYK/RGB)ありますが、フォームのボタン1ではCMYKで新規書類を作成し、ボタン2ではRGBで作成しています。まずは、ボタン1のソースを見てみましょう。

Private Sub Command1_Click()
    Dim appRef As New Illustrator.Application                           'Illustratorアプリケーション
    Dim aiDoc As Illustrator.Document                                   'Illustratorドキュメント
    Dim lnColor As New Illustrator.Color                                '色オブジェクト
    Dim lnCMYKColor As New Illustrator.CMYKColor                        'CMYKカラーオブジェクト
    Dim linePath As Illustrator.PathItem                                'パスオブジェクト

    Set aiDoc = appRef.Documents.Add(aiColorCMYK, 600, 800)             '新規ドキュメントを開く
    
    lnCMYKColor.Black = 0                                               'CMYK色成分の設定
    lnCMYKColor.Cyan = 100
    lnCMYKColor.Magenta = 0
    lnCMYKColor.Yellow = 0
    lnColor.CMYK = lnCMYKColor                                          'CMYK=>カラーObj

    Set linePath = aiDoc.PathItems.Add                                  'パスObjを追加
    linePath.SetEntirePath Array(Array(100, 100), Array(200, 200))      'パスの頂点座標を登録
    linePath.StrokeColor = lnColor                                      'カラーObj=>線の色へ
End Sub

前回の説明と違い、今回は色んな変数を宣言しています。それぞれの変数の意味はコメントを参照してください。
まず、
  Set aiDoc = appRef.Documents.Add(aiColorCMYK, 600, 800)

今回は新規文書に対してパスアイテムを追加していきますので、文書のオブジェクトを保存します。
また、.Add関数の1番目の引数のaiColorCMYKが書類のカラーモードの指定です。カラーモードは他に、aiColorRGBcolorがあります。
イラストレータでは、色を指定するのにColorオブジェクトを使用します。
  Dim lnColor As New Illustrator.Color

また、色を指定する際にはColorオブジェクトを直接操作するのではなく、CMYKColorまたはRGBColorオブジェクトの色成分値を操作して、Colorオブジェクトのプロパティにセットする、という方法をとります。CMYKの場合は、


    lnCMYKColor.Black = 0
    lnCMYKColor.Cyan = 100
    lnCMYKColor.Magenta = 0
    lnCMYKColor.Yellow = 0

で、CMYKオブジェクトに色成分を設定し、


    lnColor.CMYK = lnCMYKColor

で、Colorオブジェクトに適用します。

次に線の描画ですが、イラストレータではPathItemというオブジェクトを操作して線分を描くことになります。新しくパスを作には、現在の文書のPathItemsコレクションにPathItemを追加するという方法になります。
   Set linePath = aiDoc.PathItems.Add

パスの属性は、ここで受け取ったlinePathに設定します。
   linePath.SetEntirePath Array(Array(100, 100), Array(200, 200))
パスの頂点はSetEntirePathメソッドで行います。ここで注意してもらいたいのは頂点を表わすです。Illustrator Scripting Guide.pdfでPathItemのSetEntirePathメソッドを見てみると、
SetEntirePath(pathSpecification As Variant Array of Variant Array of 2 Singles)
となっています。引数の型は、Variant Array of Variant Array of 2 Singles つまり、2組のSingle型のバリアント型配列(の配列)ということになっていますが、私も最初はここが分かりにくかったので解説します。
まず「2組のSingle型」とは、1つの頂点のX座標、Y座標を表わします。X=100、Y=100なら、(100,100)です。これを束ねて「バリアント型配列」を作ります。
VBではバリアント型配列を返す関数としてArray関数があるので、Array(100, 100)が一つの頂点を表わします。
また、2組の頂点で1本の線を表わすことになります。Array関数はバリアント配列そのものも配列要素に取り入れることができるので、Array(Array(100, 100), Array(200, 200))と書けば2つの頂点の組み合わせ=1本の線 を表わします。
パスアイテムでは複数の線分を組み合せた図形(折れ線)を描画することもできます。その場合、連続した頂点の配列をArray関数で束ねてやればOKです。Array(Array(100, 100), Array(200, 200), Array(300,300), ... )
この例は次のボタン2で扱っています。
最後に、線の色を設定するには前に作ったColorオブジェクトをパスのプロパティにセットします。
   linePath.StrokeColor = lnColor
ここでは線の色はStrokeColorプロパティです。

次にボタン2のソースを見てみましょう。
Private Sub Command2_Click()
    Dim appRef As New Illustrator.Application
    Dim aiDoc As Illustrator.Document
    Dim lnColor As New Illustrator.Color
    Dim lnRGBColor As New Illustrator.RGBColor                         'RGBカラーオブジェクト
    Dim linePath As Illustrator.PathItem

    Set aiDoc = appRef.Documents.Add(aiColorRGBcolor, 600, 800)
    
    lnRGBColor.Blue = 0                                                'RGB色成分の設定
    lnRGBColor.Red = 255
    lnRGBColor.Green = 0
    lnColor.RGB = lnRGBColor                                           'RGB=>カラーObj

    Set linePath = aiDoc.PathItems.Add
    linePath.SetEntirePath Array(Array(100, 100), Array(200, 200))
    linePath.StrokeColor = lnColor


    Set linePath = appRef.ActiveDocument.PathItems.Add
    linePath.SetEntirePath Array(Array(100, 300), Array(200, 400), Array(300, 300))     '複合パス
    linePath.Filled = True                                                              '塗りつぶし
    linePath.FillColor = lnColor
End Sub
ボタン1と違う所だけ説明します。
   Dim lnRGBColor As New Illustrator.RGBColor
はRGBカラーオブジェクトです。このオブジェクトにはRGBの成分について設定できます。
   Set aiDoc = appRef.Documents.Add(aiColorRGBcolor, 600, 800)
書類のカラーモードをRGBにしています。
ここで勘違いしないように説明しておきますが、書類のカラーモードをRGBにしたからといってColorオブジェクトをRGBカラーを使用しなければならないということはない事です。つまり、書類がRGBモードであってもCMYKカラーオブジェクトで色指定することができるし、その逆も可能ということです。


    lnRGBColor.Blue = 0
    lnRGBColor.Red = 255
    lnRGBColor.Green = 0
    lnColor.RGB = lnRGBColor
ColorオブジェクトのRGBプロパティにセットします。
ボタン1では1本の線だけの描画でしたが、前に説明した通り連続した線を描画することもできます。

    linePath.SetEntirePath Array(Array(100, 300), Array(200, 400), Array(300, 300))
3つの頂点を指定しているので、2本の線から成るパスが作成されます。

    linePath.Filled = True
    linePath.FillColor = lnColor
FilledプロパティをTrueにすると、そのパスは塗りつぶされます。また、塗りつぶしの色はFillColorに設定します。

戻る