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

第 6 章 図形のグループ化と合成

セクション 3   グループの動作の制御

カスタム ソリューションの図形を設計する場合、グループの様々な動作を正確に制御できます。たとえば、ユーザーがグループ内のアイテムを選択できないようにしたり、グループ内の図形のサイズ変更をできないようにしたりできます。

グループ化された図形の数式を操作する場合は、次の図に示すように、ローカル座標、親座標、またはぺージ座標を使用します。グループ化された図形に別のサイズ変更動作を定義すると、座標系が変更されることがあります。

 



Visio座標系でのグループ内の図形

  1. ページ座標
  2. 親座標
  3. ローカル座標

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

グループの選択方法の制御

グループ化された図形のサイズ変更動作の定義

図形の 1 方向だけのサイズ変更

3-D ボックスの作成 : 例

グループの選択方法の制御

Visio® エンジンは、3 種類のグループ選択方法をサポートしています。

さらに、[グループのプロパティ] セクションの [DontMoveChildren] セルを TRUE に設定することによって、グループのすぐ下の子図形の移動を禁止することができます。

作成したグループ図形の選択動作は、グループのシートの [グループのプロパティ] セクションにある [SelectMode] セルを修正することによって決定できます。グループが入れ子になっている場合、現在選択されているグループの選択動作が優先されます。

[グループのプロパティ] セクションの [SelectMode] 設定

説明
0 クリックするとグループだけが選択されます。もう一度クリックすると、グループの選択が解除されます。
1 クリックするとグループが最初に選択されます。もう一度クリックすると、グループ メンバーが選択されます。グループを再選択するには、まず現在の選択を解除する必要があります(デフォルトの動作)。
2 クリックするとグループ メンバーが最初に選択されます。もう一度クリックすると、グループが選択されます。グループにコンポーネント図形が積み重なっている場合、次にクリックすると、積み重ね順に図形が選択され、最後にグループが選択されます。


  連続してクリックすると、ダブルクリックと解釈され、選択順序の次の図形ではなく、そのグループのテキスト ボックスが開く場合があります。これを防ぐには、少し間隔を開けてクリックしてください。


TOP へ

グループ図形のサイズ変更動作の定義

グループのサイズ変更動作を定義する場合、グループ メンバーのサイズと位置をグループ内でどのように変更するかを考えておく必要があります。グループのサイズを変更すると、一般に、コンポーネント図形はグループ座標系での比率を維持するように伸縮し、再配置されます。ただし、固定寸法でオブジェクトを表す図形もあります。グループのサイズを変更した場合に、図形の位置が変更されても、サイズと比率が変わらないように定義できます。つまり、グループのサイズ変更に伴い、サイズが変わるコンポーネント図形と、そうでないものがあるということです。メンバー図形の [図形情報] セクションの [ResizeMode] セルはサイズ変更動作を制御します。

たとえば、次の図では、キッチン カウンターにはカウンタートップ (天板)、レンジ、シンクがあります。レンジとシンクは、工業規格に準拠したサイズがあり、カウンターのサイズ変更には影響されません。しかし、カウンタートップは、任意のサイズに変更することができ、キッチンカウンターといっしょにサイズが変更されます。

 



  1. オリジナルのグループ
  2. デフォルトでは、グループのサイズ変更に伴い、コンポーネント図形もサイズ変更されます。そのため、シンクとレンジなどの固定寸法の図形では、不都合な動作が起こります。
  3. シンクとレンジのサイズは変更しないで、位置を変更するには、これらの図形のシートにある [ResizeMode] セルに「1」を入力します。

[図形情報] セクションの [ResizeMode] セルを使用すれば、コンポーネント図形やグループのサイズ変更動作を制御できます。コンポーネント図形が属すグループのサイズを変更する場合の動作方法を制御するには、このコンポーネント図形の [ResizeMode] に値を設定します。別のグループに入れ子になっているグループのサイズ変更の方法を制御するには、このグループの [ResizeMode] に値を設定します。先の例を使用すると、シンクの [ResizeMode] を「1」に設定し、次にシンクをカウンタトップとグループ化します。次の表に、使用できるサイズ変更オプションを示します。

[図形情報] セクションの [ResizeMode] 設定

説明
0 図形は、グループの [ResizeMode] 設定に応じてサイズ変更されます。[基本動作] ダイアログ ボックスの [グループの設定に合わせる] に相当します (デフォルトの動作)。
1 図形は、グループが伸縮したときに元のサイズを維持したままで、グループ内での位置だけが変更されます。[基本動作] ダイアログ ボックスの[位置のみを変更する] に相当します。
2 図形は、グループの伸縮に比例してサイズ変更されます。[基本動作] ダイアログ ボックスの [グループにあわせてサイズを変更する] に相当します。

別のサイズ変更動作を設定する場合は、できるだけ最上位レベルの図形にサイズ変更操作を設定してください。たとえば、各バーナーではなくレンジにサイズ変更動作を設定します。ユーザーがグループのサイズ変更をしたり、図形を選択して個別にサイズ変更をすることによって、誤ってグループ内の図形をサイズを変更してしまうことがないように、 [ResizeMode] を「1」に設定し、[保護] セクションの [LockWidth] と [LockHeight] も「1」に設定します。図形の幅、高さ、縦横比にロックを設定してから図形をグループに追加した場合は、図形のサイズ変更動作がグループに指定したロックよりも優先されます。

TOP へ

図形の 1 方向だけのサイズ変更

グループ内の図形のサイズ変更方法を制御する場合は、数式を使用してコンポーネント図形のサイズ変更動作をカスタマイズすることができます。たとえば、次の図の3-D ボックス図形は、ボックスの前面、上面、側面の 3 つの図形で構成される 1 つのグループです。しかし、それぞれが別々にサイズ変更できます。前面をサイズ変更するときは、幅と高さが比例して伸縮しますが、上面は幅方向だけ伸縮し、側面は高さ方向だけ伸縮します。このように動作することで、伸縮した図形は奥行きの変化しない 3-D ボックスの外観を保ちます。

 



ボックスがサイズ変更された場合、3-D ボックスの上面と側面は 1 方向にだけ伸縮します。

グループにこの種類のサイズ変更動作を設定するには、次の 2 つのテクニックを使用します。

3-D ボックス図形では、ボックスの奥行き、つまり上面の高さと側面の幅はグループのサイズ変更では変わらないので、上面の高さと側面の幅は定数値です。上面の幅は、幅方向にサイズ変更できるように、グループの幅に対して定義されます。同様に、側面の高さはグループの高さに対して定義されます。

前面のサイズと位置が決まれば、上面と側面のサイズと位置が決まるので、前面の図形がグループの図形枠を定義します。親 Pin は、各コンポーネント図形の位置を、グループの図形枠の該当する辺上に定義しています。上面の場合は、親 Pin の x 座標は「0 mm」で、y 座標はグループの高さと同じです。側面の場合は、親 Pin の x 座標はグループの幅と同じ値で、y 座標が「0 mm」です。

次の図のように、長方形を使って図形を描いた場合が、コンポーネント図形の幅と高さと、グループの幅と高さの関係を調べるのが最も簡単です。

 



3-D ボックスの分解図

  1. Pin
  2. <グループ シート ID>!Height
  3. <グループ シート ID>!Width

TOP へ

3-D ボックスの作成 : 例

前のトピックで説明したテクニックを使用して、3-D ボックスと似たサイズ変更動作をする図形を作成できます。1 つの図形がグループの図形枠を定義し、コンポーネント図形は図形枠との関係で所定の位置に固定されます。また、コンポーネント図形は、グループのサイズ変更に伴い 1 方向だけにサイズ変更されます。

実際の3-D ボックス グループを描画するには、次のようにします。

次の図に示すように、上面の頂点 2 と側面の頂点 3 は斜めになっています。上面の頂点 2 の y 座標は図形の高さと同じです。側面の頂点 3 の x 座標は図形の幅と同じです。上面の高さと側面の幅は定数値の 1.25 cm です。この定数を該当頂点数式に追加することによって、傾斜した図形になります。

 



3-D ボックスのコンポーネント図形のローカル座標

  1. グループのローカル座標
  2. Height = 1.25 cm
  3. Width + 1.25 cm
  4. Height + 1.25 cm
  5. Width = 1.25 cm

3-D ボックスをグループとして描画するには

  1. [四角形ツール] を使用して前面、上面、側面を表す四角形ボックスをおおおまかな位置に描画します。この段階では、上面と側面が 3 次元図形らしく見えないことは無視します。
  2. 前面だけを選択し、それをグループ化します。
  3. グループを選択し、[ウィンドウ]メニューから [シェイプシートを表示] を選択し、[保護] セクションの [LockCalcWH] セルに「1」を設定します。
  4. この手順によって、前面の図形枠が保たれます。この手順を行わないで、上面図形と側面図形を追加すると、グループの図形枠は拡大します。

  5. グループを選択します。[編集]メニューから [開く : グループ] を選択し、グループ ウィンドウを開きます。次に、図面ぺージの上面と側面を選択し、グループ ウィンドウにドラッグしてグループに追加します。
  6. グループのシェイプシート (ShapeSheet ®) ウィンドウで、[挿入]メニュー から [セクション] を選択し、[スクラッチ] セクションを追加します。[スクラッチ] セクションに、次の数式を入力します。
  7.      Scratch.X1     = 5 cm
         Scratch.Y1     = 5 cm

    「Scratch.X1 には、側面の幅を決定する定数を設定します。Scratch.Y1 には、上面の奥行きを決定する定数を設定します。

  8. グループのシェイプシート ウィンドウに定義した定数を参照するように、上面と側面を設定します。
  9. それには、[グループ] ウィンドウで、上面図形を選択し、[ウィンドウ]メニューから [シェイプシートを表示] を選択し、[スクラッチ] セクションを追加します。側面図形に対しても同じことを行います。上面と側面の [スクラッチ] セクションに、次の式を入力します。

         Scratch.X1     = <グループ シート ID>!Scratch.X1
         Scratch.Y1     = <gグループ シート ID >!Scratch.Y1

    グループの ID をこれらの数式に代入します。たとえば、グループの ID が「Sheet.4」であれば、[X1] セルの数式は Sheet.4!Scratch.X1 となります。

  10. 上面図形と側面図形の頂点の傾きを定義します。
  11. それには、次の表に示すように、[図形座標] セクションで数式をカスタマイズします。

    上面の [図形座標] セクションの数式

    (moveto) 行 X Y
         1 (Start)      = 0 mm.      = 0 mm.
         2 (LineTo)      = Scratch.X1      = Height
         3 (LineTo)      = Width + Scratch.X1      = Height
         4 (LineTo)      = Width      = 0 mm.
         5 (LineTo)      = Geometry1.X1      = Geometry1.Y1

    側面の [図形座標] セクションの数式

    (moveto) 行 X Y
         1 (Start)      = 0 mm.      = 0 mm.
         2 (LineTo)      = 0 mm.      = Height
         3 (LineTo)      = Width      = Height + Scratch.Y1
         4 (LineTo)      = Width      = Scratch.Y1
         5 (LineTo)      = Geometry1.X1      = Geometry1.Y1

  12. 上面図形と側面図形のサイズ変更動作を定義します。
  13. それには、[図形情報] セクションの [Width]、[Height]、[Pin] の各数式をカスタマイズします。上面には、次の数式を使用します。

         Width
         Height
         PinX
         PinY
         LocPinX
         LocPinY
    = <グループ シート ID>!Width
    = Scratch.Y1
    = 0 mm.
    = <グループ シート ID>!Height
    = GUARD(0 mm.)
    = GUARD(0 mm.)

    側面の [図形情報] セクションには、次の式を使用します。

         Width
         Height
         PinX
         PinY
         LocPinX
         LocPinY
    = Scratch.X1
    = <グループ シート ID>!Height
    = <グループ シート ID>!Width
    = GUARD(0 mm.)
    = GUARD(0 mm.)
    = 0 mm.

  14. このボックスのシートの [グループのプロパティ] にある [SelectMode] セルに「0」を入力して、ユーザーがコンポーネント図形を選択できないようにします。

Top