AutoLISPの条件分岐をマスターしよう:基本から応用まで

Autolisp

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))

この例では、変数abが等しいかどうかを判定し、結果に応じて異なるメッセージを表示します。

🧩 複数の条件を扱うcond

condは、複数の条件を順に評価し、最初に真となった条件の処理を実行します。

(cond
  ((= a b) (princ "a = b"))
  ((> a b) (princ "a > b"))
  (T       (princ "a < b")))

このように、condifよりも柔軟に条件分岐を記述できます。

🔁 繰り返しと条件の組み合わせ

条件分岐は、繰り返し処理と組み合わせることでさらに強力になります。

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の条件分岐は、プログラムの流れを制御するための基本中の基本。ifcondを使いこなすことで、より柔軟で効率的なスクリプトが書けるようになります。まずは簡単な例から試してみて、徐々に応用へとステップアップしていきましょう。

コメント

タイトルとURLをコピーしました