お知らせ

--------------------------------------------------

プログラム作成/コンサルティングの申し込みはこちら

--------------------------------------------------

2010年2月6日土曜日

If、while、cond 関数(AutoCAD 2010)

プログラムを作成するとき、「もし~なら***、そうでないなら***」とか「~の間は繰り返す」とか「A のときは***、B のときは***、C のときは***」といった条件文を作成する必要がでてくると思います。

使用例
(if <条件>
    <条件> が真の場合に実行する内容
    <条件> が偽の場合に実行する内容
)

例えば以下の内容を test.lsp というファイルとして保存し、ロードして test コマンドを実行したとします。

(defun C:TEST ()
    (setq a (getint "\n数値を入力:"))
    (if (>= a 10)
        (alert "10 以上の数値が入力されました。")
        (alert "10 未満の数値が入力されました。")
    )
)

そうすると、「数値を入力:」に対して 10 以上の数値を入力すると、「10 以上の数値が入力されました。」と表示され、10 未満の数値を入力すると、「10 未満の数値が入力されました。」と表示されます。

<注意!!>
<条件> が真 または 偽の場合に実行する内容が複数の場合は、progn でまとめる必要があります。以下に例を示します。

(defun C:TEST ()
    (setq a (getint "\n数値を入力:"))
    (if (>= a 10)
      (progn
        (alert "10 以上の数値が入力されました。")
        (alert "以上でコマンド終了です。")
      )
      (progn
        (alert "10 未満の数値が入力されました。")
        (alert "以上でコマンド終了です。")
      )
    )
)


(while <条件>
    <条件> に当てはまる場合に実行する内容
)

例えば以下の内容を test.lsp というファイルとして保存し、ロードして test コマンドを実行したとします。

(defun C:TEST ()
    (setq n 5)
    (while (> n 0)
        (alert "while 文実行中です。")
        (setq n (- n 1))
    )
)

そうすると、「while 文実行中です。」という表示が 5 回繰り返し表示されます。


(cond
    <条件1><条件1 の場合に実行する内容>
    <条件2><条件2 の場合に実行する内容>
    <条件3><条件3 の場合に実行する内容>
                    ・
                    ・
    T <どの条件にも当てはまらない場合に実行する内容>
)

例えば以下の内容を test.lsp というファイルとして保存し、ロードして test コマンドを実行したとします。

(defun C:TEST ()
    (setq a (getint "\n数値を入力:"))
    (cond
        ((= a 1) (alert "1 が入力されました。"))
        ((= a 2) (alert "2 が入力されました。"))
        ((= a 3) (alert "3 が入力されました。"))
        (T (alert "1 でも 2 でも 3 でもない数値が入力されました。"))
    )
)

そうすると、「数値を入力:」に対して 1(または 2 や 3)を入力すると、「1 (または 2 や 3)が入力されました。」と表示され、1、2、3 以外の数値を入力すると、「1 でも 2 でも 3 でもない数値が入力されました。」と表示されます。

0 件のコメント:

コメントを投稿