ARX程序设计入门.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARX程序设计入门

ObjectARX For ACAD R14至ACAD2002使用VC6作为开发语言,而For ACAD2004应该使用VC.NET进行程序设计。以下的文章基本上以ARX For ACAD2002为主,兼顾2004即VC.NET程序设计方法,对于其他ACAD版本下的ARX程序设计,基本方法是相同的,仅有某些细节上的区别。我个人对ARX程序设计理解本来就不够深刻,再加上文字水平不高,文章中错误必然很多。因此希望各位网友多多批评指教。当大多数网友满意后再在明经的文章中心张帖。在此,我不想抄书,也不想翻译ARX帮助文档 当然,完全不用书本和帮助文档是不现实的 ,只想将一些个人理解完整地写出来。另外,除书本和帮助文档,*.h头文件和ARX提供的示例代码也是学习ARX程序设计的好帮手。哆嗦了许多,以下是正文。ObjectARX程序设计入门1、图形数据库操作 AutoCAD图形实际上是一系列存放在一个AcDbDatabase类型的数据库中的AcDb对象。AcDbDatabase数据库中所有的对象都有一个句柄,在一个图形 DWG 文件中,对象句柄是唯一的,用来标识对象。AutoCAD图形实体 AcDbEntity类对象 只是AcDbDatabase数据库的一种特殊的对象,用户可以在图形窗口看到并编辑它。AcDbDatabase数据库中的对象还有符号表、词典和其它与AcDb类对象相关的符号。数据库中所有的图形实体和对象都可以使用ObjectARX技术,通过程序设计来进行修改和编辑。这一点其实也就是AutoCAD二次开发的基本出发点和最终目标。 这话对吗?总感觉有些不妥,但不知道如何表达才准确。 尖括号中的内容是我个人感想,不会出现在最终文档中。 AcDbDatabase既然是数据库,它必然具备数据库的基本组织结构。它由多个表 Table 和表中的记录 Record 构成。AcDbDatabase数据库包括九个符号表和一个命名对象词典。 下面这张图表与大部分教材不同,各位以为如何? AcDbDatabase数据库 | 输出记录ID: Acad::ErrorStatus AcDb##BASE_NAME##Table::getAt const char* pEntryName, AcDbObjectId recordId, Adesk::Boolean getErasedRecord Adesk::kFalse const; 实际应用时,将##BASE_NAME##替换成九个符号表的实际类型。在这解释两个参数,char* pEntryName要求输入符号表记录名称,例如块表中至少有两条记录,模型空间 可用宏ACDB_MODEL_SPACE访问记录名称 和图纸空间 即ACDB_PAPER_SPACE 。最后,取出数据库符号表记录后,若不再使用表对象,应及时关闭,回收系统资源。 AcDb##BASE_NAME##Table::close ; 1.3 添加、删除记录获取数据库记录指针或记录ID后,就可以对数据库记录进行操作了,这包括在数据库中添加、删除记录,提取记录中的数据,即查找记录。向数据库中添加记录,通用的方法是调用符号表类的add 成员函数。 Acad::ErrorStatus AcDb##BASE_NAME##Table ::add AcDbSymbolTableRecord* pRecord ; 或 Acad::ErrorStatus AcDb##BASE_NAME##Table ::add AcDbObjectId recordId, AcDbSymbolTableRecord* pRecord ; //该函数第一个参数用于输出新添加的记录ID 在这要说明一下,通常我们向模型空间添加实体不用这些方法。因为模型空间本身就是AcDb块表中的一条记录,向其中添加实体仅仅是对该记录进行操作,不需要向数据库中添加记录。 1.4 图形数据库实例第一个例子来自ARX示例文档,目录\ObjectARX xxxx\docsamps\ents\ents.cpp文件演示了打开当前图形数据库并添加实体对象以及层表和组词典的使用方法。这个例子首先在当前图形数据库中建立一个线对象和一个圆对象,将圆的颜色变为红色,并与线对象组合成组 Group ,另外,还在当前图形数据库中添加一个新图层。下一个例子是对上一例子中添加图层的方法做出完善。在这个例子中将说明对层表和线型表及其记录操作的方法。 void addLayer AcDbLayerTable *pLayerTbl; //先声明一个空的层表指针 acdbHostApplicationServices - workingDatabase //当前图形数据库 - getSymbolTable pLay

文档评论(0)

gangshou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档