《ObjectArx培训演示教学》由会员分享,可在线阅读,更多相关《ObjectArx培训演示教学(87页珍藏版)》请在金锄头文库上搜索。
1、ObjectARX TianyuSoft 1 ObjectARXTraining 华中科技大学CAD中心武汉天喻软件有限责任公司2010年2月 ObjectARX TianyuSoft 2 ObjectARX应用的介绍 ObjectARX是一个仅在AutoCAD上进行二次开发的一套开发环境 通俗点讲就是一系列的APIObjectARX的应用举例 扩展AutoCAD功能为各种工程设计开发便利的工具 ObjectARX TianyuSoft 4 ObjectARX开发特点 不同的ACAD版本用不同的开发包及开发环境ACAD2000 ACAD2002 VC 6 0ACAD2004 ACAD2006
2、VS NET2002ACAD2007 ACAD2009 VS NET2005ACAD2010 VS NET2008ACAD2007开始字符串采用UNICODE编码ARX之间不能连续依赖A arx依赖B arx B arx依赖C dbx 则A arx不能加载与ACAD已有功能地位一致 ObjectARX TianyuSoft 5 ObjectARX类库构成 AcRx 用于帮定一个应用程序以及运行类的注册和识别 AcEd 用于注册自定义命令和AutoCAD事件通告 AcDb AutoCAD图形数据库 AcGi 用于AutoCAD的图形类 AcGe 用于AutoCAD的线型和几何对象通用类 ADS
3、AutoCAD的早期版本C语言函数库 ObjectARX TianyuSoft 6 ObjectARX类结构 类图classmap dwg位置 ObjectARX2006 classmap ObjectARX TianyuSoft 7 用ObjectARX能做些什么 访问 编辑和扩展AutoCAD图形数据库和AutoCAD系统相互通信使用MFC创建用户接口支持多文档应用创建自定义类和自定义实体可以开发复杂的应用和其他开发环境进行协作 ObjectARX TianyuSoft 8 培训安排 1 一 基础AUTOCAD数据库结构及操作 ads name 句柄 ID及转换 aced常用函数 WCS
4、UCS及转换 菜单 工具条 对话框制作二 自定义对象显示 存储 夹点 移动 拷贝 范围 list 捕捉点 炸开 相交点 sub事件三 自定义对象生成与编缉双击修改 Jig 属性页 ObjectARX TianyuSoft 9 培训安排 2 四 一些重要对象字典 层 线型 字体样式五 扩展数据六 反应器八 总结 ObjectARX TianyuSoft 10 所需基础 ACAD基本操作C VCMFC 界面 COM 属性页等 STL 提高效率 ObjectARX TianyuSoft 11 AutoCAD图形数据库概述 AutoCAD图形实际上是一系列存放在一个AcDbDatabase类型的对象中
5、的AcDb对象 一个dwg就是一个数据库具备数据库的基本组织结构 包括九个符号表和一个命名对象词典 ObjectARX TianyuSoft 12 AutoCAD图形数据库结构 AcDbDatabase数据库 AcDb符号表 块表 AcDbBlockTable 尺寸标注样式表 AcDbDimStyleTable 层表 AcDbLayerTable 线型表 AcDbLinetypeTable 已注册应用程序表 AcDbRegAppTable 字体样式表 AcDbTextStyleTable 用户坐标系表 AcDbUCSTable 视口表 AcDbViewportTable 视图表 AcDbVie
6、wTable 命名对象词典访问 AcDbDatabase getSymbolTable ObjectARX TianyuSoft 13 向数据库中添加实体 Acad ErrorStatusaddEntityToModelSpace AcDbEntity pEnt AcDbObjectId ObjectARX TianyuSoft 14 怎样遍历AutoCAD图形数据库 voidFindObjectId AcDbObjectId ObjectARX TianyuSoft 15 怎样创建和使用已有的AutoCAD图形数据库 要使用AcDbDatabase数据库 与使用其它数据库一样 首先要声明一个
7、数据库对象 AcDbDatabase类的声明 调用类的构造函数 AcDbDatabase AcDbDatabase boolbuildDefaultDrawing true boolnoDocument false 其中 buildDefaultDrawing参数控制是否创建一个包括所有默认数据记录的数据库 该参数的默认值为true 这样在AcDbDatabase数据库创建时 将在新建的数据库中包含一个AutoCAD图形数据库必须包含的基本数据要素 这些要素包括九个符号表及其初始记录 比如0层 STANDARD文字样式等 命名对象词典 组词典和多线样式词典 以及必要的系统变量设置 这样就可以向
8、新建的数据库中添加各种实体和对象 如 AcDbDatabase pDb newAcDbDatabase true 若指定该参数为false AutoCAD将创建一个完全空的AcDbDatabase数据库 这样的AcDbDatabase数据库不能直接向其中添加实体或对象 需读入一个图形文件来拓展该图形数据库 然后再逐步添加或修改数据库中的实体或对象 读入图形数据库使用函数 AcadErrorStatusAcDbDatabase readDwgFile constchar fileName 若要使用已有的图形 比如 test dwg 文件 则使用下列代码 AcDbDatabase pDb newA
9、cDbDatabase false pDb readDwgFile test dwg AcDbDatabase构造函数的noDocument参数控制打开的数据库是否与当前文档关联 此参数用于 多文档处理 中 注意 在这种情况下 AcDbdatabase 的参数必须指定为false 当然 0或者Adesk kFalse都可以 因为使用pDb readDwgFile 函数时 pDb必须是一个完全空白的数据库 也就是说 哪怕使用了AcDbDatabase false 新建数据库后 只要对数据库进行了操作 就不能再使用readDwgFile 函数 否则会导致严重的内存错误 ObjectARX Tian
10、yuSoft 16 数据库对象AcDbObject概述 每一个数据库对象具有以下三种表示方法 句柄 AcDbHandle对象id AcDbObjectId指针 AcDbObect ObjectARX TianyuSoft 17 三者之间的相互关系 注意 Handle不变 ObjectId变化 ObjectARX TianyuSoft 18 之间相互关系和转换 1 AcDbHandle AcDbObjectIdAcDbDatabase getAcDbObjectId ObjectARX TianyuSoft 19 怎样访问数据库对象 打开对象的方法 acdbOpenObject 该函数为模板函数
11、 能打开任意对象acdbOpenAcDbObject acdbOpenAcDbEntity 打开对象的模式 AcDb kForRead 只读AcDb kForWrite 可写AcDb kForNotify 通知升级和降级访问 AcDbObject upgradeOpen 升级为写AcDbObject downgradeOpen 降级为读删除对象AcDbObject erase ObjectARX TianyuSoft 20 用事务方式访问 事务AcTransaction AcTransactionManager startTransactionAcTransactionManager endT
12、ransaction AcTransactionManager abortTransaction virtualAcad ErrorStatusgetObject AcDbObject obj AcDbObjectIdobjectId AcDb OpenModemode boolopenErasedObject false ObjectARX TianyuSoft 21 对象访问限制 如果一个对象被写打开 则在关闭前不能再被读打开或写打开如果一个对象被读打开 则在关闭前不能再被写打开 但可被读打开 一个对象最多可同时被打开128次 ObjectARX TianyuSoft 22 对象类型识别
13、desc astaticmemberfunctionthatreturnstheclassdescriptorobjectofaparticular known class cast astaticmemberfunctionthatreturnsanobjectofthespecifiedtype orNULLiftheobjectisnotoftherequiredclass oraderivedclass isKindOf returnswhetheranobjectbelongstothespecifiedclass oraderivedclass isA returnstheclas
14、sdescriptorobjectofanobjectwhoseclassisunknown AcRxClass例如 AcDbEntity curEntity somehowGetAndOpenAnEntity if curEntity isKindOf AcDbEllipse desc If curEntity isA AcDbEllipse desc AcDbLine pLine AcDbLine cast curEntity ObjectARX TianyuSoft 23 AutoCAD里的交互 AcEd全局函数String numberacquisitionacedGetIntused
15、togetanintegervalueacedGetRealusedtogetarealvalueacedGetStringusedtogetastringacedGetDistusedtogetthedistancebetweentwopointsPoint angleacquisitionacedGetAngleusedtogetaanglevalueacedGetPointusedtopickapointacedGetCornerEntityselectionacedEntSelusedtoselectasingleentityacedNEntSelusedtoselectasingle
16、 nestedentityacedNEntSelPusedtoselectasingle nestedentityacedSSGetusedtoselectmultipleentitiesOthersacedGetKwordusedtogetakeywordacedInitGetusedtoinitializeacedGetXXXXfunctionsacedGetFileDusedtoretrievefileselectionfromafiledialog ObjectARX TianyuSoft 24 向ACAD发送命令 acedCommand 立即执行acedCommand RTSTR zoom RTSTR e 0 sendStringToExecute 作为下一个命令执行CStringstrCmd strCmd Format HNBMReservedAreaModified d d long ReservedAreaHandle nType acDocManager sendStringToExecute acDocManager curDocument strCmd false