AutoCADのカスタマイズに欠かせないAutoLISP。その中でも「条件分岐」は、処理の流れを制御するための重要な要素です。この記事では、条件分岐の基本構文から、実際の使用例までをわかりやすく解説します。
🧠 条件分岐とは?
条件分岐とは、「ある条件が真ならこの処理、偽なら別の処理」といったように、状況に応じて異なる処理を実行する仕組みです。AutoLISPでは、主に以下の関数を使って条件分岐を記述します。
if
cond
while
repeat
🔍 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
を使いこなすことで、より柔軟で効率的なスクリプトが書けるようになります。まずは簡単な例から試してみて、徐々に応用へとステップアップしていきましょう。
コメント