- MxDraw 云图
- 快速入门
- 前端 mxdraw 和 mxcad 库预览编辑图纸
- 后台使用 Node.js 调用梦想 API
- CAD 与 GIS 集成说明
- 梦想云图 Node.JS 服务
- iOS 开发
- 安卓开发
- 网页 CAD 开发
- 网页快速入门 aspaps.netphpjava
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义实体
- 自定义命令
- 光栅图处理
- 图面搜索
- 控件事件
- 打印控制
- 界面控制
- COM 开发
- 视频教程
- VB 快速入门
- Delphi 快速入门
- CSharp 快速入门
- java 快速入门
- QT 快速入门
- 易语言快速入门
- Powerbuilder 快速入门
- wpf 控件入门
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义命令
- 自定义实体
- 打印控制
- 控件事件
- 图面搜索
- 光栅图处理
- 界面控制
- C++ 开发
- C++ bulider 快速入门
- C++ 快速入门(VS2010)
- C++ 快速入门(com 接口)
- 图纸数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展程序
- 扩展数据
- 自定义函数
- 自定义实体
- 光栅图处理
- 图面搜索
- 控件事件
- 界面控制
- 常见问题
- 试用技术服务申请
- 会员下载最新程序
- 备用下载
- 控件安装运行说明
- 控件最新更新
- 控件功能简介
- 控件图形数据库
- 控件界面控制
- 控件命令执行原理
- 控件系统变量说明
- 控件常见问题说明
- 修改对象属性
- 网页加载 CAD 图纸的两个方案
- MxDraw3D 控件
- 前端基础工程化知识
容器对象
容器对象在图形文件初始化时,就已经存在了。容器对象包括符号表、字典、组和扩展记录。下面介绍如何向符号表、字典和组中添加实体,怎样使用遍历来查询容器的内容,以及怎样创建和使用自己的字典和扩展记录来管理应用程序数据和对象。
符号表
符号表具有这样的功能:它可以包含数据库对象,这些数据库对象能够通过一个字符串关键字来搜索。用户可以向这些容器中添加实体,也可以使用遍历来浏览容器以查找所需的内容。
符号表和字典的异同
符号表和字典在本质上有相同的功能。字典为用户提供了和符号表类似的机制来保存和恢复带有相关关键字的对象。当创建一个新的图形时,它就创建了一个命名对象字典,这个字典可以看作是图形中实体对象的容器列表。用户可以创建任意数量的对象并将它们添加到命名对象字典中。
符号表和字典的一个重要区别是符号表记录不能由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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论