インデザイン
2018/06/14
インデザイン VBスクリプト 図形を描く編(3)(トンボを描く)
管理者用
トンボを作りたいと言う事から、線を引く方法を学び、この三栄NAVで紹介しました。
それじゃあー、トンボはどうなったと言う事になります。
今回、単純なトンボを作る部分を紹介します。
実際には、面付、ドブ幅、サイズ等、条件をコントロールする部分が必要です。
さらに、外部データの取り込み等も必要となります。
このような部分を考えて行くと、ああしたい・こうしたい・・・・と
機能の幅が広がっていきます。
この部分は、あなたが考えて見てください。
私のは、いつか完成したら紹介したいと思っています。
トンボ用のマスターページ作成
マスターページにトンボを描く事とします。
次のスクリプトでは、マスターページBを追加し、ページに設定してます。
頭の中の構想の段階で、トンボ用のマスターページが、必要と思ったのですが
実際には、必要無いようです。
Set MstPeg = myDocument.MasterSpreads(1)
Set MstTonbo = myDocument.MasterSpreads.Add
MstPeg.BaseName = "本文用マスターページ"
MstTonbo.BaseName = "トンボ用マスタ"
ページ1に B-トンボ用マスタ を設定しました。
Set MstPegA = myDocument.Pages.Item(1)
MstPegA.AppliedMaster = MstTonbo
レイヤーの追加
トンボ用のレイヤーを追加
Set TonboLaye = myDocument.Layers.Item(1)
TonboLaye.Name = "トンボ用レーヤー"
Set Layerbese = myDocument.Layers.Add
Layerbese.Name = "本文用レイヤー"
トンボを描く
トンボは、四隅およびセンターと描くことにしました。
左上 ⇒ 左下 ⇒ 右上 ⇒ 右下
左センター ⇒ 右センター ⇒ 上センター ⇒ 下センター
の順に、座標を作り描画します。
四隅はL字形の線を書きます。
'左上
Ay = 0
Ax = 0
Ay1 = Ay - TonbOfset
Ax1 = Ax - TonbnNaga
Ay2 = Ay - TonbOfset
Ax2 = Ax
Ay3 = Ay - TonbnNaga
Ax3 = Ax
Call Tonb_Data_Out()
センタートンボは、直線の描画
'センタートンボ
Ay = Me_size_GH
Ax = Me_size_GY
AyN = Me_size_GH/2
AxN = Me_size_GY/2
'センター左
Ay1 = AyN
Ax1 = -TonbnNaga
Ay2 = AyN
Ax2 = - TonbOfset
Call Tonb_Data_Cent()
L字の描画とセンタートンボのサブルーチン
Sub Tonb_Data_Out()
Set LineObjA = MstTonbo.Rectangles.Add(TonboLaye)
LineObjA.StrokeWeight = "0.1mm"
LineObjA.StrokeColor = CO1
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax1, Ay1), Array(Ax2, Ay2), Array(Ax3, Ay3))
LineObjA.Paths.Item(1).PathType = 1869639280'idPathType.idOpenPath '1869639280 (&H6F706E70)
End Sub
Sub Tonb_Data_Cent()
Set LineObjA = MstTonbo.Rectangles.Add(TonboLaye)
LineObjA.StrokeWeight = "0.1mm"
LineObjA.StrokeColor = CO1
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax1, Ay1), Array(Ax2, Ay2))
End Sub
絵で見やすいように、かなり太い線でトンボを描いています。
参考 スクリプト
スクリプトを以下にまとめました。
メモ帳に、コピーして、適当なファイル名を付けて保存します。
この時の、拡張子は .vbs にしてください。
保存したファイルをダブルクリックで実行します。
インデザインが開き、上記の絵を書きます。
お持ちのインデザインのバージョンにより、インデザイン起動の部分の記述を変える必要が有ります。
Set myIndesign = CreateObject("InDesign.Application") 'インデザインを起動
Set myDocument = myIndesign.Documents.Add 'ドキュメント作成
Me_size_GH = 297
Me_size_GY = 210
TonbOfset = 3
TonbnNaga = 13
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
Set MstPeg = myDocument.MasterSpreads(1)
Set MstTonbo = myDocument.MasterSpreads.Add
MstPeg.BaseName = "本文用マスターページ"
MstTonbo.BaseName = "トンボ用マスタ"
'myDocument.MasterSpreads(1).BaseName = "TonboA"
'Set myTextFrame = MstTonbo.TextFrames.Add
Set MstPegA = myDocument.Pages.Item(1)
MstPegA.AppliedMaster = MstTonbo
Set TonboLaye = myDocument.Layers.Item(1)
TonboLaye.Name = "トンボ用レーヤー"
Set Layerbese = myDocument.Layers.Add
Layerbese.Name = "本文用レイヤー"
Set CO1 = myDocument.Colors.Add
CO1.ColorValue = Array(0, 0, 0, 100)
'左上
Ay = 0
Ax = 0
Ay1 = Ay - TonbOfset
Ax1 = Ax - TonbnNaga
Ay2 = Ay - TonbOfset
Ax2 = Ax
Ay3 = Ay - TonbnNaga
Ax3 = Ax
Call Tonb_Data_Out()
Ay1 = Ay
Ax1 = Ax - TonbnNaga
Ay2 = Ay
Ax2 = Ax - TonbOfset
Ay3 = Ay - TonbnNaga
Ax3 = Ax - TonbOfset
Call Tonb_Data_Out()
'右上
Ay = 0
Ax = Me_size_GY
Ay1 = Ay - TonbOfset
Ax1 = Ax + TonbnNaga
Ay2 = Ay - TonbOfset
Ax2 = Ax
Ay3 = Ay - TonbnNaga
Ax3 = Ax
Call Tonb_Data_Out()
Ay1 = Ay
Ax1 = Ax + TonbnNaga
Ay2 = Ay
Ax2 = Ax + TonbOfset
Ay3 = Ay - TonbnNaga
Ax3 = Ax + TonbOfset
Call Tonb_Data_Out()
'左下
Ay = Me_size_GH
Ax = 0
Ay1 = Ay + TonbOfset
Ax1 = Ax - TonbnNaga
Ay2 = Ay + TonbOfset
Ax2 = Ax
Ay3 = Ay + TonbnNaga
Ax3 = Ax
Call Tonb_Data_Out()
Ay1 = Ay
Ax1 = Ax - TonbnNaga
Ay2 = Ay
Ax2 = Ax - TonbOfset
Ay3 = Ay + TonbnNaga
Ax3 = Ax - TonbOfset
Call Tonb_Data_Out()
'右下
Ay = Me_size_GH
Ax = Me_size_GY
Ay1 = Ay + TonbOfset
Ax1 = Ax + TonbnNaga
Ay2 = Ay + TonbOfset
Ax2 = Ax
Ay3 = Ay + TonbnNaga
Ax3 = Ax
Call Tonb_Data_Out()
Ay1 = Ay
Ax1 = Ax + TonbnNaga
Ay2 = Ay
Ax2 = Ax + TonbOfset
Ay3 = Ay + TonbnNaga
Ax3 = Ax + TonbOfset
Call Tonb_Data_Out()
'センタートンボ
Ay = Me_size_GH
Ax = Me_size_GY
AyN = Me_size_GH/2
AxN = Me_size_GY/2
'センター左
Ay1 = AyN
Ax1 = -TonbnNaga
Ay2 = AyN
Ax2 = - TonbOfset
Call Tonb_Data_Cent()
'センター右
Ay1 = AyN
Ax1 = Ax + TonbOfset
Ay2 = AyN
Ax2 = Ax + TonbnNaga
Call Tonb_Data_Cent()
'センター上
Ay1 = -TonbOfset
Ax1 = AxN
Ay2 = -TonbnNaga
Ax2 = AxN
Call Tonb_Data_Cent()
'センター下
Ay1 = Ay + TonbOfset
Ax1 = AxN
Ay2 = Ay + TonbnNaga
Ax2 = AxN
Call Tonb_Data_Cent()
Sub Tonb_Data_Out()
Set LineObjA = MstTonbo.Rectangles.Add(TonboLaye)
LineObjA.StrokeWeight = "0.1mm"
LineObjA.StrokeColor = CO1
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax1, Ay1), Array(Ax2, Ay2), Array(Ax3, Ay3))
LineObjA.Paths.Item(1).PathType = 1869639280'idPathType.idOpenPath '1869639280 (&H6F706E70)
End Sub
Sub Tonb_Data_Cent()
Set LineObjA = MstTonbo.Rectangles.Add(TonboLaye)
LineObjA.StrokeWeight = "0.1mm"
LineObjA.StrokeColor = CO1
LineObjA.Paths.Item(1).EntirePath = Array(Array(Ax1, Ay1), Array(Ax2, Ay2))
End Sub