# オブジェクト選択(ピック)と位置データ入力(ロケート)

## ピック処理

図形上にマウスカーソルを合わせ、マウスのボタンを押すと図形を各種のコマンドの要求する図形を指定することができます。ピック処理では常にピックされた図形のどこが指定されたのか（図形上のどの点をピックにより指示されたのか）を認識しています。コマンドにより異なりますが、多くの場合、図形のどの位置がピックされたかにより、異なる意味合い（たとえば直線の始点である、とか、終点であるとか）を持ちます。このことを意識することが必要です。
ＭＧＣＬではピック処理として次の機能を標準サポートしています。

### ピック処理１－シングルピック

ひとつの図形だけをピックするときは、単純にカーソルを図形に合わせ左ボタンを押します。この時、カーソルの検知領域内に複数の図形があれば、次のようなダイアログが表示され、複数の図形のいずれを指定したいのかを指示可能です。下の図では、黄色い図形の図形種別がLBRep(B-Splineカーブ)で、黒い線の図形種別がStraight(直線)である。この双方がカーソルスコープ内に入っていて、そのいずれかを選択するよう要求されている。ダイアログ内の図形種別の文字を（カーソルで、または、ＫＢの矢印キーで）選択することにより、いずれかを選択指示する。このとき、選択された図形が選択に対応して黄色く強調表示される。

### ピック処理２－マルチピック

（１） 矩形範囲指定１ 画面の左上の点から、右下の点まで（正確には画面のＸ座標値が小から大へのカーソルの動きにより）、マウスの左ボタンを押したままカーソルを移動させる（ドラッグする）とその矩形（この時矩形の線は実線で表示されます）のなかに図形のすべてが収まっている図形だけが選択の対象となります。

（２） 矩形範囲指定２ 画面の右下の点から、左上の点まで（正確には画面のＸ座標値が大から小へのカーソルの動きにより）、その矩形（この時矩形の線は破線で表示されます）に図形の一部でも含まれる図形すべてが選択の対象となります。

### ピック処理３－追加選択

すでに選択されている図形に対してＫＢのctlキーまたはshiftキーを押しながらピック処理をすることにより選択の追加が可能です。ctlキーまたはshiftキーのいずれを押しても同じ効果が得られます。 （１） 未選択のものをctlキーまたはshiftキーを押しながらピック この場合、選択済の図形にピックしたものが、追加選択されます。 （２） 選択済のものをctlキーまたはshiftキーを押しながらピック この場合、選択されている複数の図形から、ピックしたものだけが、未選択（選択から削除される）となります。

### １.4 ピック処理４－コマンドの特殊ピック処理

各コマンドはピックに関して、コマンドの内部指定により次の特殊処理が可能です。これらの処理はコマンドのプログラムにより内部的指定されていますので、各コマンドの仕様書を参照ください。 （１） 上記の１．２ マルチピックで記述されている矩形指定によるピック処理を禁止し、シングルピックだけを可能とする （２） ctlキーまたはshiftキーが押されていなくても、押していることと同じピック処理をシミュレートする （３） 既に選択されている図形をctrキーまたはshiftキーを押して非選択とすることを禁止する （４） 選択の図形種類をコマンドが必要な種類に限定して、その他の種類の図形をピック対象外とする （５） 境界(面の場合は面を囲む境界の線、線の場合は始終点)を選んだこととする

## 位置データ入力（ロケート）

位置データ（空間の座標値は）、（１）カーソルにより、または、（２）ＫＢにより数値を入力することにより、入力します。この空間の座標値を入力することをロケート処理といいます。複数の点のロケート処理では、共通に次の入力処理が行われます。
（１） 点の入力の終了：ＫＢのエンターキー押下で複数点の入力終了を意味します。
（２） 前の入力点の取消：BackSpaceキー押下で前に入力した点が取り消されます。たとえば、現在までに5点を入力していれば、BackSpaceキーを押すことに5点目のデータが取り消され、入力点数は4点となります。
（３） 入力自体のキャンセル：通常のコマンドキャンセルと同様入力処理全体を取り消します。コマンドによってはコマンドのキャンセルとなります。

### カーソルによるロケート

コマンドが座標値の入力を要求すると(たとえば、図形の作成のため、点の座標値入力を要求する場合)、カーソルはロケートのためのカーソル（上の図の左上のウィンドの十字カーソル参照）に変化し、現在ロケート処理が要求されていることを示します。上の絵は現在のコマンドが自由曲線の生成コマンドで、曲線の通過点の指定（ロケート処理）が要求されています。ウィンドを4分割ウィンドにしていて、下図の4種のウィンドで表示されています。

十字カーソルの真ん中のはシステムが実際に入力として検知する点の位置を示しています。後で説明されるスナップ機能により、カーソルの位置が、ある制約を受けた少し異なる位置の点として入力されることがある。上の絵ではカーソルは（Ｘ，Ｙ）ウィンド内にあるが、その点がほかの視点からみた場合どこの位置となるかがにより他の視点のウィンドに表示されています。 カーソルによってロケートされる座標値は画面下部の座標値表示領域に下図のように表示されます。この座標値はカーソルの位置をCPlane（作業平面）に投影して得られたCPlane上の点となります。

### ２.2 キーボードによるロケート（FK F8によるロケート処理）

キーボードによるロケートについて説明します。カーソルがロケート処理を要求していることを示す十字カーソルになっているとき（コマンドが座標値の入力を要求しているとき）に、ＫＢのＦ８キーを押すことにより、ロケート処理をＫＢから行うことが可能です。 　座標入力を必要とする操作中に、F8 キーを押すと、図のダイアログボックスが表示されます。

（１） Previous Point 直前の入力座標が表示されます。まだ座標を入力していない場合には、ここには何も表示されません。 （２） ワールド絶対直交座標／ワールド相対直交座標 世界座標系における座標を入力したい場合、ワールド絶対直交座標をマークします。ダイアログボックス上部にあるエディットボックスに カンマで区切り、x, y, z座標値を　1,1,1　 のように入力します。 Previous Pointからの相対座標で入力したい場合、ワールド相対直交座標をマークして、同様に入力します。Previous Pointの座標値に入力の値が加算され、座標値が求められます。 （３） 距離制限値／角度制限値（度） 　距離制限値をマークして、エディットボックスに 50 のように距離を示す値を入力してOKボタンを押しますと、マウスカーソルの動きが直前の入力座標から距離が 50 以内にある座標に限られます。 角度制限値（度）の場合は角度を入力します。例えば30 のように入力します。このとき、マウスカーソルの動きは、以下の図の直線群の上に制限されます（実際には下のような直線は表示されません）。 （４） CPlane絶対直交座標／CPlane相対直交座標／CPlane極座標(度) ・ CPlane絶対直交座標はWCS 絶対直交座標と似ています。違いは、基準となる座標系が世界座標系ではなく、現在の作業平面座標系であるということだけです。 ・ CPlane 相対直交座標は WCS相対直交座標 と似ています。基準となる座標系は、世界座標系ではなく、現在の作業平面座標系です。 ・ CPlane極座標(度)は、座標を極座標で指定します。極座標とは、原点からの距離をｘ値、座標軸からの回転角度（ラジアンではなく、度数で入力します）をy値とした（ｘ、ｙ）を座標値として入力します。この場合の原点とは、CPlaneの原点を指します。座標軸とはCPlaneの座標軸を指します。CPlaneの座標軸はCPlane平面内で直行する二つの直線であり、それぞれu軸、v軸と呼びます。通常、u軸を赤、v軸を緑の半直線で表示します。 CPlaneの原点をＰ， u軸の方向ベクトルの単位ベクトルをuderiv, v軸の方向ベクトルの単位ベクトルをvderivとして、 （l, θ)と入力された座標値Ｑは次の式で表現されます： Ｑ＝Ｐ＋l＊cos(θ)＊uderiv＋l＊sin(θ)＊vderiv.

### TabキーまたはCtrlキー押下による特殊ロケート

TabキーまたはCtrlキーにより、ある直線上にある点という制約のあるロケートが可能です。
（１） TabキーによるCplane上にある仮想直線上の点の入力
Tabキーによる特殊ロケート（Tabキースナップモード）は、連続した点の入力を行う場合で2点目以降に働かせることができます。直前の入力点を始点としたCplane上の仮想直線の終点となる点へカーソルを移動しTabキーを押します。すると、システムは、直前の入力点を始点としTabキーを押したときにカーソルがあった点を終点とする仮想直線を形成し、ロケートはこの直線上の点へとスナップされ、この仮想直線上の点のみが入力可能となります。
Tabキーを押したときのカーソルの点は入力点とななりません。
このスナップモードのときにTabキーを押下すると、Tabキースナップモードは解除され、通常の入力モードとなります。
（２） CtrlキーによるCplaneにノーマルな仮想直線上の点の入力（ELEVATIONモード）
Ctrlキーによる特殊ロケート（ELEVATIONモード）は、Cplaneとノーマルな仮想直線上のみに入力点をスナップします。 Ctrlキーを押しながら、Cplane上のある点を押します（マウスの左ボタンを押す）と、システムはその点を始点とし、 Cplaneにノーマルな仮想直線を形成し、ロケートはこの直線上の点へとスナップされ、この仮想直線上の点のみが入力可能となります。 このスナップモード（ELEVATIONモード）のときに、ふたたびCtrlキーを押しながら左ボタンを押しますと、ELEVATIONモードは解除され、通常の入力モードとなります。
Ctrlキーを押しながらロケートした点は入力点としては認識されません。あくまで仮想直線の指定／解除のための入力となります。

### CPlane コマンド

ロケート処理はすべて作業平面（CPlane）と呼ばれる平面への、カーソル位置の投影として確定されます。そこで、作業平面をどのようなものに設定するかにより、入力される座標値が異なってきます。Cplaneを上手に使用することが効率よく座標値を入力する秘訣です。 作業平面操作コマンドについて説明します。

（１） Center 作業平面の中心を移動することで、作業平面の位置を変更します。ロケートされた新しい点を中心とする作業平面が定義されます。

（２） Elevate 　Center コマンドと同様ですが、現在の作業平面と平行に中心を現在の作業平面にたいして鉛直方向に沿って移動します。

（３） Rotate 回転軸と回転角を与えて作業平面を回転移動させます。 作業手順 ① 新しい作業平面の中心の座標を指定する（同時に回転軸の始点となる） ② 回転軸の終点の座標を指定する（上の図ではX軸上に指定されている） ③ 回転角を指定するための基準線方向を指定する（図では上方に伸びた補助線） ④ 回転角を決定する（図ではカーソル）

（４） Points 　新しい作業平面の中心、X 軸方向と Y 軸方向を指定します。 作業手順 ① 新しい作業平面の中心の座標を指定する ② 新しい作業平面のX 軸方向を座標で指定する。 ③ 新しい作業平面の Y 軸方向を指定する（法線方向は現在の作業平面から決まるため、二択となる）。 （５） Object 新しい作業平面の向きを指定するために、既存の図形を選択します。面を選択した場合、そのパラメータ中点に対応する点を新しい作業平面の中心とします。

曲線を選択する場合、そのパラメータ中点を新しい作業平面の中心とします。

（６） Default 作業平面を、ファイルを読み込んだ時点のものに戻します。ファイルに含まれるモデルに依存します。 （７） Vertical to CPlane 現在の作業平面の法線方向を、新しい作業平面の Y 軸として指定します。

作業手順 ① 新しい作業平面の中心の座標を指定する ② 新しい作業平面の X 軸の向きを指定する。 （８） Perpendicular to Curve 曲線上の一点を指定して、曲線を垂直に切断するような平面を作業平面とします。

作業手順 ① 新しい作業平面の中心の座標を指定する ② 新しい作業平面の X 軸の向きを指定する。 （９） X Axis 新しい作業平面の中心と、X 軸の向きを指定します。

作業手順 ① 新しい作業平面の中心の座標を指定する ② 新しい作業平面の X 軸の向きを指定する。 （１０） Z Axis 新しい作業平面の中心と、作業平面の法線方向を指定します。

作業手順 ① 新しい作業平面の中心の座標を指定する ② 新しい作業平面の法線方向を指定する （１１） World Top 　作業平面を世界座標系の XY 平面に一致させます。 （１２） World Right 作業平面を世界座標系の YZ 平面に一致させます。 （１３） World Front 作業平面を世界座標系の ZX 平面に一致させます。

### ロケート処理のスナップ機能

ロケートの要求がある時、そのロケートの点に関して、各種の制約を設けることができる。点はその制約条件に合う点が見つかれば、その点が優先してロケート点として採用される。これらのロケート点に制約を設けることをオブジェクトスナップと呼ぶ。オブジェクトスナップには現在次のようなものが提供されている： ? 格子点 CPlane上の格子点にスナップする。格子点のスナップに対してはカーソルの真ん中のが格子点上の点にスナップされるが、他のスナップ点のようにカーソルに種類の表示はない。 ? 端点 曲線の始点、または終点にスナップする。スナップされたとき、”ENＤ”がカーソルの近くに表示される。 ? 近傍点 図形上の近傍点にスナップする。スナップされたとき、”NEAR”がカーソルの近くに表示される。

格子点 | 端点 | 近傍点

? 中心点 図形上の中心点にスナップする。スナップされたとき、”CENTER”がカーソルの近くに表示される。

中心点：曲線の場合
中心点：曲面の場合

? ノット NURBにはノットと呼ばれる点が曲線内部に存在する。このノットにスナップする。スナップされたとき、”KNOT”がカーソルの近くに表示される。

ノットの場合