Grread

提供:GizmoLabs - だいたい CAD LISP なサイト
2009年11月16日 (月) 22:45時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(grread [track] [allkeys [curtype]])


機能
いずれかの入力デバイスから値を読み取る。
特殊なLISPルーチンのみが、この関数を必要とし、通常LISPへの入力は、getxxx 関数で取得する。
引数
  • track : nil 以外の値を与えると、ポインティング デバイスからリアルタイムに座標を取得することができる。
  • allkeys : grread に実行させる機能のコードを示す整数。allkeys はビットコード値で、値を加算して機能を組み合わせることができ、次の値を指定することができる。
1 (ビット 0) ドラッグ モード座標を返す。このビットが設定されている時ユーザがボタンの選択やキーを押したりせずにポインティング デバイスを移動すると、1 番目のメンバーがタイプ 5で 2 番目のメンバーが現在のポインティング デバイス(マウスまたはディジタイザ)の(X,Y)座標であるリストを返す。これによって CADはドラッギングを実行。
2 (ビット 1) 全てのキーの値を返す。ファンクションキーやカーソル キーのコードも含まれる。ユーザがカーソル キーを押してもカーソルは移動しない。
4 (ビット 2) curtype 引数で渡された値を使用して、カーソル表示をコントロールする。
8 (ビット 3) ユーザが[Esc]を押しても、「エラー:」コンソール ブレイク メッセージを表示しない。
  • curtype :表示するカーソルのタイプを示す整数。allkeys 引数のビット 2 が設定されていないと、curtype 引数は効力を持たない。curtype 引数は、grread 関数が呼び出されている間のカーソル タイプにのみ影響する。
curtype 引数に次の値の 1 つを指定することができる。
0 通常のクロスヘア カーソル表示。
1 カーソルは表示されない(クロスヘア カーソルなし)。
2 オブジェクト選択のための ターゲット ボックス表示。


戻り値
grread 関数が返すリストの 1 番目の要素は、入力のタイプを示すコード。2 番目の要素は整数か点のどちらかで、入力のタイプで決定される。

戻り値の一覧を次に示す。

grread 関数の戻り値
1 番目の要素 2 番目の要素
入力のタイプ 説 明
2 キーボード入力 各種 文字コード
3 選択された点 3D 点 点の座標
4 スクリーン、プルダウン メニュー項目

(ポインティングデバイスからの)

0~999
1001~1999
2001~2999
3001~3999
-(中略)-
16001~16999 
スクリーン メニュー ボックス番号
POP1 メニュー ボックス番号
POP2 メニュー ボックス番号
POP3 メニュー ボックス番号
-(中略)-
POP16 メニュー ボックス番号 
5 ポインティング デバイス (トラッキング可能な場合のみ) 3D 点 ドラッグ モード座標
6 BUTTONS メニュー項目
0~999
1000~1999
2000~2999
3000~3999 
BUTTONS1 メニュー ボタン番号
BUTTONS2 メニュー ボタン番号
BUTTONS3 メニュー ボタン番号
BUTTONS4 メニュー ボタン番号 
7 TABLET1 メニュー項目 0~32767 デジタイズ ボックス番号
8 TABLET2 メニュー項目 0~32767 ディジタイズ ボックス番号
9 TABLET3 メニュー項目 0~32767 ディジタイズ ボックス番号
10 TABLET4 メニュー項目 0~32767 ディジタイズ ボックス番号
11 AUX メニュー項目
0~999
1000~1999
2000~2999
3000~3999 
AUX1 メニュー ボタン番号
AUX2 メニュー ボタン番号
AUX3 メニュー ボタン番号
AUX4 メニュー ボタン番号 
12 ポインタ ボタン(タイプ6 またはタイプ 11 の後に続く) 3D 点 点の座標


サンプル
grread 関数を使用してユーザ入力を処理する
grread 関数がアクティブなときに [Esc] を入力すると、(allkeys 引数で禁止していなければ)AutoLISP プログラムはキーボード ブレークで中止さ れる。 これ以外の入力は grread 関数に直接渡され、入力デバイスをアプリケーションで完全にコントロールできる。
スクリーン メニューまたはプルダウン メニュー ボックス内でユーザがポインタ ボタンを押すと、grread 関数はタイプ 6 またはタイプ 11 のコー ドを返しすが、その後の呼び出しでタイプ 12 のコードを返しさない。 図面領域内でポインタ ボタンを押した場合にのみ、タイプ 6 またはタイプ 1 1 の後にタイプ 12 のコードが続く。
ポインタ ボタンまたは AUX 補助ボタンで別の操作をしようとする前に、コード 12 のデータを必ずクリアする必要がある。
これを行うには、次のよう に grread 関数をネストする。
(setq code_12 (grread (setq code (grread))))
: この手順では、デバイスからのストリーム入力としてコード 12 リストの値を取得する。