図描きの備忘録

日々の業務の時間短縮。残業しないで帰る事を目指し、悪戦苦闘中。AutoCAD、Lisp、効率化、自動化、合理的、プログラミング、資産運用勉強中

AutoCAD Lisp 入門 - 9 - 複数の選択肢の条件式

2つに絞れない


こんにちは!

エカキオです!

今回の記事では、条件式で複数のオプションを付けられるものにしたいと思います。

はい

いいえ

で答えられないことってありますよね。

まぁまぁとか、
ぼちぼちとか、
微妙とか。
AとかBとかCとか!!

そんな感じのオプションで使えます。
(違うかなー?)

入力を規制する

では、さっそく。

自由に入力できる!とは言っても、
ある程度の範囲の中で入力してもらいたいですよね。

そんな時に使うのはこの関数。

(initget)関数

(initget ○ △)

○:制限オプション
△:入力文字の指定

○に関しては、
まずは1を入力すると覚えてください。
その場合、なにも入力せずEnterを入力するとエラーとなり再度入力を求められます。

では、具体的に書いてみます。

(initget 1 "a b c")

説明します。

△部分について
「a」か「b」か「c」のみ入力できます。
ということです。

ちなみにこの(initget)関数は、次の文に(get〜)関数がある場合に有効になります。

実際の書き方としては、

(initget 1 "a b c")
(setq an1 (getkword "¥n選べます a / b / c :"))

こんな感じです。

いざ多数条件分岐

ここから多数条件分岐の解説に入っていきます。
心の準備はよろしいでしょうか!?

(cond)関数

こちらは複数の条件分岐に使います。

書き方はこうです。

(cond ((○)△)((○)△)((○)△)...(t) )

○:条件
△:条件がnil以外になるときに実行されるもの

上から判断していき、条件が達成されると△が実行され、(cond)関数が終了します。
どれにも該当しない場合エラーとなるため、最後は(t)を入れ、(cond)関数を終了させましょう。

(initget 1 "a b c")
(setq an1 (getkword "¥n池に落とした斧は? 金の斧(a)/銀の斧(b)/ボロイ斧(c):"))
(cond
     ((= an1 "a") (princ "¥nあなたは嘘つきです。")) 
     ((= an1 "b") (princ "¥nあなたが嘘つきです。"))
     ((= an1 "b") (princ "¥nあなたが正直者です。")) 
     (t)
)

(getkword ~)の~部分は個人の自由です。

" 池に落とした手袋は? 金色→a , 銀色→ , 白→c >>"

とかでも、なんでもOKですよ。
要は入力する際にわかりやすくするということが大事です。


いかがでしたでしょうか。

多数の条件分岐について紹介してきました。

実際の使い方としては、一つのコマンドに色々な機能を持たせて、
使用者の要望に合わせて実行させる。というような使い方が多いかと思います。

だいぶ、Lispの使い方もわかってきて、そろそろオリジナルコマンドを
自分で作れるようになってきたのではないでしょうか。

近いうちに、「Lisp 実践編」シリーズを紹介していきたいので、
今後も遊びに来ていただけますと幸いです。

入門編シリーズもまだまだ紹介予定ですけどね。

では、この辺で。

エカキオ

Related Posts Plugin for WordPress, Blogger...