ドットペア

提供:GizmoLabs - だいたい CAD LISP なサイト
2023年9月20日 (水) 07:16時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

AutoLISP のドットペア表記は、リスト表記の一種で LISP の基本的なデータ構造であるコンスセル(car と cdr のみがある状態)のデータであることを意味します。 つまり、 コンスセル表記の (1 . 2) とリスト表記の (1 2) は表記は異なりますが、データとしては同じなので、

  • (car '(1 . 2)) と (car '(1 2)) の返り値は共に 1 。
  • (cdr '(1 . 2)) と (cdr '(1 2)) の返り値は共に 2 。

ということになります。


リスト表記をあえてドットペア表記にすると以下のようになります。

  • (1 2 3) → (1 . (2 . (3 . nil)))
  • (red blue . yellow) → (red . (blue . yellow))


(cons 1 2) -> (1 . 2) 
(list 1 2) -> (1 2)


(cons 'A (cons 'B (cons 'C '()))) ; cons 関数でリストを作成。
-> (A B C)
(list 'A 'B 'C) と同義なので、次の式は T となる。
(equal (list 'A 'B 'C) (cons 'A (cons 'B (cons 'C '()))))
-> T
次も同様
(equal '(1 . nil) '(1))
-> T


AutoLISP では、図形のデータを扱う場合にコンスセルを含んだエンティティのリストデータをよく扱います。

円のエンティティリスト

(-1 . <図形名: 222a36a8850>) (0 . "CIRCLE") (330 . <図形名: 222b6f229f0>) (5 . "2CD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbCircle") (10 4092.2 32631.3 0.0) (40 . 3224.77) (210 0.0 0.0 1.0)