getxxx|点・数値・文字・角度の入力を受け取る
getpoint、getint、getreal、getstringなどで利用者の入力を取得します。入力の種類、initgetの制約、角度の戻り値を確認します。
始める前に
先に確認すると読み進めやすい記事:
確認の手順
- 受け取りたい値の種類に合わせてgetxxx関数を選びます。
- 何を入力するか分かるプロンプトを付けます。
- 必要な制約やキーワードをinitgetで設定します。
- 入力値・空入力・キャンセルを確認し、角度はラジアンで返る点を確かめます。
getxxx関数とは?
getxxx関数は、ユーザーが特定のデータを入力するまで待機し、その値を取得して返す関数群です。関数名の「xxx」部分には、取得するデータの種類に応じた名前が入ります。
例えば:
| 関数名 | 入力の種類 |
|---|---|
getint | 整数 |
getreal | 実数または整数 |
getstring | 文字列 |
getpoint | 座標点(コマンドラインまたは画面上) |
getcorner | 対角点(矩形のコーナー) |
getdist | 距離(数値または2点間) |
getangle | 角度(設定に応じた基準角) |
getorient | 方向角(常に右方向が0度) |
getkword | キーワード(事前定義が必要) |
使い方のポイント
1. prompt引数でメッセージ表示
すべてのgetxxx関数には、ユーザーに表示するプロンプトメッセージを指定できます。例:
(getint "\n整数を入力してください: ")このようにすることで、ユーザーに何を入力すべきか明確に伝えることができます。
2. initgetとの併用で入力制御
getkwordなどの関数では、initgetを使って入力可能なキーワードを事前に定義する必要があります。
(initget "はい いいえ")
(setq ans (getkword "\n続行しますか? [はい/いいえ]: "))これにより、ユーザーが指定されたキーワード以外を入力した場合に再入力を促すことができます。
getangleとgetorientの違い
角度を取得する関数には getangle と getorient の2種類がありますが、基準角の扱いが異なります。
getangle:返される角度はANGBASEを0の基準とし、反時計回りに増えるラジアンです。入力時の設定と戻り値を区別します。getorient:返される方向角は右を0とし、反時計回りに増えるラジアンです。戻り値の基準はANGBASEとANGDIRに左右されません。
この違いを理解して使い分けることで、図形の回転や方向指定がより正確に行えます。
実用例:矩形の2つの角を取得する
以下は、矩形を描く準備として2つの角の座標を受け取る例です。作図処理はコメントの位置へ追加します。
(defun c:DrawRect ( / pt1 pt2)
(setq pt1 (getpoint "\n始点を指定してください: "))
(setq pt2 (getcorner pt1 "\n終点を指定してください: "))
;; pt1とpt2から矩形を描画する処理を追加
)このように、getpointとgetcornerを組み合わせることで、直感的な操作が可能になります。
まとめ
getxxx関数は、AutoLISPでユーザー入力を受け取るための基本ツールです。種類ごとの特性を理解し、promptやinitgetと組み合わせることで、より堅牢で使いやすいスクリプトが作成できます。
結果の確認
表示上の角度と、LISPへ返る角度の基準を区別します。getangleはANGBASEを基準とする相対角度、getorientは右を基準とする方向角を返します。
参照資料
対象環境・動作確認
AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。