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

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

管理者用
blog

トンボを作りたいと言う事から、線を引く方法を学び、この三栄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  

関連記事