前のトピック     次のトピック

第 18 章 オートメーションによる作図

セクション 1   マスタシェイプによる図面の自動化

プログラムから図形を作成する最も便利な方法は、ステンシルからマスタシェイプをドロップする方法です。マスタシェイプは、本質的には図面ですぐに使用できるようになっています。そのため、プログラムによる複雑な処理は必要ありません。マスタシェイプは、独自に作成してプログラムに添付したステンシルから、または Visio® 製品に付属のステンシルから使用できます。

マスタシェイプをページにドロップするには

  1. 使用するマスタシェイプが含まれるステンシルを表す Document オブジェクトを作成します。
  2. そのマスタシェイプを表す Master オブジェクトを作成します。
  3. 図形をドロップする図面ページを表す Page オブジェクトを作成し、マスタシェイプをその図面ページにドロップします。

このセクションの内容...

ステンシルの取得

マスタシェイプの取得

ページへのマスタシェイプのドロップ

ステンシルの取得

Application オブジェクトの Documents コレクションからステンシルを検索して、すでに開いているステンシルへの参照を取得することができます。例を次に示します。

Set stnObj = Documents("基本シェイプ.vss")

この例では、docObj ではなく stnObj という変数名を使用して、ステンシルとその他の種類のファイルを区別しています。この名前付け規則によって、後で名前が混同しないようにすることがきます。

他のファイル関連の操作と同様に、ステンシルを使用する前にステンシルが実際に使用可能かどうかを確認することをお勧めします。基本シェイプ.vss を開いていない場合に、上の Set ステートメントを実行すると、エラーが返されます。基本シェイプ.vss を開いているかどうかを確認するには、次のステートメントを使用します。

'If the file is not open, open it
On Error Resume Next
'Get a reference to the Stencil object
Set stnObj = Documents("基本シェイプ.vss")
'The stencil was not open, we need to open it
If stnObj = Nothing Then
     'OpenEx could not open the file
     On Error Go To errorhandler
     Set stnObj = Documents.OpenEx ("基本シェイプ.vss", visOpenRO)
End If

通常、ステンシルは、変更しないようにするため、読み取り専用で開きます。しかし、ユーザーは、いつでもオリジナル ファイルを開いて、作業状態の変更やファイルの移動および削除を行うことができます。これらの操作は、テンプレートを使用するときに開いているステンシルに影響を与えることがあります。

TOP へ

マスタシェイプの取得

Document オブジェクトには、その図面ファイルのステンシル内にあるマスタシェイプの Masters コレクションを返す Masters プロパティがあります。オブジェクトの名前、または Masters コレクション内のオブジェクトのインデックスを使用して、Master オブジェクトを参照することができます。例を次に示します。

Set mastObj = stnObj.Masters("星型 五角形")

この処理を実行する際によくある間違いは、ステンシル ファイルの Masters コレクションではなく、図面ファイルの Masters コレクションを使用してしまうことです。すべての Visio ファイルにはステンシルがあります。つまり、すべての Document オブジェクトに Masters コレクションがあるということです。ただし、図面ファイルの Masters コレクションには既に図面にドロップされたマスタシェイプのみが格納されます。したがって、新しい図面の Masters コレクションは、通常、空になります。いずれにせよ、この Masters コレクションには、通常、取得しようとするマスタシェイプは格納されていません。Master オブジェクトの取得に失敗する場合は、図面ファイルからではなく、ステンシル ファイルからステンシルを取得しているかどうかを確認してください。

TOP へ

ページへのマスタシェイプのドロップ

マスタシェイプをページにドロップするには、まず、図面ページを表す Page オブジェクトを取得し、Page オブジェクトの Drop メソッドを使用する必要があります。Drop メソッドは、マウスで図形をドラッグしてドロップするのと同じ操作を実行します。Drop メソッドには、オブジェクトへの参照と、図面ページ上のオブジェクトの Pin の位置を示す 2 つの座標値 (オブジェクトがマスタシェイプの場合) の 3 つの引数を使用できます。Drop メソッドに渡されるオブジェクトがマスタシェイプではない場合、2 つの座標値はオブジェクトの幅 - 高さボックスの中心を示します。

Set pagObj = ThisDocument.Pages(1)
Set shpObj = pagObj.Drop(mastObj, 10, 14)

座標は、ページの左下隅から測定されます。この例の (10, 14) は、縮尺変更されていない図面の 22 × 28 cm の図面ページの中心にシェイプの Pin を配置します。縮尺図面では、インチを使用した図面単位で座標を指定します。たとえば、図面縮尺が 1 m = 1 cm の場合は (100, 140) の座標を指定して、シェイプをページの中心にドロップします。図形の座標の詳細については、「第 2 章 Visio のシェイプの作成」を参照してください。

 



図形の Pin は、Drop メソッドで指定された座標 (10,14) (A) に配置されます。

分かりやすく説明するため、この例では、1 つの図形を図面ページの正確な中心位置にドロップし、定数を使用して図形の位置を示しています。ただし、実際の図面で図形の配置を決定する場合、特に複数の図形が含まれた接続図の場合は、注意が必要です。この手順の例については、「セクション 2   図面への図形の配置」を参照してください。

Drop メソッドは、マスタシェイプを図面にドロップするだけでなく、次のような処理にも使用できます。

複数の図形をドロップするには、DropMany メソッドを使用します。このメソッドは、マウスで複数の図形をドラッグしてドロップするのと同じ操作を実行します。


プログラムを使用して縮尺図面で図形の描画またはドロップを実行する場合は、座標を図面の寸法単位からインチに変換する必要があります。たとえば、次のステートメントでは、メートル単位の座標で始点 (3 ft, 4 ft) から終点 (5 ft, 6 ft) への長方形を、インチ単位の縮尺図面に描画しています。

PagObj.DrawRectangle(300, 400, 500, 600)


Top