AutoCADのカスタマイズや自動化に欠かせないAutoLISP。その中でも、ユーザーからの入力を受け取るための「getxxx関数」は、「ユーザーとやり取りするスクリプトを作るときに、とても役立つ基本の機能です。」
この記事では、代表的なgetxxx関数の種類と使い方、そしてそれぞれの関数がどのような入力を受け取るのかをわかりやすく解説します。
🧩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
に依存し、方向はANGDIR
によって時計回り・反時計回りが決まります。getorient
:常に右方向(東方向)が0度で、時計回りが正方向。
この違いを理解して使い分けることで、図形の回転や方向指定がより正確に行えます。
🛠️実用例:矩形の作成
以下は、ユーザーから2点を取得して矩形を描く簡単なスクリプト例です。
(defun c:DrawRect ( / pt1 pt2)
(setq pt1 (getpoint "\n始点を指定してください: "))
(setq pt2 (getcorner pt1 "\n終点を指定してください: "))
;; pt1とpt2から矩形を描画する処理を追加
)
このように、getpoint
とgetcorner
を組み合わせることで、直感的な操作が可能になります。
🧪まとめ
getxxx関数は、AutoLISPでユーザー入力を受け取るための基本ツールです。種類ごとの特性を理解し、prompt
やinitget
と組み合わせることで、より堅牢で使いやすいスクリプトが作成できます。
AutoCADの自動化を一歩進めたい方は、ぜひこれらの関数をマスターしてみてください!
コメント