6.2.2 思路
后退前进

      1.访问实体的扩展字典

      扩展字典与特定的实体关联,但是一个实体在默认情况下不包含扩展字典,如果要利用扩展字典保存与实体关联的数据,可以使用 createExtensionDictionary 函数为实体建立扩展字典,如果实体已经包含扩展字典,该函数的调用不会产生任何影响。

      创建扩展字典之后,就可以使用 extensionDictionary 函数获得实体的扩展字典,AcDbDictionary 对象的 setAt 函数可以为字典添加一个元素,该元素既可以是 AcDbXrecord,也可以是其他类型的对象。如果添加了 AcDbXrecord(扩展记录),就可以使用 acutBuildList函数构建一个保存数据的结果缓冲区链表,然后使用 setFromRbChain 函数将结果缓冲区链表添加到扩展及记录中,这样就使用扩展记录保存了数据。

      如果要访问实体扩展字典中保存的扩展记录,可以使用 extensionDictionary 函数获得实体的扩展字典,然后通过字典的 getAt 函数得到指定的元素(扩展记录),使用 AcDbXrecord类的 rbChain 函数得到保存数据的结果缓冲区链表,并且遍历该链表获得保存的数据。

      2.访问有名对象字典

      AutoCAD 每个图形数据库中都包含一个有名对象字典,默认情况下该字典中包含了组、多线样式、布局和打印等信息。例如,用户在 AutoCAD 创建一个组,就会有一个代表改组的元素被添加到组字典中。

      如果需要在有名对象字典中保存自己的数据,一般可以在有名对象字典中添加一个根字典,然后再向根字典中添加新的字典,进而在新字典中保存数据。这样的好处是不会与有名对象字典的基本字典相混淆。

      使用 AcDbDatabase 对象的 getNamedObjectsDictionary 函数可以获得图形的有名对象字典(根字典),可以通过 setAt 函数向根字典添加一个字典,或者通过 getAt 函数获得其中的一个字典。获得字典之后,向字典中保存数据的方法与扩展字典完全一致。


ObjectARX开发实例教程(张帆)