第 19 章 VISIO ソリューションでの接続のオートメーション化
プログラムを使用して接続図を作成する場合は、図面ページにマスタシェイプを配置して図形どうしを接着します。接着は方向性を持つ操作なので、どの図形をどの図形に接着するのかが重要になります。いったん図形を接着すると、接続を解除しない限り、接着された図形も一緒に移動することができます。このことは、プログラムを使って図形を移動させる場合でも Visio® の図面ウィンドウで移動させる場合でも同じです。たとえば、1 本の線を四角形に接着したとします。四角形を移動しても接続は解除されません。四角形に接着したままの状態で、必要に応じて線を伸ばすこともできます。ただし、線を移動すると接続は解除されます。
この図面では、接続した図形の移動を表しています。線が四角形に接着されています。(A)四角形を移動しても (B)、図形は接続されたままです。線を移動すると (C)、接続は解除されます。
プログラムを使って図形を接着するには
このセクションの内容...
接着できる部分は図形によって決まっています。たとえば、1 次元図形の終点または 2 次元図形のコントロール ハンドルは接続ポイントに接着できますが、2 次元図形の側面はガイドまたはガイド ポイントにしか接続できません。
オブジェクトを他のオブジェクトに接着する最も簡単な方法は、線を延長できるコントロール ハンドルのあるマスタシェイプを使用して、その線を他の図形に接続する方法です。たとえば、下図は組織図ステンシル (組織図.vss) の [担当者] マスタシェイプを示しています。このマスタシェイプの上のコントロール ハンドルがもう一方の図形に接着されます。マスタシェイプには、 4 つの名前付きの接続ポイントがあり、その位置に他の図形を接着できます。これらの位置で図形を接着する際に使用するセル参照には、次のようなものがあります。
[担当者] マスタシェイプ上のコントロール ハンドルと 接続ポイントへのセル参照
コントロール ハンドルは、さまざまな接続の図表で使用できます。図形の接着にコントロール ハンドルを使用しない場合は、代わりに 1 次元図形を使用することもできます。次の図のように 2 つの 2 次元図形に 1 次元図形の始点と終点を接着します。
1 次元図形の始点と終点のセル参照
コントロール ハンドル、接続ポイント、終点、図形座標の頂点などの、図形内のさまざまなポイントは、そのポイントの X 座標と y 座標の 2 つの ShapeSheet® セルで表されます。1 対のセルで表される図形の一部分を接着する場合は、その対のセルのどちらか一方を指定します。たとえば、図形の位置を示す 1 つ目のコントロール ハンドルを表すには、Controls.X1 か Controls.Y1 のどちらかを指定します。
次の表は、一般的に接着に使用する図形の部分を表すShapeSheet セルの一覧です。
図形の接着部分を示すセル
接着する部分 | 取得するセル | 接着する図形にあるセル |
---|---|---|
1 次元図形の始点または終点 | BeginX または BeginY、EndX または EndY |
Connections.Xn または Connections.Yn、 Geometry.Xn または Geometry.Yn、AlignLeft、AlignCenter、AlignRight、AlignTop、AlignMiddle、またはAlignBottom
PinX または PinY (動的接着の場合) |
コントロール ハンドル | Controls.Xn または Controls.Yn。n はコントロール ハンドルの行番号 |
Connections.Xn または Connections.Yn。Geometry.Xn または Geometry.Yn、AlignLeft、AlignCenter、AlignRight、AlignTop、AlignMiddle、または AlignBottom
PinX または PinY (動的接着の場合) |
図形のエッジ | AlignLeft、AlignCenter、AlignRight、AlignTop、AlignMiddle、または AlignBottom | すべての Guide セル |
整列セルは、図形の指定部分の中央にある選択ハンドルに対応します。たとえば、AlignTop は、図形の上端の中央にある選択ハンドルに相当します。プログラム内の整列セルに接着することは、図面ウィンドウの図形にある対応する選択ハンドルに接着することに相当します。
実際には、選択ハンドルに接着するのではなく、選択ハンドルを使って図形上の特定の場所に接続ポイントを作成します。これは、プログラムを使って図形を接着した場合でも、Visio の図面ウィンドウ上で接着した場合でも同じです。新しい接続ポイントを作成すると、図形の接続セクションに 1 行追加されます。
ガイドは、Visio の図面ウィンドウ内でルーラーから引き出された印刷されない線で、図形を整列する場合に使用します。図形をガイドに接着すると、ガイドと一緒に図形も移動できます。1 次元図形をガイドに接着する場合は、ガイド内のどのセルでも指定できます。例 :
1DShp.Cells("BeginX").GlueTo GuideShp.Cells("PinX")
2DShp.Cells("AlignLeft").GlueTo GuideShp.Cells("PinX")
図形の接着部分を決めたら、図形の その部分を表す Cell オブジェクトを取得します。Cell オブジェクトを取得するには、Shape オブジェクトの Cells プロパティを取得してセルの名前を指定します。たとえば、次のステートメントでは、shpObj1 という図形の 1 つ目のコントロール ハンドルの x 座標を表す Cell オブジェクトを取得します。
Set celObj = shpObj1.Cells("Controls.X1")
図形上のポイントを 1 対のセルで表す場合は、対の一方のセルだけを指定します。どちらのセルを指定するかは自由です。上の例の場合、Controls.Y1 でも同じように機能します。
Cell オブジェクトの使い方についての詳細は、「数式のオートメーション化」Chapter 17, Automating formulas(DVS_801)を参照してください。
Cell オブジェクトの GlueTo メソッドまたは GlueToPos メソッドを使用して、図形を他の図形に接着することができます。GlueTo メソッドでは、セル参照を使って接続対象となる図形の接続部分を指定すると、セル参照に対する Cell オブジェクトの数式が設定されます。GlueToPos メソッドでは、接続対象となる図形の幅と高さを示すボックスとの相対位置を示す 1 対の 10 進小数を指定します。GlueTo または GlueToPos によって、図形の指定した部分または位置に接続ポイントが作成されます。
たとえば、次のステートメントでは、GlueTo メソッドを使用して、図形の celObj で表される部分 (下図のコントロール ハンドル) を shpObj2 で表される図形の 4 番目の接続ポイントに接続し、その接続ポイント名を分かりやすい Connections.bottom に変更します。
celObj.GlueTo shpObj2.Cells("Connections.bottom")
GlueTo メソッドを使って、コントロール ハンドルを接続ポイントに接着します。
次のステートメントでは、GlueToPos メソッドを使って、"shpObj2" の中央に新しい接続ポイントを作成して図形を接着します。位置は、xy 座標ではなく、図形の幅と高さを示すボックスの 10 進小数で指定します。これらの小数に負の数や 1 より大きい数を指定して、図形の幅と高さを示すボックスで指定された範囲の外側に接続ポイントを作成することもできます。
celObj.GlueToPos shpObj2, .5, .5
GlueToPos メソッドを使って、コントロール ハンドルを特定の位置に接着します。
注 動的に図形を接着するには、GlueTo メソッドを使い、接着先のセルに PinX セルまたは PinY セルを指定します。PinX に接着すると水平方向が優先され、PinY に接着すると垂直方向が優先されます。すべてのセル参照は、デフォルトで静的接着に設定されています。静的接着または動的接着の詳細については、Visio 製品付属のオンライン ヘルプを検索してください。