Sponsored links

【AutoLISP 条件式】IF条件式(もし○ならX、そうでないなら△)でリボンの表示切替えコマンド

Sponsored links
基礎編
Sponsored links

リボンを表示/非表示に切り替えるコマンドを作りながら、AutoLISP関数 IF について説明していきます。

Sponsored links

関数 IF

AutoLISP関数 IF は、使用頻度が高い関数の一つです。

もし〇なら、Xを実行。
そうでないなら、△を実行。

というように、プログラムを組むことができる機能を持っています。

(if (条件式) 
  (条件式の戻り値が T なら、こちらを実行)
  (nil なら、こちらを実行)
)
Jagaimo
Jagaimo

 (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