定義済みの定数

定数

あらかじめ以下のシンボルには特別な意味が付与、あるいは特別な値が代入されています。これらのシンボルは保護されているので、新たに値を代入できません。

シンボル 説明
nil 偽の状態、リストが空である状態、シンボルに値が代入されていない状態の値を、nil といいます。これは数値の0 や文字列の空白と意味が異なります。
T nil ではない状態を表します。
PI 定数πを表します。約 3.14159 に評価されます。
PAUSE 2 つの円記号から成る文字列(¥¥)として定義されています。この変数は、ユーザー入力待ちを行うためにcommand 関数内で使用します。

ユーザー定義の定数というものは AutoLISP では利用できません。Visual LISP の【シンボルサービス】から、一時的にシンボルの値の「保護」を行うことはできます。

nil

LISP には真偽値を表す Bool や Boolean といった型はありません。しかし「偽」という状態を表す特別な nil というシンボルが存在します。真の場合は、その逆をとって「nil 以外」と呼ばれます。この「nil 以外」の状態を表すシンボルとして T が使用できます。

変数の値が nil の場合は、偽であると解釈することもできますが、変数が未使用で値がセットされていないという意味にもなります。

また、リストが nil であることは、要素数が 0 の空リストという意味になります。何らかのリストを期待しているところで得た値が nil だった場合は、なにか不都合があって偽の値が返ってきたと解釈することもできますが、リストに入れる内容が無いので空リストになっていると解釈することもできます。

nil が評価されると nil になりますが、それに加えて、おそらくプログラムの読みやすさからだと思いますが、nil であるかを調べる関数が、いくつか用意されています。コンテキストに応じて使い分けてください。

AutoLISP関数
(null item)
item : アトム、リスト
指定された項目が nil かどうか調べます。
戻り値 : nil、またはnil 以外

null 関数は、item がnil ならばnil 以外を返し、nil 以外ならばnil を返します。

_$ (null nil) ⏎
T
_$ (null T) ⏎
nil

null 関数と結果的に同じ働きをする not 関数が、別途用意されています。こちらは、論理演算の場合に用います。

AutoLISP関数
(boundp 'symbol)
symbol : シンボル
シンボルに値が代入されているかどうかを調べます。
戻り値 : nil、またはnil 以外

boundp 関数は、シンボルに値が代入されているか調べます。代入されているとは、値が nil 以外の状態を指します。

symbol 引数にはシンボル名を指定します。シンボルをクォートすることを忘れないでください。

_$ (setq a nil) ⏎
nil
_$ (boundp a)
nil
_$ (setq a 100)
100
_$ (boundp 'a)
T
_$ (setq a '(1 2 3))
(1 2 3)
_$ (boundp 'a)
T

symbol 引数がシンボルでない場合は、nil が返ります。

AutoLISP関数
(atoms-family format [symlist])
format : 整数
symlist : 文字列のリスト
複数のシンボルが、現在定義されているかを返します。
戻り値 : リスト

atoms-family 関数は、シンボルが定義されているかを、リストの一覧の形で返します。定義されているとは、値が nil ではないことです。boundp 関数のバリエーションで、複数のものを一度に調べるバージョンと捉えられます。

format 引数は、戻り値のリストの体裁を整数で指定します。

format 引数 説明
0 シンボル名をシンボルのリストとして返します。
1 シンボル名を文字列のリストとして返します。

symlist 引数は、検索したいシンボル名を表す文字列のリストを指定します。ここで使うのは文字列であることに注意してください。symlist 引数を指定しなかった場合は、すべての nil でないシンボルの一覧が返ります。

使用例は次のとおりです。

symlist 引数を指定しないで、実行してみると非常に多くのシンボルになるため【コンソール】の表示バッファがあふれます。

_$ (atoms-family 1)⏎
("ACET-VAR-SETVAR" "ACTOOLBARDOCKBOTTOM" "ACVIEWPORT4" "AC3IN_1FT" (後略)

symlist 引数を指定すると、そのシンボルが定義されていればシンボル名が、定義されていなければ nil が、対応する位置に含まれたリストが返ります。

_$ (atoms-family 0 '("car" "abcd"))⏎
(CAR nil)
_$ (atoms-family 1 '("car" "abcd"))⏎
("CAR" nil)