ディクショナリは、シンボル テーブルに似たコンテナ オブジェクトです。
ディクショナリは、図面の名前の付いたオブジェクト ディクショナリ(図面内のすべての非グラフィカル オブジェクトのルート)に保存されるか、オブジェクトにアタッチされる拡張ディクショナリとして保存されます。図面それぞれにいろいろなディクショナリを含めることができるため、ルーチンでは図面内に特定のディクショナリが存在すると想定すべきではありません。図面の名前の付いたオブジェクト ディクショナリ内のディクショナリには、図形名を返す 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