
こんにちは!はこです。
業務で5年以上AutoLISPを使用しています。
AutoLISPってなに?という方はまずこちらの記事をご覧ください。
AutoCADユーザーがAutoLISPを覚えるべきメリット3選
表示コントロール関数はコマンドラインに文字列や変数の中身を表示する関数です。関数の途中や最後にユーザーへ向けたメッセージを表示できるので、動作の状況が分かりやすくなります。
使い勝手のよい関数を作るうえで非常に重要な関数であり、AutoLISP初心者が最初に覚えるべき関数の1つです。表示例と合わせて解説していきますのでぜひご覧ください。
ちなみに、表示コントロール関数以外のAutoLISP初心者にとって重要な関数についてはこちらの記事でご紹介していますのでご覧いただけると幸いです。
【入門】AutoLISP初心者が最初に覚えるべき関数5種!
【AutoLISP】表示コントロール関数「princ」「print」

コマンドラインに表示する関数4種
AutoLISPには以下の4つの表示コントロール関数があります。
- princ
- prin1
- prompt

1つずつ解説していきます。
princ
引数の評価結果をコマンドラインに表示する基本的な関数です。引数が文字列の場合、表示される文字列の先頭と後ろには「"」が付加されません。また、改行なしで表示するため続けて実行した場合は同じ行に表示されます。
例えば、「AutoLISPで楽になる」という文字列を表示する場合は次のように記述します。ちなみに、引数に「"」を付加することで文字列として認識されます。
(princ "AutoLISPで楽になる")

同じ文字列が2つ並ぶ形になっているのはprincの動作で「"」の中の文字列が表示されたあと、princ自体の返り値が表示されるためです。引数を省略した場合は何も表示されないなので、関数の最後に使用して返り値の表示を回避することができます。

改行を入れる方法
文字列の中で改行を入れたい場合は改行したい場所に「\n」(半角の円マークとアルファベットのn)を記述します。例えば、「AutoLISPで楽になる」という文字列で「楽になる」の前に改行を入れる場合は次のようになります。
(princ "AutoLISPで\n楽になる")

また、「terpri」という関数でも改行を入れることが可能です。上記と同様の結果を表示した場合は次のように記述します。ただし、terpriは文字列の中に記述しても機能しないので注意してください。
(princ "AutoLISPで")
(terpri)
(princ "楽になる")

prin1
prin1はprincと同様に引数の評価結果をコマンドラインに表示する関数です。princとの違いは引数が文字列の場合、「"」を付加して表示する点にあります。引数を省略したときはprincと同様に何も表示されません。
(prin1 "AutoLISPで楽になる")


文字列の両端には「"」が付加されます。
printは引数の評価結果をコマンドラインへ表示する前に改行が入る関数です。基本的な動作は改行が入る点を除いてprin1と同じになります。printを2つ続けて実行したときは次のように表示されます。
(print "AutoLISPで")
(print "楽になる")

prompt
promptが表示できる引数は文字列のみです。文字列以外を引数に指定するとエラーとなります。また、表示される文字列の両端に「"」は付加されません。ちなみに、返り値は必ずnilとなります。
(prompt "AutoLISPで楽になる")

まとめ
今回のまとめ
- princ:引数を改行なしでコマンドラインに表示。「"」は付加しない。
- prin1:引数を改行なしでコマンドラインに表示。「"」は付加される。
- print:改行して引数をコマンドラインに表示。「"」は付加される。
- prompt:表示できる引数は文字列のみ。「"」は付加しない。
- 「\n」または「terpri」で表示結果を改行できる。