AutoLISPの基礎早見表|入力・計算・図形操作
ファイルの保存、変数、入力、リスト、図形操作をまとめて振り返るページです。各テーマの最小例を確認し、詳しい解説へ進めます。
始める前に
先に確認すると読み進めやすい記事:
確認の手順
- .lspファイルの保存と読み込みの手順を確認します。
- 変数・数値・文字列の違いを短い式で試します。
- 入力と出力、リスト操作の例を順に読みます。
- 練習図面で四角形の例を確認し、不明な関数は個別の解説で調べます。
1. プログラミングの基本原則
AutoLisp では、プログラムファイルの拡張子を .lsp にしないと AutoCAD が読み込みません。
シンプルなテキストエディタ(Notepad など)でコードを書き、次の3つの流れを意識すると整理しやすくなります。
- OPERATOR:ユーザーからの入力を受け取る
- ARGUMENT:受け取った入力を加工・計算する
- COMMAND:加工した結果を使って AutoCAD コマンドを実行
さらに、プログラムを書く前に「英語で一連の動作を紙に書き出す(チャーティング)」と、後で振り返るときに大きな助けになります。
2. 変数とデータ型
AutoLisp の変数は英文字で始まれば自由な名前を付けられ、1つの変数に複数の値(リスト)を格納できます。
- 整数(integer):小数点なし、例
123 - 実数(real):小数点あり、例
12.34 - 文字列(string):最大 100 文字
- リスト(list):
(x y)のように複数要素 - アトム(atom):要素数 1 のリストと同等
値の型は (type var) で調べられます。
3. 入出力コマンド
ユーザーから値を取得する代表的なコマンドと簡単な使い方です。
getpoint:画面上で点を取得getint:整数を入力getreal:実数を入力getstring:文字列を入力getdist:点間距離を取得getangle:角度を取得(ラジアン)getkword:キーワード入力getvar:AutoCAD システム変数の値を取得
たとえば、ユーザーに点を選んでもらうにはこんなコードを使います:
(setq pt (getpoint "\nポイントを選択してください: "))4. 代入と出力
AutoLisp での代入は (setq) が基本です。= は比較演算子なので注意しましょう。
- setq:変数に値をセット
- prompt:コマンドラインにメッセージ表示
- terpri:改行
- princ/print:式の評価結果を表示
例:ユーザーに入力を促してそのまま出力する
(setq age (getint "\n年齢を入力してください: "))
(princ (strcat "あなたの年齢は " (itoa age) " 歳です。"))5. リスト操作と関数
リストを分解・再構築する主な関数です。
car:リストの最初の要素cdr:リストの 2 枚目以降の要素cadr:2 番目の要素cons:要素を先頭に付けて新リスト生成append:複数リストを結合length:要素数member:要素検索assoc:アソシアティブリスト検索
角度の変換や文字列操作関数も豊富に用意されています。
6. エンティティ操作
AutoCAD の図形は「エンティティ」としてデータベースに格納され、以下の手順で読み書きします。
ssget/entselで選択ssname/entgetでエンティティリスト取得assocで属性(レイヤー、座標など)を抽出substやentmodで変更を反映
コード例:選択したオブジェクトのレイヤーを一括変更
(defun c:ChangeLayer (/ ss tgtList tgtLayer idx)
(setq ss (ssget "\n変更するオブジェクトを選択: "))
(setq tgtList (entsel "\nレイヤーを参照するオブジェクトを選択: "))
(setq tgtLayer (cdr (assoc 8 (entget (car tgtList)))))
(repeat (setq idx (sslength ss))
(setq ent (entget (ssname ss (setq idx (1- idx)))))
(entmod (subst (cons 8 tgtLayer) (assoc 8 ent) ent))
)
(princ)
)7. 実践サンプル:四角形を描く
最初の一歩として、マウスで二点指定して四角形を描くプログラムを紹介します。
(defun c:Rect (/ p1 p2 p3 p4)
(setq p1 (getpoint "\n左下点: ")
p3 (getcorner "\n右上点: "))
(setq p2 (list (car p1) (cadr p3))
p4 (list (car p3) (cadr p1)))
(command "LINE" p1 p2 p3 p4 "C")
(princ)
)この程度のコードなら十数行で仕上がり、すぐにカスタマイズできるのが AutoLisp の魅力です。
まとめと次のステップ
このチュートリアルでは、AutoLisp の基礎概念から入出力、リスト操作、エンティティ制御、実践サンプルまでを一気に学びました。次は以下のトピックに挑戦してみましょう!
- ファイル操作(
open/read-line/write-line) - エラー処理とデバッグ(
vl-file-*関数) - ダイアログボックス/パレットの作成
- Visual LISP API を使った複雑なデータ操作
結果の確認
分からない処理をまとめて実行せず、入力・計算・出力に分けて結果を確認します。最初から学ぶ場合は5つの入門レッスンを順に読んでください。
参照資料
対象環境・動作確認
AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。