ImageVerifierCode 换一换
格式:PPT , 页数:87 ,大小:229.50KB ,
文档编号:3118742      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3118742.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(ObjectArx培训课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

ObjectArx培训课件.ppt

1、ObjectARX Training华中科技大学CAD中心武汉天喻软件有限责任公司2010年2月Object ARXT i a n y u S o f t2ObjectARX应用的介绍 ObjectARX是一个仅在AutoCAD上进行二次开发的一套开发环境,通俗点讲就是一系列的API ObjectARX的应用举例: 扩展AutoCAD功能 为各种工程设计开发便利的工具Object ARXT i a n y u S o f t3ObjectARX概述 ARXAutoCAD Runtime eXtension DBX DataBase eXtension ARX = .DLL + 2 export

2、ed functions acrxEntryPoint & acrxGetApiVersion AutoCAD.EXEARX AppsARX AppsObjectARX APIsObject ARXT i a n y u S o f t4ObjectARX开发特点 不同的ACAD版本用不同的开发包及开发环境 ACAD2000ACAD2002 : VC+ 6.0 ACAD2004ACAD2006 : VS.NET 2002 ACAD2007ACAD2009 : VS.NET 2005 ACAD2010 : VS.NET 2008 ACAD2007开始字符串采用UNICODE编码 ARX之间不能连

3、续依赖 A.arx依赖B.arx, B.arx依赖C.dbx,则A.arx不能加载 与ACAD已有功能地位一致Object ARXT i a n y u S o f t5ObjectARX类库构成 AcRx:用于帮定一个应用程序以及运行类的注册和识别。 AcEd:用于注册自定义命令和AutoCAD事件通告。 AcDb:AutoCAD图形数据库。 AcGi: 用于AutoCAD 的图形类。 AcGe:用于AutoCAD 的线型和几何对象通用类。 ADS: AutoCAD 的早期版本C语言函数库。Object ARXT i a n y u S o f t6ObjectARX类结构 类图classm

4、ap.dwg 位置:ObjectARX 2006classmapObject ARXT i a n y u S o f t7用ObjectARX能做些什么? 访问、编辑和扩展AutoCAD图形数据库 和AutoCAD系统相互通信 使用MFC创建用户接口 支持多文档应用 创建自定义类和自定义实体 可以开发复杂的应用 和其他开发环境进行协作Object ARXT i a n y u S o f t8培训安排-1 一、基础 AUTOCAD数据库结构及操作,ads_name-句柄-ID及转换,aced常用函数,WCS/UCS及转换,菜单/工具条/对话框制作 二、自定义对象 显示/存储/夹点/移动/拷贝

5、/范围/list/捕捉点/炸开/相交点/sub事件 三、自定义对象生成与编缉 双击修改/Jig/属性页Object ARXT i a n y u S o f t9培训安排-2 四、一些重要对象 字典/层/线型/字体样式 五、扩展数据 六、反应器 八、总结Object ARXT i a n y u S o f t10所需基础 ACAD基本操作 C+ VC MFC(界面) COM(属性页等) STL(提高效率)Object ARXT i a n y u S o f t11AutoCAD图形数据库概述 AutoCAD图形实际上是一系列存放在一个AcDbDatabase类型的对象中的AcDb对象。 一

6、个dwg就是一个数据库 具备数据库的基本组织结构。 包括九个符号表和一个命名对象词典Object ARXT i a n y u S o f t12AutoCAD图形数据库结构AcDbDatabase数据库 |-AcDb符号表 | |-块表(AcDbBlockTable) | |-尺寸标注样式表(AcDbDimStyleTable) | |-层表(AcDbLayerTable) | |-线型表(AcDbLinetypeTable) | |-已注册应用程序表(AcDbRegAppTable) | |-字体样式表(AcDbTextStyleTable) | |-用户坐标系表(AcDbUCSTable

7、) | |-视口表(AcDbViewportTable) | |-视图表(AcDbViewTable) |-命名对象词典访问:AcDbDatabase:getSymbolTableObject ARXT i a n y u S o f t13向数据库中添加实体Acad:ErrorStatus addEntityToModelSpace(AcDbEntity * pEnt, AcDbObjectId & EntId)Acad:ErrorStatus eRet;AcDbDatabase * pDb = acdbHostApplicationServices()-workingDatabase();

8、AcDbBlockTable *pBlockTable;eRet = pDb-getBlockTable(pBlockTable, AcDb:kForRead);if ( eRet != Acad:eOk)return eRet;AcDbBlockTableRecord *pBlockTableRecord;eRet = pBlockTable-getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb:kForWrite);if ( eRet != Acad:eOk)pBlockTable-close();return eRet;pBlockTable-c

9、lose();eRet = pBlockTableRecord-appendAcDbEntity(EntId, pEnt);if ( eRet != Acad:eOk)pBlockTableRecord-close();return eRet;pBlockTableRecord-close();return Acad:eOk;Object ARXT i a n y u S o f t14怎样遍历AutoCAD图形数据库?void FindObjectId(AcDbObjectId & objId)AcDbDatabase * pDb = acdbHostApplicationServices(

10、)-workingDatabase();AcDbBlockTable *pBlockTable;pDb-getBlockTable(pBlockTable, AcDb:kForRead);AcDbBlockTableRecord *pBlockTableRecord;pBlockTable-getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb: kForRead);pBlockTable-close();AcDbBlockTableRecordIterator *pIter; pBlockTableRecord- newIterator(pIter);

11、 / Create an iteratorfor (pIter-start(); !pIter-done(); pIter-step() . AcDbEntity *pEntity; if (pIter-getEntity(pEntity, AcDb:kForRead) != Acad:eOk) continue; If(pEntity-isKindOf(AcDbCircle:desc() objId = pEntity-ObjectId(); pBlockTableRecord- close();Object ARXT i a n y u S o f t15怎样创建和使用已有的AutoCAD

12、图形数据库?要使用AcDbDatabase数据库,与使用其它数据库一样,首先要声明一个数据库对象。AcDbDatabase类的声明,调用类的构造函数:AcDbDatabase :AcDbDatabase(bool buildDefaultDrawing = true, bool noDocument = false);其中,buildDefaultDrawing参数控制是否创建一个包括所有默认数据记录的数据库。该参数的默认值为该参数的默认值为true,这样在AcDbDatabase数据库创建时,将在新建的数据库中包含一个AutoCAD图形数据库必须包含的基本数据要素,这些要素包括九个符号表及其

13、初始记录(比如0层、STANDARD文字样式等),命名对象词典(组词典和多线样式词典)以及必要的系统变量设置。这样就可以向新建的数据库中添加各种实体和对象。如:AcDbDatabase *pDb= new AcDbDatabase(true);若指定该参数为若指定该参数为false,AutoCAD将创建一个完全空的AcDbDatabase数据库。这样的AcDbDatabase数据库不能直接向其中添加实体或对象,需读入一个图形文件来拓展该图形数据库,然后再逐步添加或修改数据库中的实体或对象。读入图形数据库使用函数:AcadErrorStatus AcDbDatabase:readDwgFile(

14、const char* fileName );若要使用已有的图形,比如“test.dwg”文件,则使用下列代码:AcDbDatabase *pDb= new AcDbDatabase(false);pDb-readDwgFile(“test.dwg”);AcDbDatabase构造函数的noDocument参数控制打开的数据库是否与当前文档关联,此参数用于“多文档处理”中。注意:在这种情况下,AcDbdatabase()的参数必须指定为false(当然,0或者Adesk:kFalse都可以)。因为使用pDb-readDwgFile()函数时,pDb必须是一个完全空白的数据库,也就是说,哪怕使用

15、了AcDbDatabase(false);新建数据库后,只要对数据库进行了操作,就不能再使用readDwgFile()函数,否则会导致严重的内存错误。Object ARXT i a n y u S o f t16数据库对象AcDbObject概述 每一个数据库对象具有以下三种表示方法: 句柄AcDbHandle 对象idAcDbObjectId 指针AcDbObect *Object ARXT i a n y u S o f t17三者之间的相互关系 注意: Handle不变 ,ObjectId变化Object ARXT i a n y u S o f t18之间相互关系和转换1. AcDbH

16、andle - AcDbObjectIdAcDbDatabase :getAcDbObjectId(&AcDbObjectId ,FALSE, AcDbHandle );2. AcDbObjectId - AcDbHandleAcDbHandle = AcDbObjectId:handle ();3.AcDbObjectId - AcDbObject *acdbOpenObject(AcDbObject *&,AcDbObjectId,AcDb:OpenMode);4.AcDbObject * - AcDbHandle AcDbHandle = AcDbObject:getAcDbHandle

17、();5.ads_name 和 AcDbObjcetId一个ads_name 是 一个包含两个long型元素的数组这个数组的第一个元素就是AcDbObjcetId6. ads_name 和 AcDbObjcetId相互转换acdbGetAdsName(ads_name, objId);acdbGetObjectId(objId, ads_name);Object ARXT i a n y u S o f t19怎样访问数据库对象?打开对象的方法:acdbOpenObject()该函数为模板函数,能打开任意对象acdbOpenAcDbObject()acdbOpenAcDbEntity()打开对

18、象的模式:AcDb:kForRead /只读AcDb:kForWrite /可写AcDb:kForNotify /通知升级和降级访问:AcDbObject:upgradeOpen(); /升级为写AcDbObject:downgradeOpen(); /降级为读删除对象AcDbObject:erase()Object ARXT i a n y u S o f t20用事务方式访问 事务 AcTransaction * AcTransactionManager:startTransaction AcTransactionManager:endTransaction() AcTransaction

19、Manager:abortTransaction(), virtual Acad:ErrorStatus getObject(AcDbObject*& obj, AcDbObjectId objectId, AcDb:OpenMode mode, bool openErasedObject = false)Object ARXT i a n y u S o f t21对象访问限制 如果一个对象被写打开,则在关闭前不能再被读打开或写打开 如果一个对象被读打开,则在关闭前不能再被写打开,但可被读打开(一个对象最多可同时被打开128次)Object ARXT i a n y u S o f t22对

20、象类型识别desc():a static member function that returns the class descriptor object of a particular (known) class.cast(): a static member function that returns an object of the specified type, or NULL if the object is not of the required class (or a derived class). isKindOf():returns whether an object bel

21、ongs to the specified class (or a derived class). isA(): returns the class descriptor object of an object whose class is unknown.AcRxClass例如:AcDbEntity* curEntity = somehowGetAndOpenAnEntity();if (curEntity-isKindOf(AcDbEllipse:desc() If(curEntity-isA() = AcDbEllipse:desc() AcDbLine * pLine = AcDbLi

22、ne :cast(curEntity )Object ARXT i a n y u S o f t23AutoCAD里的交互AcEd 全局函数 String, number acquisitionacedGetInt used to get an integer valueacedGetReal used to get a real valueacedGetString used to get a stringacedGetDist used to get the distance between two points Point, angle acquisitionacedGetAngle

23、used to get a angle valueacedGetPoint used to pick a pointacedGetCorner Entity selection acedEntSel used to select a single entityacedNEntSel used to select a single, nested entityacedNEntSelP used to select a single, nested entityacedSSGet used to select multiple entities Others acedGetKword used t

24、o get a key wordacedInitGet used to initialize acedGetXXXX functionsacedGetFileD used to retrieve file selection from a file dialogObject ARXT i a n y u S o f t24向ACAD发送命令 acedCommand:立即执行 acedCommand(RTSTR, zoom, RTSTR, e, 0); sendStringToExecute:作为下一个命令执行CString strCmd;strCmd.Format(_HNBMReservedA

25、reaModified %d %d , (long)ReservedAreaHandle, nType);acDocManager-sendStringToExecute(acDocManager-curDocument(), strCmd, false, true, false); 共同点:都不能执行有用户交互的命令Object ARXT i a n y u S o f t25WCS,UCS,OCS(ECS) 规则:数据库中对象保存的点坐标是WCS坐标(建议);而一些acedXX函数(如acedGetPoint,acedEntSel等)、list命令一般是UCS坐标。 WCS与UCS相互转换

26、/UCS坐标系fromrb.restype = RTSHORT;fromrb.resval.rint = 1;/WCS坐标系torb.restype = RTSHORT;torb.resval.rint = 0;acedTrans(pt_ucs,&fromrb,&torb,FALSE,resultPt); acdbUcs2Wcs acdbWcs2Ucs AcDbEntity:getEcsObject ARXT i a n y u S o f t26UCS常用函数及类函数:Acad:ErrorStatus acedGetCurrentUCS(AcGeMatrix3d& mat);(以下函数和类可

27、看作符号表的操作模式)函数:Acad:ErrorStatus getSymbolTable(AcDbUCSTable*& pTable,AcDb:OpenMode mode);类:AcDbUCSTable 类:AcDbUCSTableRecord Object ARXT i a n y u S o f t27ARX应用向导 应用向导:ObjectARX 2006的在ObjectARX 2006utilsObjARXWiz目录下。 功能:与MFC应用向导类似 产生工程 产生特定类及函数Object ARXT i a n y u S o f t28ARX,DBX加载/卸载 加载 ap(apploa

28、d) arx 其它方式(lisp文件,注册表等) 卸载 ap arxObject ARXT i a n y u S o f t29ARX软件结构 加载:On_kInitAppMsg 卸载:On_kUnloadAppMsg 命令映射(arx2006或以上):static void INTECAD_INTESelect(void) ACED_ARXCOMMAND_ENTRY_AUTO(CINTECADApp, INTECAD, _INTESelect, INTESelect, ACRX_CMD_TRANSPARENT, NULL)Object ARXT i a n y u S o f t30ARX

29、 & MFCObjectARX 完全支持MFC。两个MFC基类 AdUi and AcUi。注意:在调用资源时加上这句话 CAcModuleResourceOverride resOverride;Object ARXT i a n y u S o f t31对话框资源转换,多个ARX时可能需要CAcModuleResourceOverride resOverride;或 AfxSetResourceHandle (_hdllInstance) ; AfxSetResourceHandle (acedGetAcadResourceInstance () ;Object ARXT i a n y

30、 u S o f t32菜单与工具条 通过菜单文件 COM方式添加Object ARXT i a n y u S o f t33例1:基本操作 建立应用程序 建立命令 实现功能:选中一实体,然后输出其信息Object ARXT i a n y u S o f t34例2:重复产生同半径的圆 对话框输入半径 用鼠标指定圆心Object ARXT i a n y u S o f t35数据库结构查看工具 ARXDBG工具的使用 位置:ObjectARX 2006samplesdatabaseARXDBG 文档:ArxDbg.docObject ARXT i a n y u S o f t36本节结

31、束 下节将介绍自定义实体的内容Object ARXT i a n y u S o f t37自定义对象类 一般从 AcDbObject 或AcDbEntity派生 AcDbObject:不须显示,如字典对象 AcDbEntity:可显示/操作的实体 从其他(如AcDbLine等实体类)派生:根据需要 自定义类可继续从另一个自定义继承,从而继承体系成树状结构 编写时遵守一定的规则 放在DBX工程中Object ARXT i a n y u S o f t38自定义类特点 头文件 ACRX_DECLARE_MEMBERS ACDB_REGISTER_OBJECT_ENTRY_AUTO 版本 CPP

32、文件 ACRX_DXF_DEFINE_MEMBERS AcDbProxyEntity:kNoOperation assertReadEnabled ()与assertWriteEnabled () ; 读写控制 显示刷新 UNO/REDOObject ARXT i a n y u S o f t39DBX加载/卸载 在ARX中调用 acrxLoadModule/acrxUnloadModule ARX在使用DBX的LIB库时,可能会出现诸如:acrxGetApiVersion找不到或ARX加载失败的问题.解决方法: 在ARX和DBX工程中都增加def文件,文件内容如下: EXPORTSacrx

33、EntryPointPRIVATEacrxGetApiVersion PRIVATEObject ARXT i a n y u S o f t40自定义对象-读入/写出 作用 文件(DWG,DXF)读写 UNDO/REDO CLONE 函数 virtual Acad:ErrorStatus dwgInFields(AcDbDwgFiler* filer); virtual Acad:ErrorStatus dwgOutFields(AcDbDwgFiler* filer) const; virtual Acad:ErrorStatus dxfInFields(AcDbDxfFiler* fil

34、er); virtual Acad:ErrorStatus dxfOutFields(AcDbDxfFiler* filer) const;Object ARXT i a n y u S o f t41AcDbDwgFiler类中常用函数 virtual Acad:ErrorStatus readInt32(Adesk:Int32*) virtual Acad:ErrorStatus writeInt32(Adesk:Int32) virtual Acad:ErrorStatus readString(char*) virtual Acad:ErrorStatus writeString(co

35、nst char*) virtual Acad:ErrorStatus readPoint3d(AcGePoint3d*) virtual Acad:ErrorStatus writePoint3d(const AcGePoint3d&) virtual Acad:ErrorStatus readAcDbHandle(AcDbHandle*) virtual Acad:ErrorStatus writeAcDbHandle(const AcDbHandle&) virtual Acad:ErrorStatus readBytes(void *, Adesk:UInt32) virtual Ac

36、ad:ErrorStatus writeBytes(const void *, Adesk:UInt32)读字符串char *str=NULL;pFiler-readString(&str);m_strPanelType=str;acutDelString(str);Object ARXT i a n y u S o f t42自定义对象-显示函数: virtual Adesk:Boolean worldDraw( AcGiWorldDraw* mode); virtual void viewportDraw(AcGiViewportDraw* mode);区别 worldDraw函数用来生成

37、跟视图无关的几何图形,它只生成一组几何图形,其他的因为视图的变化而导致的几何图形变化都由AutoCAD来自动调整,举个例子,你生成一个立方体,这个立方体从不同的角度看所看到的外形是不一样的,但是worldDraw只生成一个角度的几何图形,其他的都由AutoCAD来自动的调整了。 viewportDraw则不同,它可以根据不同的视图生成不同的几何图形,当你的视图改变的时候,它自动将几何图形调整到正确的状态。有时候这两个函数需要配合使用,例如,如果你画圆,那就可以用worldDraw,因为无论你怎么变换视图圆还是圆。但是如果你生成一些表示立体的几何图形有时候就需要借助于viewportDraw了,

38、因为对于立体图形来说不同的视图看到的是不一样的。举个例子来说明其区别就是worldDraw画出来的立体图形,你改变了角度(也算viewport改变)后看到的有可能就不是立体图形了,但是你用viewportDraw画出来的就不会出现这样的问题。Object ARXT i a n y u S o f t43AcGiWorldDraw与AcGiViewportDraw 类似,但AcGiViewportDraw有视口相关的矩阵和方向函数 通过geometry得到绘图类AcGiWorldGeometry 的对象 通过subEntityTraits得到环境设置类AcGiSubEntityTraits 对象

39、Object ARXT i a n y u S o f t44AcGiWorldGeometry与AcGiGeometry circle circularArc Polyline(多段线) polygon text pline(多义线,类似于AcDbPolyline)Object ARXT i a n y u S o f t45AcGiSubEntityTraits 常用函数 virtual void setColor(const Adesk:UInt16 color) = 0; virtual void setTrueColor(const AcCmEntityColor& color) =

40、 0; virtual void setLayer(const AcDbObjectId layerId) = 0; virtual void setLineType(const AcDbObjectId linetypeId) = 0; virtual void setFillType(const AcGiFillType) = 0; virtual void setLineWeight(const AcDb:LineWeight lw) = 0; virtual void setLineTypeScale(double dScale = 1.0) = 0; 注意 一个自定义对象的不同部分可

41、分属不同层 是否填充只针对circle,polygon等封闭图形Object ARXT i a n y u S o f t46例1 自定义实体-读写/显示 生成一等边三角形的自定义实体 中心 外接圆半径 方位角Object ARXT i a n y u S o f t47自定义对象-夹点 virtual Acad:ErrorStatus getGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad:ErrorStatus moveG

42、ripPointsAt( const AcDbIntArray& indices, const AcGeVector3d& offset);Object ARXT i a n y u S o f t48自定义对象-移动 virtual Acad:ErrorStatus transformBy( const AcGeMatrix3d& xform);Object ARXT i a n y u S o f t49自定义对象-拷贝 virtual Acad:ErrorStatus deepClone(AcDbObject* pOwnerObject, AcDbObject*& pClonedObje

43、ct, AcDbIdMapping& idMap, Adesk:Boolean isPrimary = true) const; virtual Acad:ErrorStatus wblockClone(AcRxObject* pOwnerObject, AcDbObject*& pClonedObject, AcDbIdMapping& idMap, Adesk:Boolean isPrimary = true) const;Object ARXT i a n y u S o f t50自定义对象-炸开 virtual Acad:ErrorStatus explode(AcDbVoidPtr

44、Array& entitySet) const;Object ARXT i a n y u S o f t51自定义对象-捕捉点 virtual Acad:ErrorStatus getOsnapPoints( AcDb:OsnapMode osnapMode, int gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) con

45、st;Object ARXT i a n y u S o f t52自定义对象-范围virtual Acad:ErrorStatus getGeomExtents(AcDbExtents& extents) const;Object ARXT i a n y u S o f t53自定义对象-list 作用:调试检查用. virtual void list() const;Object ARXT i a n y u S o f t54自定义对象-相交点 virtual Acad:ErrorStatus intersectWith(const AcDbEntity* pEnt,AcDb:Inte

46、rsect intType,AcGePoint3dArray& points,int thisGsMarker = 0,int otherGsMarker = 0) const;Object ARXT i a n y u S o f t55自定义对象- sub事件virtual Acad:ErrorStatus subErase(Adesk:Boolean erasing);virtual Acad:ErrorStatus subOpen(AcDb:OpenMode mode);virtual Acad:ErrorStatus subClose();Object ARXT i a n y u

47、S o f t56理解拖动夹点与平移实体的工作方式 在拖动夹点时,ACAD调用自定义对象重载的moveGripPointsAt函数。但这时你要注意:此时的this指针指向的自定义对象A并非数据库中待修改的对象B,A只是ACAD复制的一个用于操作的临时对象,它的所有持久性(即保存到文件中的)参数与B相同,非持久性参数保持构造函数时的值。A并没有被加入到数据库中,所以在moveGripPointsAt不能通过database()函数获取数据库指针;A中的参数没有累积性,即在moveGripPointsAt中更改了一个类成员变量m的值,下一次调用moveGripPointsAt时,m的值与B中m值相

48、同,而不是修改过的值。 transformBy与moveGripPointsAt类似。Object ARXT i a n y u S o f t57本节结束 下节将介绍自定义对象生成与编缉 双击修改 动态生成(Jig) 属性页Object ARXT i a n y u S o f t58实体的双击修改在ARX工程中:从AcDbDoubleClickEdit派生并重载函数:virtual void startEdit(AcDbEntity *pEnt, AcGePoint3d pt); virtual void finishEdit(void);在On_kInitAppMsg中: if(!acr

49、xDynamicLinker-loadModule(/*MSG0*/ACDBLCLKEDITPE.ARX,Adesk:kFalse) AfxMessageBox(ACDBLCLKEDITPE.ARX Load Failed);/ Initialize Double Click EditingAcDbDoubleClickEdit:rxInit();acrxBuildClassHierarchy();TYTriangleDoubleClickEdit *pTriangleDoubleClickEdit=new TYTriangleDoubleClickEdit;TYTriangle:desc()

50、-addX(AcDbDoubleClickEdit:desc(),pTriangleDoubleClickEdit);Object ARXT i a n y u S o f t59实体的双击修改 On_kUnloadAppMsg函数中: TYTriangle:desc()-delX(AcDbDoubleClickEdit:desc(); startEdit函数 文档加锁 设置资源 显示对话框 修改实体 文档解锁Object ARXT i a n y u S o f t60例1:自定义实体的双击修改 可改: 外接圆半径 填充Object ARXT i a n y u S o f t61动态创建

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|