TOP > blog > インデザイン VBスクリプト 図形を描く編(1)
インデザイン
2018/06/08

インデザイン VBスクリプト 図形を描く編(1)

管理者用
blog

インデザイン VBスクリプトについては、この三栄NAVIの中で多く紹介してきました。
スクリプトは、無料で使えると言う事が魅力で、私共のような小さな会社では、有効なツールとなっています。
スクリプトは、何かをやりたい事が出てきた時に、その実現方法を探す、と言うような進め方で取り組んで来ました。
したがって、出来る範囲は狭くまだまだです。

そうなんです、今回は、VBスクリプトでトンボを付ける課題が出てきました。
インデザインにPDFファイルを取り込むVBスクリプトを良く使っています。このファイルにトンボをつける場合、イラストレータなどで作成したトンボファイルをバックに貼り付けて実現してました。
A4、B5・・・などの定形サイズだけでしたら、その種類、全部用意しておけばよいのですが、非定形の場合、その都度トンボファイルを作らなければなりません。

さてどうする!

インデザインで作れば良いということです。
線を書く事が出来れば良いのです。
簡単な話です。

それが、簡単ではありませんでした。
VBSでの情報は、殆ど見られません。
検索すると、当社のサイトが出て来てしまいます。

VBスクリプトで線を書くのは、初めての経験で、試行錯誤はありました。
結果的には、トンボを書く事は出来そうと言うところまで来ました。
そして、簡単なレベルですが、図形の描画方法を学びました。

私と同じように、悩む方がいらっしゃるかもしれません。
まとめたので参考にしてください。

線を引く

まずは、2店間に線を引く方法です。
A点、B点それぞれXY座標を指定して線を引きます。

Ax=20
Ay=50
Bx=190
By=50
Set LineObjA = myDocument.Pages.Item(cuntC - 1).Rectangles.Add()
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax, Ay), Array(Bx, By))

 

 

2点間の例でしたが、座標パスの追加指定する事で色々な図形を描画出来ます。

複数地点間の線描画

次の例では、 A~H まで 8点の描画です。

 

Ax=20
Ay=60
Bx=40
By=80
Cx=60
Cy=70
Dx=80
Dy=100
Ex=100
Ey=90
Fx=120
Fy=130
Gx=140
Gy=100
Hx=160
Hy=160

Set LineObjA = myDocument.Pages.Item(cuntC - 1).Rectangles.Add()
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax, Ay), Array(Bx, By),Array(Cx, Cy), Array(Dx, Dy),Array(Ex, Ey), Array(Fx, Fy),Array(Gx, Gy), Array(Hx, Hy))

 

H点からA点に線が引かれ、閉じた図形となています。

開いた図形の描画

閉じた図形となってましたが、次の文を追加で、開いた図形になります。 

LineObjA.Paths.Item(1).PathType = 1869639280 'idPathType.idOpenPath '1869639280 (&H6F706E70)

 

 

以上の記述方法で線の描画は出来るようになりました。

次回は、線の太さ、色を付ける等の内容を紹介します。

 

スクリプト記述例

スクリプトを以下にまとめました。

メモ帳に、コピーして、適当なファイル名を付けて保存します。

この時の、拡張子は .vbs にしてください。

保存したファイルをダブルクリックで実行します。

インデザインが開き、上記の絵を書きます。

お持ちのインデザインのバージョンにより、インデザイン起動の部分の記述を変える必要が有ります。

 


Set myIndesign = CreateObject("InDesign.Application") 'インデザインを起動
Set myDocument = myIndesign.Documents.Add 'ドキュメント作成

Me_size_GH = 297
Me_size_GY = 210

With myDocument.DocumentPreferences
.PageHeight = CStr(Me_size_GH) & "mm"
        .PageWidth = CStr(Me_size_GY) & "mm"
        .FacingPages = False
'***************************************
Rem 裁ち落とし
        .DocumentBleedBottomOffset = "3p"
        .DocumentBleedTopOffset = "3p"
        .DocumentBleedInsideOrLeftOffset = "3p"
        .DocumentBleedOutsideOrRightOffset = "3p"
Rem 印刷可能領域
        .SlugBottomOffset = "20mm"
        .SlugTopOffset = "20mm"
        .SlugInsideOrLeftOffset = "20mm"
        .SlugRightOrOutsideOffset = "20mm"
End With


Rem 線を引く
Ax=30
Ay=50
Bx=180
By=50
Set LineObjA = myDocument.Pages.Item(cuntC - 1).Rectangles.Add()
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax, Ay), Array(Bx, By))

Ax=20
Ay=60
Bx=40
By=80
Cx=60
Cy=70
Dx=80
Dy=100
Ex=100
Ey=90
Fx=120
Fy=130
Gx=140
Gy=100
Hx=160
Hy=160

Set LineObjA = myDocument.Pages.Item(cuntC - 1).Rectangles.Add()
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax, Ay), Array(Bx, By),Array(Cx, Cy), Array(Dx, Dy),Array(Ex, Ey), Array(Fx, Fy),Array(Gx, Gy), Array(Hx, Hy))

LineObjA.Paths.Item(1).PathType = 1869639280 'idPathType.idOpenPath 

 

 

関連記事