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

第 8 章 1 次元図形、コネクタ、および図形の接着

セクション 3   図形の接続の制御

図形の一部が他の図形と接続されたままの状態になることを "接着" と呼びます。どの部分で他の図形と接着させるかを指定するには、"接続ポイント" を使います。

1 次元図形であれば端点、2 次元図形であれば外向きの接続ポイントを、それぞれガイド、ガイドポイント、図形の頂点、選択ハンドル、接続ポイント (内向きだけか、内向きと外向きの両方) に接着できます。図形を他の図形の頂点やハンドルに接着すると、内向きの接続ポイントが自動的に作成されます。

1 次元図形の端点を他の図形に接着すると、両方の図形を一度に移動することができます。このとき、接着されていない方の端点は動かないため、結果として 1 次元図形は変形します。2 次元図形を他の図形に接着し、接着先の図形を移動すると、接着元の2 次元図形も移動します。

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

コネクタ接着の基本動作の定義

接着対象の指定

接続ポイントについて

図形への接続ポイントの追加

接続ポイントの名前の設定

動的コネクタ用図形の設計

コネクタ接着の基本動作の定義

1 次元コネクタを他の図形に接着する場合、"静的" 接着か "動的" 接着かを指定できます。

コネクタを作成する場合、動的接着が使用されるように設定しておくと、接続先の図形を移動したときにコネクタの端点は適切な接続ポイントまで移動します。このとき、2 つの図形の接続ポイントを結ぶ線が最短になるようにコネクタが再描画されます。配置可能な図形以外の図形を動的接着するには、Ctrl キーを押しながらコネクタをドラッグしなければなりません。Ctrl キーを押さないと、コネクタは静的接着されます。コネクタの端点が他の図形に静的接着されているときは、始点 () と終点 () の選択ハンドルが濃い赤になります。一方、動的接着されているときは、選択ハンドルは赤になります。

 



コネクタに動的接着を定義すると、静的と動的のどちらでも接着可能になります。

  1. 端点をドラッグし、静的接着させます。
  2. 動的接着するには、Ctrl キーを押しながら端点をドラッグします。

コネクタの静的/動的接着を定義するには

  1. 図形を選択し、[ウィンドウ] メニューから [シェイプシートを表示] を選択します。
  2. [接続情報] セクションが表示されないときは、[表示] メニューから [セクション] を選択します。[セクション] ダイアログ ボックスで [接続情報] チェック ボックスをオンにして [OK] をクリックします。
  3. [接続情報] のセクションで [GlueType] セルに「0」 (静的接続) または「3」 (動的接続 ) を入力します。

特に何も指定しなければ、動的接着では 2 つの接続ポイント間か、図形の中心にある選択ハンドル間の最短経路を使って接続されます。接着した端点を移動する際に、動的接着ポイントが横や上、下になるように設定することもできます。このように設定するには、[接続情報] セクションで [WalkPreference] セルを設定します。ただし、迂回可能コネクタの場合は基本動作が [ShapeRouteStyle] セルの値によって制御されるため、[WalkPreference] セルの値は無視されます。[WalkPreference] 設定の詳細については、Visio 製品付属のオンラインヘルプ 「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択) の「WalkPreference」を検索してください。


動的接着を使用して 1 次元コネクタを他の図形に接着すると、接着対象となった図形の [EventXMod] セルを参照する数式が生成されます。この図形を変更すると、[EventXMod] セルを参照している数式がすべて再計算されます。[BegTrigger] セルや [EndTrigger] セルの数式もこれに含まれます。この 2 つのセルに入力されている数式は、1 次元図形を他の図形に接着するときに元の 1 次元図形に対して生成されるものです。1 次元コネクタの他の数式は、必要に応じて [BegTrigger] セルと [EndTrigger] セルを参照し、コネクタの始点や終点を移動したり形を変更したりします。


TOP へ

接着対象の指定

[スナップと接着] ダイアログ ボックスで図形の部分を指定して、ページ上の他の図形をその部分に接着することができます。たとえば、Visio テンプレートに含まれている 1 次元シェイプの大半は、ガイド、ガイドポイント、接続ポイントにしか接着できません。[ツール] メニューの [スナップと接着] から [接着] を選択し、作成中の図面またはテンプレートに合わせて追加の [接着対象] をクリックします。

ほとんどの場合、2 次元図形間の接続には 1 次元図形が使われますが、2 次元図形の以下の部分どうしを直接接着することもできます。

接続ポイントについて

図形を設計する場合、図形に接続ポイントを追加して、接着する位置や接着される位置を指定できます。マスタシェイプを作成する場合、ユーザーが使いやすい接続ポイントはどれか考え、余計なポイントは作成しないようにします。接続ポイントが多くなると、図形の処理速度が遅くなるからです。

他の図形を接着できるかどうか、または接続ポイントを他の図形に接着できるかどうかは、接続ポイントの種類によって違います。


  Visio 2000 では、古いバージョンの Visio 製品で作成した接続ポイントが、特に方向付けのない内向きの接続ポイントとしてインポートされます。この行のセル A、B、C、D にスクラッチ数式が設定されている場合は、この数式はそのままインポートされます。


次の図は、舗装タイルの図形です。この図形には、3 種類の接続ポイントがすべて含まれています。

 



内向き、外向き、内向き/外向きの接続ポイントを持つ舗装タイルの図形

  1. 外向きの接続ポイント
  2. 内向き/外向きの接続ポイント
  3. 内向きの接続ポイント
  4. 内向き/外向きの接続ポイントは、一番近い位置にある内向きの接続ポイントか、内向き/外向きの接続ポイントにスナップされます。

外向き/内向きの接続ポイントを接着するには、システムの [スナップと接着] ダイアログ ボックスの [接着対象] セクションで、[接続ポイント] をオンにしておく必要があります。外向きの接続ポイントか、内向き/外向きの接続ポイントのある図形をドラッグすると、図形は一番近い位置にある接続ポイントにスナップされます。外向きの接続ポイントが 2 つ以上ある場合は、マウスポインタに一番近い接続ポイントにスナップされます。

接続ポイントには、方向 (ベクトル) を指定できます。この指定によって、接続ポイントどうしを接着したときに図形を回転させるかどうかが決まります。初期状態では、接続ポイントが図形の辺上にある場合、この接続ポイントのベクトルは接続ポイントを持つ線分に対して垂直になります。その他の接続ポイントでは、ベクトルは 0 (方向なし) になります。外向きの接続ポイントを内向き (または内向き/外向き) の接続ポイントに接着し、どちらの接続ポイントにも 0 以外のベクトルを設定すると、必要に応じて図形が回転して両方のベクトルが整列されます。ベクトルに 0 が設定されている接続ポイントが 1 つでもあると、図形は回転しません。

 



図形を接着したときの回転状態は、接続ポイントのベクトルによって決まります。

  1. 垂直ベクトル (デフォルト)
  2. 角度付きベクトル
  3. 接続ポイントのベクトルを変更するには、接続ポイントを選択し、緑色の丸い方向ハンドルを必要な角度だけドラッグします。
  4. ベクトルなし
  5. 接着によって図形が回転しないようにするには、方向ハンドルを接続ポイント上にドラッグします。このようにすると、緑色の方向ハンドルが灰色になります。灰色のハンドルは接続ポイントにベクトルが設定されていないことを示しています。

外向きの接続ポイントのある図形を接着すると、[PinX]、[PinY]、[Angle] の各セルに数式が自動的に入力され、その図形と接着対象となった図形との接続関係が示されます。たとえば、垂直ベクトルに沿って接着される図形の数式の例をあげると以下のようになります。Circle1 は接着対象となる図形の名前です。円図形の [EventXFMod] セルとページを参照するようにしておけば、接着された図形が必要に応じて移動または回転し、接続状態が維持されます。LOCTOPAR と ANGLETOPAR の 2 つの関数は、接着された図形のローカル座標を接着対象図形 (Circle 1) の座標に変換します。

PinX = LOCTOPAR(PNT(Circle1!Connections.X2+-1 mm,
          Circle1!Connections.Y2+1 mm),
          Circle1!EventXFMod,ThePage!EventXFMod)

PinY = LOCTOPAR(PNT(Circle1!Connections.X2+-1 mm,
          Circle1!Connections.Y2+1 mm),
          Circle1!EventXFMod,ThePage!EventXFMod)

Angle = ANGLETOPAR(-45 deg.,Circle1!EventXFMod,EventXFMod)

ベクトルが 0 の図形に設定された [PinX] と [PinY] の数式を比較します。この図形は接着時に回転しないため、角度の数式は生成されません。

PinX = PNTX(LOCTOPAR(PNT(Circle3!Connections.X2,Circle3!Connections.Y2),
          Circle3!EventXFMod,ThePage!EventXFMod))+-1.25 mm

PinY = PNTY(LOCTOPAR(PNT(Circle3!Connections.X2,Circle3!Connections.Y2),
          Circle3!EventXFMod,ThePage!EventXFMod))+0 mm

TOP へ

図形への接続ポイントの追加

図形の頂点または選択ハンドルにコネクタを接着すると、この部分には内向きの接続ポイントが自動的に作成されます。このため、標準外の場所に内向きの接続ポイントが必要な場合と、外向きまたは内向き/外向きの接続ポイントが必要な場合以外は、接続ポイントを追加する手間が省けます。

図形に接続ポイントを追加するには、ツールバーの [接続ポイント ツール] を使用します。外向きの接続ポイントを追加したり、接続ポイントの種類を変更するには、[ツール] メニューから [オプション] を選択し、[詳細設定] タブをクリックします。次に、[開発者向けの設定] セクションの [開発モードで実行] チェック ボックスをオンにします。

接続ポイントを作成するには

  1. 図形を選択します。
  2. [接続ポイント ツール] を選択します。
  3.   [接続ポイント ツール] を使うと、選択した図形に接続ポイントが追加されます。このツールを使うときは、必ず接続ポイントを追加する図形を選択してから、操作を行ってください。

  4. 次の操作のうち、いずれかを行います。

接続ポイントを追加すると、シェイプシート ウィンドウに [接続ポイント] セクションが表示されます。このセクションの行には、接続ポイントの X と Y のローカル座標、ベクトルの X 座標と Y 座標、種類 (内向き、外向き、内向き/外向き) が設定されます。接続ポイントの座標の数式を変えることで、図形のサイズを再調整したときの接続ポイントの位置を制御できます。

図形の辺に接続ポイントを追加すると方向ベクトルが表示されます。方向ベクトルは、接続ポイントの追加された線分に対して垂直で、内向きの接続ポイントでは内向き、外向きの接続ポイントでは外向きに、内向き/外向きの接続ポイントでは内向きと外向きの両方で示されます


ヒント  接着対象として[図形の辺] がオンになっている状態で、外向きの接続ポイントのある図形を他の図形までドラッグすると、適切なベクトルを持つ内向きの接続ポイントが自動的に作成され、図形が接着されます。一方、図形を引き離すようにドラッグして接着を切断すると、自動的に作成された接続ポイントは削除されます。

図形座標に他の図形が接着されないようにするには、図形の相当する [図形座標] セクションの [NoSnap] セルを TRUE に設定します。この設定によって、図形座標に対するスナップや接着、1 次元図形の図形座標への接近、2 次元スナップと接着、図形の補助線に対するスナップが防止されます。たとえば、窓と電気の差込口、椅子と他の椅子などの間で接続が起こらないように設定することができます。[NoSnap] セルに TRUE を設定すると、スナップ点になり得る場所を横切ってユーザーがドラッグしても、図形は回転せず、不要な図形座標の補助線を接続先から除外します。


接続ポイントの名前の設定

[接続ポイント] 行に名前を設定しておくと、その名前を使って同じ行の [X] および [Y] のセルの値を参照することができます。変更後のセルの名前は、セクション内では一意でなければなりません。このセクションの 1 個所でセルの名前を設定すると、同じセクション内のすべてのセルがデフォルトの名前 (Connections.Row_n) になります。名前が設定されている行がない場合は、名前のセルは空白になります。

たとえば、1 行目のセルの名前を変更するには、数式に「Custom」と入力してセル名を Connections.Custom にします。このようにすると、2 行目には Connections.Row_2 という名前が自動的に設定されます。1 行目の [X] セルの値は、Connections.Custom.X か Connections.X1 で参照することができます。1 行目の [Y] セルの値は、Connections.Custom.Y1 か Connections.y1 で参照することができます。2 行目の [X] セルの値は Connections.Row_2.X か Connections.X2、2 行目の [Y] セルの値は Connections.Row_2.Y か Connections.Y2 を使って参照できます。

TOP へ

動的コネクタ用シェイプの設計

Visio 2000 では、動的コネクタを図形の境界ボックスの中まで延ばし、図形の辺と交差させることができます。(図形の境界ボックスは回転していない状態の図形の図形枠を囲む最小の四角形です。)

 



図形の辺との動的交差

  1. 動的交差されている状態
  2. 動的交差されていない状態
  3. 図形枠の外にある図形の辺に対して動的交差されている状態。動的コネクタは、接着対象となる側面の最も外側の図形座標を見つけます。

動的コネクタをグループ図形の中まで延ばし、そのグループの図形の図形座標と交差させることもできます。Visio 2000 よりも古い Visio 製品では、動的コネクタを図形の境界ボックスやグループ図形の内側まで延ばすことはできませんでした。

 



グループ図形との動的交差

  1. 動的交差されている状態
  2. 動的交差されていない状態

動的交差はデフォルトでは有効になっています。ただし、動的交差を使うと複雑な計算が必要になるため、コネクタを図形に動的に接着したときの図形のパフォーマンスに影響することがあります。これは、特に複数の図形座標や複雑な図形座標を持つ図形、たくさんのシェイプを含むグループ図形などの場合に見られます。

図形の動的交差を制御するには、[図形のレイアウト] セクションの [ShapeFixedCode] セルを使用します。[ShapeFixedCode] には、8 ビットの整数が入力されます。このビットによって、動的接続のさまざまな基本動作が制御されます。図形の動的交差を無効にするには、[ShapeFixedCode] セルの値を現在の値+128 に設定します。同じ図形について動的交差を再度有効にするには、[ShapeFixedCode] セルの現在の値から 128 を減算してください。[ShapeFixedCode] セルを他の値に設定する方法の詳細については、Visio 製品付属のオンラインヘルプ 「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。

動的コネクタを使用していても快適に動作する使いやすいシェイプを開発するには、以下の事項を検討してみてください。

Top