概要 - 拡張レコード オブジェクト(AutoLISP)

拡張レコード(xrecord)オブジェクトは、任意のデータの格納と管理に使用されます。

それらは、標準オブジェクト グループ コード(非拡張グループ コード)の DXF グループ コードで構成され、サポートされている範囲は 1 から 369 です。このオブジェクトは、拡張データ(Xdata)の概念に似ていますが、サイズや順序に制限はありません。

次のコード例では、XRECLIST という名前のカスタム ディクショナリ内の拡張レコード データを作成およびリストします。

(defun C:MAKEXRECORD( / xrec xname )
  ; create the xrecord's data list.
  (setq xrec '((0 . "XRECORD")(100 . "AcDbXrecord")
    (1 . "This is a test xrecord list")
    (10 1.0 2.0 0.0) (40 . 3.14159) (50 . 3.14159)
    (62 . 1) (70 . 180))
  )

  ; use entmakex to create the xrecord with no owner.
  (setq xname (entmakex xrec))

  ; add the new xrecord to the named object dictionary.
  (dictadd (namedobjdict) "XRECLIST" xname)
 (princ)
)

(defun C:LISTXRECORD ( / xlist )
  ; find the xrecord in the named object dictionary.
  (setq xlist (dictsearch (namedobjdict) "XRECLIST"))

  ; print out the xrecord's data list.
  (princ xlist)
 (princ)
)

LISTXRECORD コマンドの結果は、次のようになります。

((-1 . <Entity name: 7ffffb05ee0>) (0 . XRECORD) (5 . 1E6) (102 . {ACAD_REACTORS) (330 . <Entity name: 7ffffb038c0>) (102 . }) (330 . <Entity name: 7ffffb038c0>) (100 . AcDbXrecord) (280 . 1) (1 . This is a test xrecord list) (10 1.0 2.0 0.0) (40 . 3.14159) (50 . 3.14159) (62 . 1) (70 . 180))