ユーザー入力関数の種類
AutoCAD ユーザーからの入力を受け取る関数は、複数の図形を選択してもらい【選択セット】を得るものと、単一の図形や数値を得るものとに分かれます。【選択セット】については後述し、ここでは単一のユーザー入力関数について取り上げます。
ユーザー入力関数は、色指定やファイル名指定など特別のダイアログが用意されているものと、【コマンドライン】で使用し、コマンドのオプションなどで用いられるキーワード入力を受け付けることができるものがあります。例外的に任意の文字列を得る getstring 関数だけは、その機能上キーワードは受け付けません。キーワードは、直前に initget 関数を使用することで指定します。
キーワード入力できるユーザー入力関数は次の通りです。ユーザーが何も入力しないで ENTER キーを押した場合の空入力は nil を返します。
関数名 | 目的 | ユーザーの入力 | 戻り値のデータタイプ |
---|---|---|---|
getkword | キーワード取得 | キーワードを入力 | 文字列 |
getint | 整数を取得 | 整数を入力 | 整数 |
getreal | 実数を取得 | 実数を入力 | 実数 |
getpoint | 座標取得 | 点をクリック、または座標、距離を入力 | 座標を表すリスト |
getcorner | 矩形領域の2点目を取得 | 2点目をクリック、または座標を入力 | 座標を表すリスト |
getdist | 距離を取得 | 2点をクリック、または実数を入力 | 実数 |
getorient | 角度を取得 | 2点をクリック、または実数(度)を入力 | 実数(ラジアン) |
getangle | ANGBASEからの角度を取得 | 2点をクリック、または実数(度)を入力 | 実数(ラジアン) |
entsel | 一つの図形を取得 | 一つの図形を選択 | 【図形名】を含んだリスト |
nentselp | 一つの図形、複合図形の場合は一つの従属図形を取得 | 一つの図形を選択 | 【図形名】を含んだリスト |
他に nentsel 関数がありますが、nentselp 関数の亜種なので説明は割愛します。座標の座標系は、AutoCAD ユーザー目線から UCS による値が返ります。WCS などで処理を行いたい場合は、trans 関数で座標変換を行う必要があります。
キーワード入力できないユーザー入力関数は getString 関数です。空入力の場合は、空の文字列("")が返ります。
関数名 | 目的 | ユーザーの入力 | 戻り値のデータタイプ |
---|---|---|---|
getString | 文字列を取得 | 文字列を入力 | 文字列 |
なお、【選択セット】を得る ssget 関数は、それ独自のキーワードが設定されていますので、プログラムから設定することはできません。
これらの入力関数では、AutoCAD ユーザーが ESC キーを押すと、「*キャンセル*」と表示されエラーが発生します。
キーワード対応入力関数の初期化
AutoLISP関数 |
---|
(initget [bits] [string]) |
bits:整数 string:文字列 |
ユーザー入力関数の呼び出しで適用される制約とキーワードを設定します。 |
戻り値:nil |
initget 関数は、ユーザーに入力を求める関数を呼び出す前に、ユーザーが入力できる内容をあらかじめ制限して、不正な入力がないようにします。
getstring 関数のみ initget 関数による制約を受けません。initget 関数は入力関数の直前に書くようにします。なお、initget 関数で初期化しなくても制限が課せられないだけで入力関数は使えます。制限は次の一つの入力関数にだけ作用します。さらに入力関数を使う場合は、改めて initget 関数を使います。
bits は、複数のオプションを指定したいときは、各整数の合計を指定します。
bits引数 | 説明 |
---|---|
1 | 何も入力しないでEnterキーを押すことを禁止します。 |
2 | 整数の0を入力することを禁止します。 |
4 | 整数の負の値を入力することを禁止します。 |
8 | 現在の図面範囲の外側の座標を入力することを禁止します。 |
16 | 未使用 |
32 | ユーザー入力補助のラバーバンドを、実線ではなく点線で描画します。 |
64 | getdist 関数への Z 座標の入力を禁止します。 |
128 | 図形、及び座標等の数値を求めるコンテキストやキーワードの制限を設けず、任意のキー入力ができるようにします。このオプションはオプション1より優先されます。 |
256 | 「任意の距離入力」が優先されるところを、「直接距離入力」が優先されるようにします。 |
512 | 3D オブジェクトに対して、カーソルがオブジェクトの面のエッジに近づいたとき、面を基準とする一時的なダイナミックUCSが機能するようにします。ダイナミックUCSは、カーソルが離れたり座標を取得したりした後はもとの設定に戻ります。面が平面の場合だけ有効で、曲面のときは機能しません。 |
1024 | Z 方向の直交モード、極トラッキング、オブジェクトトラッキングを一時的に無効にします。 |
bits 引数の例は以下のとおりです。
bits引数 | bitsの内容 | 説明 |
---|---|---|
5 | 1+4 | getint 関数を使用すると、正の整数が得られます。 |
6 | 1+2+4 | getint 関数を使用すると、0 以上の整数が得られます。 |
string 引数は、キーワードの種類を指定します。キーワードは空白で区切ったアルファベット小文字の文字列で指定します。短縮入力を有効にしたい場合は、キーワードの該当部分を大文字にします。ユーザー側は大文字小文字を区別して入力する必要はありません。短縮形が指定されない場合は、ユーザーはキーワードをフルスペルですべて入力する必要があります。
string 引数 | 説明 |
---|---|
“Yes No Cancel” | yes no cancelというワードと、それぞれに対応した y n c を含んだ文字がキーワードになります。 (”Yes”の場合は、”y”、”ye”、”yes”という入力でキーワードにヒットします) |
“Modify eXit” | modify exitというワードと、それぞれに対応した m x の文字を含んだ文字がキーワードになります。 (”eXit”の場合は、”x”、”ex”、”exi”,”xi”、”xit”、”exit” という入力でキーワードにヒットします) |
短縮入力がキーワードのつづりと異なるものとしたい場合は、”,”(カンマ)で区切って指定します。
string 引数 | 説明 |
---|---|
“Color linetype,LT” | color linetypeというワードと、Colorに対応した c を含んだ文字、そして lt がキーワードになります。 |
initget 関数でキーワード指定されたユーザー入力関数で、AutoCAD ユーザーがキーワードを入力すると、それが短縮されたものであっても、キーワードのフルスペルの文字列を返します。
_$ (progn (initget 0 "Ok Cancel") (getkword)) ; c と入力
"Cancel"
キーワードは、国や地域で異なる言語に依存したものを追加することができます。詳しくは initget 関数のヘルプを見てください。
以降の ユーザー入力関数でユーザーに入力をうながすメッセージの表示は Visual LISP の【コンソール】の方には表示されず、【コマンドライン】の方にのみ表示されます。そのため、実行例は、【コマンドライン】の表示を示しています。