ObjectARX编程(七) -------符号表操作的总结
来源:互联网 发布:生产流程优化的阶段 编辑:程序博客网 时间:2024/06/07 13:03
在上一节中介绍了层表的使用过程, 其他符号表处理方式类似,不同的符号表具有不同的对象,具体的操作,查看API。
1. 对象的操作和理解
访问图形数据库中对象的特性,必须在该对象被打开(创建对象时也会被打开)的状态下,用对象的指针进行访问,并且在访问结束后要及时关闭该对象,不然会引起AutoCAD的错误终止。
在创建完对象后图形数据库会给对象一个ID号,可以根据这个ID号从数据库中获取指向对象的指针,就可以修改或者查询改对象的特性。
例如,AcDbBlockTableRecord类的appendAcDbEntity函数能够将一个实体添加到图形数据库中,并分配给实体一个ID; 全局函数AcDbOpenAcDbEntity用于从实体ID号获取图形数据库中实体的指针,其定义为:
Acad::ErrorStatus acdbOpenAcDbEntity(AcDbEntity*& pEnt,AcDbObjectID id,AcDb::OpenMode mode,bool openErasedEntity = false);
ObjectARX提供了另外两个全局函数acdbOpenAcDbObject和acdbOpenObject
acdbOpenAcDbEntity: 适用于打开继承于AcDbEntity的数据库常驻对象,这类对象一般都能显示在图形窗口中,如直线、圆。
AcDbOpenDBObject: 适用于打开位继承AcDbEntity的数据库常驻对象,这类对象不能再图形界面中显示,如 层表、线型。
AcDbOpenObject: 如果不知道要打开的对象是否继承于AcDbEntity类,可以使用这个函数。
2. 对象ID的转化
访问实体的特性必须通过对象的指针,但是你一旦获得了实体的ID、句柄或者ads_name,都能通过ID作为中介而获得实体的对象的指针,
句柄是Windows中常用的概念,在ObjectARX编程中一般指ACDBHand类,该类封装了一个64位的整形标识符。随DWG文档一起保存。
ads_name 则是在ADS编程中出现的一个概念,其实际上就是一个二维数组,数组的元素类型是长整形,在与用户交互的函数中还会用到。
ID: 在一个AutoCAD任务中,可能会加载多个图形数据库,但是所有对象的ID在本次任务中都是独一无二的,在不同的任务中,统一图形对象的ID可能不同。
句柄: 在一个AutoCAD任务中,不能保证每一个对象的句柄都是唯一,但是在一个图形数据库中所有对象的句柄都是唯一的,句柄随DWG图纸一起保存。
ads_name: 不稳定,仅当你在AutoCAD的一个特征图形中工作是可以使用,一旦退出AutoCAD或者切换到另一个图形,ads_name会丢失。
1>. 从ID到指针有三个函数 acdbOpenDbEntity、acdbOpenDbObject、acdbOpenObject
2>. 从对象之战到ID: 所有的数据库常驻对象都继承自AcDbObject,objectID函数能获取对象的ID。
3>. 从句柄到指针: 使用ACDBDatabase::getAcDbObjectID函数
4>. 从ID到句柄: 使用AsDbObjectId::hand函数
5>. 从指针到句柄: 使用AcDbObject::getAcDbHandle函数。
6>. 从ads_name到ID: 使用全局函数acdbGetObjectId。
7>. 从ID到ads_name: 使用全局函数acdbGetAdsName.
阅读全文
0 0
- ObjectARX编程(七) -------符号表操作的总结
- ObjectARX编程(五) ---------符号表中层表的操作
- ObjectARX编程(四) --------符号表简述
- ObjectARX编程(三) --------数据库的介绍
- ObjectArx编程环境的创建
- ObjectArx编程(一) ------ 环境的搭建
- C++的基础知识(七)--符号->
- ObjectARX编程(六) ------块和属性
- 符号表的基本操作
- 黑马程序员------IO操作总结(七)
- Linux 常用操作命令总结(七)
- ObjectARX编程环境
- ObjectARX编程环境概述
- C#编程总结(七)数据加密
- java编程思想(七)总结
- 《Unix环境高级编程》 总结 (七)
- ObjectArx开发对txt文本文件的操作一例
- ObjectARX中ADO操作数据库的一个类实例封装
- 常用数字滤波算法
- 利率计算
- 《UNIX网络编程 卷1》 笔记: 使用select函数的单进程TCP回射服务器程序
- 【JavaWeb-28】Maven仓库、目录结构、命令和生命周期、添加jar包和插件
- ES6 箭头函数理解
- ObjectARX编程(七) -------符号表操作的总结
- 水池数目
- Qt中的读写锁
- swiper点击分页器后图片就不能轮播了
- mysql、nginx、php-fpm、php配置优化
- mybatis传参数
- org.jivesoftware.smack_2.2.1的api
- 收藏:优秀的个人博客
- Java萌新的排序算法学习(初级篇)