返回介绍

容器对象

发布于 2023-08-09 23:10:33 字数 5402 浏览 0 评论 0 收藏 0

容器对象在图形文件初始化时,就已经存在了。容器对象包括符号表、字典、组和扩展记录。下面介绍如何向符号表、字典和组中添加实体,怎样使用遍历来查询容器的内容,以及怎样创建和使用自己的字典和扩展记录来管理应用程序数据和对象。

符号表

符号表具有这样的功能:它可以包含数据库对象,这些数据库对象能够通过一个字符串关键字来搜索。用户可以向这些容器中添加实体,也可以使用遍历来浏览容器以查找所需的内容。

符号表和字典的异同

符号表和字典在本质上有相同的功能。字典为用户提供了和符号表类似的机制来保存和恢复带有相关关键字的对象。当创建一个新的图形时,它就创建了一个命名对象字典,这个字典可以看作是图形中实体对象的容器列表。用户可以创建任意数量的对象并将它们添加到命名对象字典中。

符号表和字典的一个重要区别是符号表记录不能由ObjectARX应用程序直接删除,而一个字典所包含的对象则可以直接被删除。

符号表介绍

在符号表记录和字典中使用的名称必须遵循以下规则:

1. 名称可以有任意长度,但是在控件中用户输入的符号名不能超过255个字符。

2. 保留了使用名称中的大小写的权力,但是并没有在比较中区分大小写。

3. 除了逗号、单引号、分号、和等号之外,名称可以由任何Windows NT文件名中可以使用的字符组成。数据库中包含以下符号表:

类型类名
块表McDbBlockTable; BLOCK
层表McDbLayerTable: LAYER
文本样式表McDbTextStyleTable; STYLE
线型表McDbLinetypeTable: LTYPE

每一个表都包含相应的 McDbSymbolTableRecord 类的子类。

每一个符号表都提供了一个getAt()函数来查找指定名称的记录。另外还有 has() 和 add() 函数,前者可以用来判断一个记录名是否已经包含在符号表中,后者用来向符号表中添加一个新记录。

块表

在数据库中的实体通常属于一个块表记录。缺省情况下,块表包含1个记录: *MODEL_SPACE 。

层表

在缺省情况下,层表中包含0层一个层。下面是一些常用的设置和查询层特性信息的函数:

冻结和解冻:当一个层被冻结时,该层的图形将不能重新生成。

void McDbLayerTableRecord::setIsFrozen(Mdesk::Boolean);
Mdesk::Boolean McDbLayerTableRecord::isFrozen() const;

打开和关闭:当一个图层被关闭时,该层的图形将不再显示。

void McDbLayerTableRecord::setIsOff(Mdesk::Boolean);
Mdesk::Boolean McDbLayerTableRecord::isOff() const;

锁定和解锁:在控件中,用户不能修改在一个锁定层上的实体,也不能在应用程序中以write()函数打开实体。

void McDbLayerTableRecord::setIsLocked(Mdesk::Boolean);
Mdesk::Boolean McDbLayerTableRecord::isLocked() const;

颜色:当一个实体的颜色被设置成BYLAYER时,可以通过setColor()函数来设置实体的颜色。

void McDbLayerTableRecord::setColor(const AcCmColor &color);
AcCmColor McDbLayerTableRecord::color() const;

线型:当一个实体的线型是BYLAYER时,可以通过setLinetypeObjedtId()函数来设置实体的线型。

void McDbLayerTableRecord::setLinetypeObjectId(McDbObjectId);
McDbObjectId McDbLayerTableRecord::linetypeObjectId() const;

遍历器

每一个符号表都有一个相应的遍历器,用户可以使用 newIterator() 函数创建新的遍历器对象,用来浏览整个表内的所有对象。在使用完这个遍历器之后,一定要删除它 。另外,块表中还有一个可以用来操作其实体的遍历器。

字典

要创建一个新的字典,用户需要创建一个McDbDictionary 的实体,将这个实例添加到数据库中并在它的主对象中注册。可以使用McDbDictionary类的setAt() 函数来将对象添加到字典和数据库中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文