AutoCADのカスタマイズに欠かせないAutoLISP。今回は、図面処理の自動化に役立つ「条件分岐」について解説します。条件分岐を使えば、状況に応じた処理を柔軟に行えるようになります。
🔍 条件分岐とは?
条件分岐とは、「ある条件が真ならAを実行、偽ならBを実行」といった判断をプログラムにさせる仕組みです。AutoLISPでは主に以下の構文が使われます:
if
cond
when
unless
✅ if の基本構文
(if 条件式
真の場合の処理
偽の場合の処理)
例:数値が正かどうかを判定
(setq num 5)
(if (> num 0)
(princ "正の数です")
(princ "0以下の数です"))
🔄 cond で複数条件を分岐
cond
は複数の条件を順番に評価し、最初に真となった条件の処理を実行します。
(cond
((< num 0) (princ "負の数です"))
((= num 0) (princ "ゼロです"))
((> num 0) (princ "正の数です")))
これは if
よりも複雑な条件分岐に向いています。
🧠 when と unless の使いどころ
when
:条件が真のときだけ処理を実行unless
:条件が偽のときだけ処理を実行
(when (> num 0)
(princ "これは正の数です"))
(unless (= num 0)
(princ "ゼロではありません"))
🧪 実用例:レイヤーが存在するかチェック
(defun c:CheckLayer ()
(setq layerName "MyLayer")
(if (tblsearch "layer" layerName)
(princ (strcat layerName " は存在します"))
(princ (strcat layerName " は存在しません")))
(princ))
このコードは、指定したレイヤーが図面に存在するかどうかを判定します。
✨ まとめ
AutoLISPの条件分岐を使えば、図面の状態に応じた処理を柔軟に記述できます。if
やcond
を使いこなすことで、より賢いスクリプトが書けるようになります。次回はループ処理や関数の作り方についても紹介します!
コメント