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

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

管理者用
blog

図形を描く編(1)で簡単に線を引く方法を紹介しました。
今回も、図形の描画の方法の続きを紹介します。
前回に紹介した通り、描画したい座標点を連ねて記述していく事により、様々な図形を描く事が出来ます。

三角形を描く

三角形を描画する場合、三点のXY座標を指定します。


'三点の座標値を用意
A_Point = Array("50mm", "100mm")'(X,Y)
B_Point = Array("50mm", "150mm")'(X,Y)
C_Point = Array("100mm", "125mm")'(X,Y)

ABC_Point = Array(A_Point, B_Point, C_Point)'・・・座標の配列値

Set LineObj = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
LineObj.StrokeWeight = "1mm"'・・・線の太さ
LineObj.Paths.Item(1).EntirePath = ABC_Point'・・・描画オブジェクトに座標をセット
LineObj.Paths.Item(1).PathType = 1668051812 '・・・閉じた図形にセット ・・・①

 

・・・①の PathType の指定を 1668051812 ”閉じる” に指定するよう記述します。

・・・・① の部分を、次の 1869639280 ”開く” に設定した場合の図形を下に描きました。


'三点の座標値を用意
A_Point = Array("50mm", "155mm")'(X,Y)
B_Point = Array("50mm", "205mm")'(X,Y)
C_Point = Array("100mm", "180mm")'(X,Y)

ABC_Point = Array(A_Point, B_Point, C_Point)'・・・座標の配列値

Set LineObjOpen = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
LineObjOpen.StrokeWeight = "1mm"'・・・線の太さ
LineObjOpen.Paths.Item(1).EntirePath = ABC_Point'・・・描画オブジェクトに座標をセット
LineObjOpen.Paths.Item(1).PathType = 1869639280'・・・開いた図形にセット ・・・①

C点ーA点 間が開いた図形になります。

 

四角形を描く

三角の描画と同じように、座標を4点に指定して描く事が出来ます。


A_Point = Array("120mm", "100mm")'(X,Y)
B_Point = Array("130mm", "150mm")'(X,Y)
C_Point = Array("170mm", "125mm")'(X,Y)
D_Point = Array("140mm", "100mm")'(X,Y)
ABC_Point = Array(A_Point, B_Point, C_Point, D_Point)'・・・座標の配列値

Set SquareObj = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
SquareObj.StrokeWeight = "1mm"'・・・線の太さ
SquareObj.Paths.Item(1).EntirePath = ABC_Point'・・・描画オブジェクトに座標をセット
SquareObj.Paths.Item(1).PathType = 1668051812 '・・・閉じた図形にセット 

 


四角形でも正四角形、長方形の場合には、四角の左上、右下の座標を指定して描く事が出来ます。 
座標の指定は、Sy、Sx、Ey、Exの順に記述します。


YS_Point = "160mm"'Ys
XS_Point = "120mm"'(Xs)
YE_Point = "190mm"'(Ye)
XE_Point = "170mm"'(Xe)

ABC_Point = Array(YS_Point, XS_Point, YE_Point, XE_Point)'・・・座標の配列値
Set RectanObj = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
RectanObj.StrokeWeight = "1mm"'・・・線の太さ
RectanObj.GeometricBounds =ABC_Point'・・・描画オブジェクトに座標をセット

 

 

 

円を描く

円を描く場合、座標の指定は、テキストボックスと同様Sy、Sx、Ey、Exで指定します。


YS_Point = "200mm"'Ys
XS_Point = "80mm"'(Xs)
YE_Point = "250mm"'(Ye)
XE_Point = "140mm"'(Xe)
ABC_Point = Array(YS_Point, XS_Point, YE_Point, XE_Point)'・・・座標の配列値
Set CircleObj = myDocument.Pages.Item(1).Ovals.Add()
CircleObj.StrokeWeight = "1mm"
CircleObj.GeometricBounds = ABC_Point 

 

 線の太さを変える

 ここまで紹介して来た描画のスクリプト内では、1mmの太さで設定してました。
線の太さは、この値で変える事が出来ます。

LineObj.StrokeWeight = "2mm"'・・・線の太さ
LineObjOpen.StrokeWeight = "3mm"'・・・線の太さ
SquareObj.StrokeWeight = "2mm"'・・・線の太さ
RectanObj.StrokeWeight = "3mm"'・・・線の太さ
CircleObj.StrokeWeight = "4mm"

 

色を設定する

 描画した図形に色を設定します。

先に、色オブジェクトを作っておきます。
また、スイッチに登録している色から選択する事も出来ます。

線の色設定


'スイッチに登録されている色を選択
Magenta="C=0 M=100 Y=0 K=0"
Yellow="C=0 M=0 Y=100 K=0"

'色オブジェクト作成
Set CO1 = myDocument.Colors.Add
CO1.ColorValue = Array(0, 100, 100, 0)
Set CO2 = myDocument.Colors.Add
CO2.ColorValue = Array(100, 0, 100, 0)
Set CO3 = myDocument.Colors.Add
CO3.ColorValue = Array(100, 100, 0, 0)

LineObj.StrokeColor = Magenta
LineObjOpen.StrokeColor = Yellow
SquareObj.StrokeColor = CO3
RectanObj.StrokeColor = CO1
CircleObj.StrokeColor = CO2

 

 面の色を設定


LineObj.FillColor = CO1
LineObjOpen.FillColor = "Black"
SquareObj.FillColor = Yellow
RectanObj.FillColor = CO2
CircleObj.FillColor = Magenta

 

 参考 スクリプト

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

メモ帳に、コピーして、適当なファイル名を付けて保存します。
この時の、拡張子は .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

'三点の座標値を用意
A_Point = Array("50mm", "100mm")'(X,Y)
B_Point = Array("50mm", "150mm")'(X,Y)
C_Point = Array("100mm", "125mm")'(X,Y)
D_Point = Array("50mm", "100mm")'(X,Y)

ABC_Point = Array(A_Point, B_Point, C_Point)'・・・座標の配列値

Set LineObj = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
LineObj.StrokeWeight = "1mm"'・・・線の太さ
LineObj.Paths.Item(1).EntirePath = ABC_Point'・・・描画オブジェクトに座標をセット
LineObj.Paths.Item(1).PathType = 1668051812 '・・・閉じた図形にセット (idPathType.idClosedPath)

'三点の座標値を用意
A_Point = Array("50mm", "155mm")'(X,Y)
B_Point = Array("50mm", "205mm")'(X,Y)
C_Point = Array("100mm", "180mm")'(X,Y)

ABC_Point = Array(A_Point, B_Point, C_Point)'・・・座標の配列値

Set LineObjOpen = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
LineObjOpen.StrokeWeight = "1mm"'・・・線の太さ
LineObjOpen.Paths.Item(1).EntirePath = ABC_Point'・・・描画オブジェクトに座標をセット
LineObjOpen.Paths.Item(1).PathType = 1869639280'・・・開いた図形にセット ・・・①

'四角の座標値を用意
A_Point = Array("120mm", "100mm")'(X,Y)
B_Point = Array("130mm", "150mm")'(X,Y)
C_Point = Array("170mm", "125mm")'(X,Y)
D_Point = Array("140mm", "100mm")'(X,Y)

ABC_Point = Array(A_Point, B_Point, C_Point, D_Point)'・・・座標の配列値

Set SquareObj = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
SquareObj.StrokeWeight = "1mm"'・・・線の太さ
SquareObj.Paths.Item(1).EntirePath = ABC_Point'・・・描画オブジェクトに座標をセット
SquareObj.Paths.Item(1).PathType = 1668051812 '・・・閉じた図形にセット 

'四角 長方形の座標値を用意
YS_Point = "160mm"'Ys
XS_Point = "120mm"'(Xs)
YE_Point = "190mm"'(Ye)
XE_Point = "170mm"'(Xe)

ABC_Point = Array(YS_Point, XS_Point, YE_Point, XE_Point)'・・・座標の配列値

Set RectanObj = myDocument.Pages.Item(1).Rectangles.Add()'・・・描画オブジェクト
RectanObj.StrokeWeight = "1mm"'・・・線の太さ
RectanObj.GeometricBounds =ABC_Point'・・・描画オブジェクトに座標をセット

YS_Point = "200mm"'Ys
XS_Point = "80mm"'(Xs)
YE_Point = "250mm"'(Ye)
XE_Point = "140mm"'(Xe)
ABC_Point = Array(YS_Point, XS_Point, YE_Point, XE_Point)'・・・座標の配列値
Set CircleObj = myDocument.Pages.Item(1).Ovals.Add()
CircleObj.StrokeWeight = "1mm"
CircleObj.GeometricBounds = ABC_Point 

LineObj.StrokeWeight = "2mm"'・・・線の太さ
LineObjOpen.StrokeWeight = "3mm"'・・・線の太さ
SquareObj.StrokeWeight = "2mm"'・・・線の太さ
RectanObj.StrokeWeight = "3mm"'・・・線の太さ
CircleObj.StrokeWeight = "4mm"

'スイッチに登録されている色を選択
Magenta="C=0 M=100 Y=0 K=0"
Yellow="C=0 M=0 Y=100 K=0"

'色オブジェクト作成
Set CO1 = myDocument.Colors.Add
CO1.ColorValue = Array(0, 100, 100, 0)
Set CO2 = myDocument.Colors.Add
CO2.ColorValue = Array(100, 0, 100, 0)
Set CO3 = myDocument.Colors.Add
CO3.ColorValue = Array(100, 100, 0, 0)

LineObj.StrokeColor = Magenta
LineObjOpen.StrokeColor = Yellow
SquareObj.StrokeColor = CO3
RectanObj.StrokeColor = CO1
CircleObj.StrokeColor = CO2

LineObj.FillColor = CO1
LineObjOpen.FillColor = "Black"
SquareObj.FillColor = Yellow
RectanObj.FillColor = CO2
CircleObj.FillColor = Magenta

 

関連記事