リボンを表示/非表示に切り替えるコマンドを作りながら、AutoLISP関数 IF について説明していきます。
関数 IF
AutoLISP関数 IF は、使用頻度が高い関数の一つです。
もし〇なら、Xを実行。
そうでないなら、△を実行。
というように、プログラムを組むことができる機能を持っています。
(if (条件式)
(条件式の戻り値が T なら、こちらを実行)
(nil なら、こちらを実行)
)
(nil なら、こちらを実行) の部分を省略すると、
もし〇ならXを実行 だけになるよ。
条件式
条件式は、もし○なら、の〇の部分です。
条件式の戻り値がTなら、その次の一つ目の関数を実行して、戻り値がnilなら、二つ目の関数が実行されます。
では、このIF条件式を使って
もし”リボンが表示されていたら”「リボンを非表示にする」そうでなければ「リボンを表示する」
というプログラミングをしてみましょう。
リボンとは?
AutoCADを使っている方なら、名前は知らなくても存在は知っていると思います。
画面の上にある、アイコンが並んでいるアレです。
たまに作業スペースを少しでも広くしたい!と思うことがあると思います。
そんなときに便利なリボンを表示/非表示切り替える自作コマンドを今回作ります。
AutoLISPプログラム
この条件式と、リボンを表示/非表示するコマンドを使って、
(if (条件式)
(条件式の戻り値が T なら、こちらを実行)
(nil なら、こちらを実行)
)
に、
もし”リボンが表示されていたら”「リボンを非表示にする」そうでなければ「リボンを表示する」
を当てはめるとこうなります。
暫定コマンド名はRBNです。お好みに合わせて変更してください。
(defun c:RBN ()
(if (= (getvar "RIBBONSTATE") 1)
(command-s "._RIBBONCLOSE")
(command-s "._RIBBON")
);if
(princ))
AutoLISPの説明
プログラムの内容
条件式
IF を使って、
もしリボンが表示されていたら、リボンを非表示にする。そうでなければリボンを表示する。
をAutoLISPで書いています
システム変数 ”RIBBONSTATE”
“RIBBONSTATE”は、リボンの表示/非表示をコントロールしているシステム変数です。
値が0なら非表示、1なら表示されています。
getvar を使って、(getvar “RIBBONSTATE”) で、現在の値を得ることができます。
このシステム変数は読む専用で変更はできません。
リボンが表示なら T 非表示なら nilを戻す条件式
(if (条件式) に入れる、条件式を作りましょう。
ここでは、もしリボンが表示なら T 非表示なら nil という条件式が必要です。
(getvar “RIBBONSTATE”) で、リボンが表示なら1が戻り値です。
ですので、同じ値かどうかを調べる関数 = を使って、1ならT、そうでなければnil となるようにします。
(= (getvar "RIBBONSTATE") 1)
これで、(getvar “RIBBONSTATE”) の値が 1ならT、そうでなければnil が戻り値になる。という条件式ができました。
コマンド ”RIBBON” “RIBBONCLOSE”
条件式が、
Tの場合に実行する処理
nilの場合に実行する処理
を作っていきます。
“RIBBONSTATE”は、読み取り専用で setvar を使って値を変更することができないので、コマンドで表示/非表示を切り替えます。
リボンを表示させるコマンドは、”RIBBON“
リボンを非表示にするコマンドは ”RIBBONCLOSE” です。
条件式が、
Tなら(RIBBONSTATE の値が1なら) → コマンドRIBBONCLOSEを実行。
nillなら(そうでなければ)→ コマンドRIBBONを実行。
これをAutoLISPにすると、以下のようになります。
(if (= (getvar "RIBBONSTATE") 1) ;もしRIBBONSTATEが1なら
(command-s "._RIBBONCLOSE") ;リボンを非表示にする
(command-s "._RIBBON") ;そうでなければ表示する
);ifの終わり
複数の処理をしたい場合 progn
if だけでは、Tの場合とそうでない場合、関数一つづつしか実行できませんが、prognを使うことにより、複数の関数を1つにまとめて実行できるようになります。
複数の分岐を付けたい場合 cond
もしこれならこれ、そうでなければこっち。の2択ではなく、Aならこれ、Bならこっち、Cならそれ、Dならあれ、のようにいくつも複数の分岐を付けたいときは関数condを使います。
まとめ
- リボンとは、AutoCAD画面の上にあるアイコンが横並びしている場所のこと。
- AutoLISP関数 if は、「もし〇ならXを実行。そうでないなら△を実行」”をプログラムする
- 2つ目の処理を省略すれば、「もし〇ならXを実行。」だけになる。
- システム変数”RIBBONSTATE”の値が0ならリボンは非表示、1なら表示。
- リボンを表示させるコマンドは”RIBBON”
- リボンを非表示させるコマンドは”RIBBONCLOSE”
関連記事
IF条件式の使用例。
AutoCADコマンドの実行について。
システム変数について。
「条件式の戻り値が T なら、こちらを実行」のTってなんだ?という方はコチラの記事を。
Comments