Sponsored links

【AutoLISP リスト】リストとは?

Sponsored links
AutoLISP
Sponsored links
Sponsored links

リストとは?

リストは、いくつもの値をまとめたものです。

例えば、図形の情報を得る関数 entsel の戻り値はリストです。

(entsel) とコマンドラインに入力し、図形を選択すると、

(<Entity name: x1xx2xx3xx> (13.4 15.4 0))

が戻り値です。これは、

  • <Entity name: x1xx2xx3xx>
  • (13.4 15.4 0)

この2つの情報がリストとしてまとめてあるものです。

さらに、2つ目の要素の(13.4 15.4 0)も。

  • 13.4
  • 15.4
  • 0

この3つの数値をひとまとめにリストにしたものです。

この場合だと、図形名、座標位置のX値、Y値、Z値、4つの値がひとまとめになっています。1つの変数に一気に4つ値をいれることができ、必要なときは、関数を使って各要素を取りだすこともできる、とても便利な物です。

他にも、関数getpoint で取得できる座標情報や、DXF図形情報の円の中心点、線分の始点終点、ブロックの挿入点などなども、X値、Y値、Z値、3つの情報がひとまとめになったリストです。

関数 entsel についてもっと知りたい方はコチラの記事を。

Jagaimo
Jagaimo

 ちなみに、AutoLISP の LISPは、LISt Processing (リスト処理)の略なんだって。

AutoLISP 関数 list

関数 list は、リストを作成する関数です。
リストに入れる要素は、数列でも文字列でもかまいません。

(setq Lst1 (list “Apple” “Book” 123 456 ))

これで、4つの要素がリスト化された (“Apple” “Book” 123 456) を変数 Lst1 に入れることができます。

list 関数名の省略 ’

関数list は関数名を省略することができ、その場合は、’ を使います。

(setq Lst1 ‘(“Apple” “Book” 123 456 ))

で、(setq Lst1 (list “Apple” “Book” 123 456 ))と同じように、(“Apple” “Book” 123 456) を変数 Lst1 に入れることができます。

変数や関数式をリスト要素にするときの注意点

list の引数には、変数や関数式も入れることができます。が、変数や数式を入れる場合は省略できません。

例えば、

(setq A “Apple”)

まず、変数 A に文字列”Apple”を定義し、 (1+ 2) と、変数Aをリストにします。
1+ は引数に1を足す関数です。

(setq Lst2 (list (1+ 2) A ))

計算式は計算され、変数は値がリストに入り、

(3 “Apple”) というリストが戻り値なります。

しかし、関数を省略して ‘ を使った場合、

(setq Lst3 ‘( (1+ 2) A ))

では、数式や変数の値を評価してくれずに、そのまま、((1+ 2) A) というリストになってしまい、正しい値のリストにはなりません。

リストに要素そのものを入力しないときは、関数名を省略しないようにしましょう。

まとめ

  • リストはいくつもの情報をひとまとめにしたもの。
  • listは引数で渡す複数の値をリスト化できる関数。
  • list は関数名を省略して、カッコの前に ‘ でもリストにできる.
  • リストにする要素は、計算式や変数が使えるけれど、その場合は関数名を省略できない。