AutoLISP入門:条件分岐で図面をもっとスマートに!

Autolisp

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の条件分岐を使えば、図面の状態に応じた処理を柔軟に記述できます。ifcondを使いこなすことで、より賢いスクリプトが書けるようになります。次回はループ処理や関数の作り方についても紹介します!


コメント

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