if・cond|条件分岐と繰り返しを組み合わせる
ifで2つの処理を切り替え、condで複数の条件を順に判定します。比較演算とwhileの例で、条件式を組み立てる基本を確認します。
始める前に
先に確認すると読み進めやすい記事:
確認の手順
- 比較する数値を変数へ代入します。
- ifの条件を変え、実行される側を確認します。
- condで複数の条件を並べ、最初に成立する条件を確認します。
- whileの終了条件とカウンターの更新を照合します。
条件分岐とは?
条件分岐とは、「ある条件が真ならこの処理、偽なら別の処理」といったように、状況に応じて異なる処理を実行する仕組みです。AutoLISPでは、条件分岐はifとcondで記述します。whileとrepeatは、条件や回数に応じて処理を繰り返すための関数です。
ifcondwhilerepeat
if関数の基本構文
(if 条件式
式1
式2)- 条件式が真(T)の場合 → 式1を実行
- 条件式が偽(nil)の場合 → 式2を実行(省略可能)
使用例
(defun C:test1 ()
(setq a 2 b 3)
(if (= a b)
(princ "a = b")
(princ "a /= b"))
(princ))この例では、変数aとbが等しいかどうかを判定し、結果に応じて異なるメッセージを表示します。
複数の条件を扱うcond
condは、複数の条件を順に評価し、最初に真となった条件の処理を実行します。
(cond
((= a b) (princ "a = b"))
((> a b) (princ "a > b"))
(T (princ "a < b")))このように、condはifよりも柔軟に条件分岐を記述できます。
繰り返しと条件の組み合わせ
条件分岐は、繰り返し処理と組み合わせることでさらに強力になります。
whileループの例
(defun C:test3 ()
(setq i 0)
(while (< i 10)
(princ i)
(setq i (+ i 1)))
(princ))このコードは、iが10未満の間、iの値を表示し続けます。条件式(< i 10)が偽になるまでループが続きます。
比較演算子のバリエーション
AutoLISPでは、条件式に使える比較演算子が豊富です:
| 演算子 | 意味 | 例 |
|---|---|---|
= | 等しい | (= a b) |
/= | 等しくない | (/= a b) |
< | より小さい | (< a b) |
<= | 以下 | (<= a b) |
> | より大きい | (> a b) |
>= | 以上 | (>= a b) |
これらを組み合わせることで、複雑な条件分岐も簡潔に記述できます。
まとめ
AutoLISPの条件分岐は、プログラムの流れを制御するための基本中の基本。ifやcondを使いこなすことで、より柔軟で効率的なスクリプトが書けるようになります。まずは簡単な例から試してみて、徐々に応用へとステップアップしていきましょう。
結果の確認
nil以外の値は条件が成立したものとして扱われます。whileとrepeatは繰り返しの関数で、if・condとは役割が異なります。
参照資料
対象環境・動作確認
AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。