+CADLabo.comCAD / LISP / AUTOMATION
AutoLISP初心者講座

if・cond|条件分岐と繰り返しを組み合わせる

AutoLISPの基本・図形操作のTips一覧
要点

ifで2つの処理を切り替え、condで複数の条件を順に判定します。比較演算とwhileの例で、条件式を組み立てる基本を確認します。

始める前に

先に確認すると読み進めやすい記事:

確認の手順

  1. 比較する数値を変数へ代入します。
  2. ifの条件を変え、実行される側を確認します。
  3. condで複数の条件を並べ、最初に成立する条件を確認します。
  4. whileの終了条件とカウンターの更新を照合します。

条件分岐とは?

条件分岐とは、「ある条件が真ならこの処理、偽なら別の処理」といったように、状況に応じて異なる処理を実行する仕組みです。AutoLISPでは、条件分岐はifとcondで記述します。whileとrepeatは、条件や回数に応じて処理を繰り返すための関数です。

  • 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を使いこなすことで、より柔軟で効率的なスクリプトが書けるようになります。まずは簡単な例から試してみて、徐々に応用へとステップアップしていきましょう。

結果の確認

nil以外の値は条件が成立したものとして扱われます。whileとrepeatは繰り返しの関数で、if・condとは役割が異なります。

参照資料

対象環境・動作確認

AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。