Sds grread

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
int sds_grread (int bits, int *answertype, struct sds_resbuf *answer);


機能
いずれかの入力デバイスから値を読み取る。
引数
  • bits : ビット(下表参照)
  • *answertype : 読み取ったタイプ(下表参照)
  • *answer : 読み取った値の内容(下表参照)
戻り値
RTNORM または RTCAN。


bit の値
ビット値 意味
1 3次元座標を返す。
2 キーストロークを返すが、マウスは動かさない。カーソルとファンクションキーを含むすべてのキーコードを返す。
4 カーソルタイプを選びたい場合に指定する。(恐らく動いてない)
8 "console black"を表示してループから抜け出す。

メモ:IJCAD のドキュメントには cursor タイプについて書いてあるが、そんな引数ないので恐らくLISPのドキュメントからから持ってきただけで意味を成してないので割愛した。


以下の表は、情報がどのように返されるかについて表している。 たとえば、"I" を入力した場合、(2 108) のリストで変えされる。

返り値
入力タイプ 返り値(タイプ) 返り値(内容)
キーボード 2 文字コード
点選択 3 3D点リスト
プルダウンメニュー 4 1,001 から 1,999 POP1
2,001 から 2,999 POP2
...
16,001 から 16,999 POP16
マウスカーソル 5 3D点リスト


サンプル
int type;
sds_resbuf readinput;
sds_grread(2,&type,&readinput); // 2 だとキー入力が返ってくる。

switch(type){
  case 2: sds_printf("\nキーボードを使用しましたね"); break;
  case 3: sds_printf("\n点を指示しましたね。"); break;
  // ほかのケース
  break;
}

switch(readinput.restype){
  case RTREAL: sds_printf("\nその値は %f 。",readinput.resval.rreal)
               break;
  case RTPOINT: sds_printf("\n2D 点は %f,%f 。",readinput.resval.rpoint[X],readinput.resval.rpoint[Y]);
               break;
  // 他のケース
  }