Sponsored links

【AutoLISP 初めの一歩】(princ)

Sponsored links
初めの一歩
Sponsored links

コマンドの最後は(princ)で終わるのが一般的。

単に最後の戻り値をコマンドラインに表示させないためで、プログラムの機能にはあっても無くて問題ないよ。

Sponsored links

関数 princ

princ は、コマンドラインに文字列を表示させる機能を持った関数です。

しかし、それ以外にもprincには、引数を省略したら何も戻り値を戻さない。という役割があります。

引数は関数が必要とする情報ですね。princに何も情報付けずに (princ)として使うと

Jagaimo
Jagaimo

(princ)

    

AutoCADは何も返事しません。

さて、なぜこの何も戻さない機能が重要なのかと言うと、AutoLISPで作ったコマンドは、最後の戻り値をコマンドラインに表示します。なので、余計な文字や数字がコマンドラインに出てきます。

出てきても問題は無いのですが、(princ)を最後に付けて、最後の戻り値を表示させない方がキレイなプログラムだと考える人は多いです。

なので、コマンド関数を作るときには、最後に(princ)を入れましょう。

例えば

これは、現在画層名をメッセージボックスで表示するコマンド GASOU です。

(defun c:GASOU ()
(alert (getvar “clayer”))
)

これを実行すると、

alert には戻り値が無いので、何もないを意味する nil が最後の戻り値になり、コマンド終了後に表示されます。

しかし最後に(princ)を付けると、

(defun c:GASOU ()
    (alert (getvar "clayer"))
(princ)
)

戻り値が空、何もないを意味するnilさえ表示されません。

これだけのことです。
あっても無くてもプログラムの実行に問題は無いし、コマンドラインに関係ない情報が出てきても気にならない人の方が多いと思います。

しかし、最後に(princ)があればコマンドプログラムの最後だなと、プログラミングしているときにわかりやすいです。

このサイトに限らず、この先、誰かが作ったAutoLISPコマンドを見た時に、プログラムの最後に(princ)を見かけることが多いと思います。

プログラムの機能としては得に意味はありません。
が、その方がキレイだし、邪魔になるものではないので、自作コマンドを作るときには(princ)で終えることをおススメします。

まとめ

  • 関数 princ は、コマンドラインに文字列を表示させる機能がある。
  • 関数 princ は、引数を省略すると、戻り値も何も戻さないという機能がある。
  • AutoLISPプログラムを実行すると、最後の戻り値がコマンドラインに表示させる。
  • コマンド関数を定義するときは、(princ)を最後に入れると余計な文字が実行時にでてこなくてキレイ。

Comments