符号表和字典的比较
符号表和字典执行基本相同的功能;它们包含的条目是可以使用文本字符串键查找的数据库对象。您可以向这些容器对象添加条目,并且可以使用迭代器单步执行条目并查询其内容。 AutoCAD 数据库始终包含一组固定的 9 个符号表,如下一节所述。您无法创建或删除符号表,但可以添加或更改符号表中的条目,这些条目称为记录。每个符号表仅包含特定类型的对象。例如,仅包含 类型的对象。以这种方式定义符号表主要是为了与 AutoCAD 版本 12 和早期版本的 AutoCAD 兼容。AcDbLayerTableAcDbLayerTableRecord 字典提供了类似的机制,用于存储和检索具有关联名称键的对象。每当 AutoCAD 数据库创建新图形时,都会创建命名对象字典。命名对象字典可以看作是图形中非实体对象结构的主“目录”。默认情况下,此字典包含九个字典:GROUP 字典、MLINE 样式字典、布局字典、打印样式名称字典、颜色字典、材料字典、打印设置字典、表格样式字典和 SYSVAR 字典。您可以创建任意数量的其他对象,并将它们添加到命名对象字典中。但是,最佳做法是将一个对象直接添加到命名对象字典中,并让该对象依次拥有与应用程序关联的其他对象。通常,拥有的对象是容器类,例如字典。使用您分配的四个字母的注册开发人员符号作为此类的名称。 对象可以包含任何类型的 ,包括其他字典。字典对象不执行条目的类型检查。但是,MLINE 样式字典应仅包含类 的实例,而 GROUP 字典应仅包含 的实例。应用程序可能需要对其创建和维护的字典中的条目进行特定键入。AcDbDictionaryAcDbObjectAcDbMlineStyleAcDbGroup 符号表、符号表记录、字典和迭代器的类层次结构如下。 ![]() 符号表和字典之间的一个重要区别是,ObjectARX 应用程序无法直接擦除符号表记录。这些记录只能使用 PURGE 命令擦除,也可以使用 wblock 操作有选择地过滤掉。字典拥有的对象可以擦除。 ® 危险:擦除字典或字典条目(请参见基本数据库对象)可能会导致 AutoCAD 或其他应用程序失败。
另一个重要区别是,符号表记录将其关联的查找名称存储在其类定义的字段中。另一方面,字典将名称键存储为字典的一部分,独立于与其关联的对象,如下图所示。 ![]() 父主题: |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-14 08:25
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.