概要 - ディクショナリ オブジェクトとディクショナリ項目(AutoLISP)

ディクショナリは、シンボル テーブルに似たコンテナ オブジェクトです。

ディクショナリは、図面の名前の付いたオブジェクト ディクショナリ(図面内のすべての非グラフィカル オブジェクトのルート)に保存されるか、オブジェクトにアタッチされる拡張ディクショナリとして保存されます。図面それぞれにいろいろなディクショナリを含めることができるため、ルーチンでは図面内に特定のディクショナリが存在すると想定すべきではありません。図面の名前の付いたオブジェクト ディクショナリ内のディクショナリには、図形名を返す namedobjdict を使用してアクセスできます。図面内のすべてのディクショナリを表す図形リストにアクセスするには、entget を使用します。

ディクショナリ オブジェクトには、次の規則が適用されます。

dictsearch 関数と dictnext 関数を使用して、ディクショナリ項目を照会できます。各ディクショナリ項目は、テキスト名前キーと、項目オブジェクトへのハード オーナーシップ キー ハンドル参照から構成されます。ディクショナリ項目は、entdel 関数に項目オブジェクト名を直接渡すことにより削除できます。テキスト名前キーは、シンボル テーブル名と同じ構文と有効な文字を使用します。キーの名前は、dictrename 関数を使用して変更することができます。

次のコード例は、図面の名前の付いたオブジェクト ディクショナリ内の各ディクショナリとその項目を一覧表示します。

(defun c:ListDictionaries ( / ed ed1)
  (prompt "\nDictionaries in current drawing: ")
  (foreach ed (entget (namedobjdict))
    (progn
      (cond ((= (car ed) 3)
        (prompt (strcat "\n" (cdr ed))))
            ((= (car ed) 350)
        (progn
          (foreach ed1 (entget (cdr ed))
            (if (= (car ed1) 3)
              (prompt (strcat "\n  " (cdr ed1)))
            )
          )
        ))
      )
    )
  )
 (princ)
)

次に、c:ListDictionaries を実行した後に[テキスト履歴]ウィンドウに表示される出力の例を示します。

Dictionaries in current drawing:
ACAD_CIP_PREVIOUS_PRODUCT_INFO
ACAD_COLOR
ACAD_DETAILVIEWSTYLE
  Imperial24
ACAD_GROUP
ACAD_LAYOUT
  Layout1
  Layout2
  Model
ACAD_MATERIAL
  ByBlock
  ByLayer
  Global
ACAD_MLEADERSTYLE
  Annotative
  Standard
ACAD_MLINESTYLE
  Standard
ACAD_PLOTSETTINGS
ACAD_PLOTSTYLENAME
  Normal
ACAD_SCALELIST
  A0
  A1
  A2
  A3
  A4
  A5
  A6
  A7
  A8
  A9
  B0
  B1
  B2
  B3
  B4
  B5
  B6
  B7
  B8
  B9
  C0
  C1
  C2
  C3
  C4
  C5
  C6
  C7
  C8
  C9
  D0
  D1
  D2
ACAD_SECTIONVIEWSTYLE
  Imperial24
ACAD_TABLESTYLE
  Standard
ACAD_VISUALSTYLE
  2dWireframe
  Basic
  Brighten
  ColorChange
  Conceptual
  Dim
  EdgeColorOff
  Facepattern
  Flat
  FlatWithEdges
  Gouraud
  GouraudWithEdges
  Hidden
  JitterOff
  Linepattern
  OverhangOff
  Realistic
  Shaded
  Shaded with edges
  Shades of Gray
  Sketchy
  Thicken
  Wireframe
  X-Ray
AcDbVariableDictionary
  CANNOSCALE
  CMLEADERSTYLE
  CTABLESTYLE
  CVIEWDETAILSTYLE
  CVIEWSECTIONSTYLE
  DIMASSOC
  HIDETEXT
  LAYEREVAL
  LAYERNOTIFY