天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 69|回复: 0

ObjectARX编程(七) -------符号表操作的总结

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
在上一节中介绍了层表的使用过程, 其他符号表处理方式类似,不同的符号表具有不同的对象,具体的操作,查看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.

 

 

 

 

ObjectARX编程(七) -------符号表操作的总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:43 , Processed in 0.149292 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表