インデザイン
2018/06/11
インデザイン VBスクリプト 図形を描く編(2)
管理者用
図形を描く編(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