欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    ObjectArx开发培训教程课件.ppt

    • 资源ID:1286760       资源大小:251.45KB        全文页数:87页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ObjectArx开发培训教程课件.ppt

    ObjectARX Training,华中科技大学CAD中心武汉天喻软件有限责任公司2010年2月,Object ARX,1,T i a n y u S o f t,ObjectARX Training华中科技大学CAD中心O,ObjectARX应用的介绍,ObjectARX是一个仅在AutoCAD上进行二次开发的一套开发环境,通俗点讲就是一系列的APIObjectARX的应用举例:扩展AutoCAD功能为各种工程设计开发便利的工具,Object ARX,2,T i a n y u S o f t,ObjectARX应用的介绍ObjectARX是一个仅在Au,ObjectARX概述,ARXAutoCAD Runtime eXtensionDBX DataBase eXtensionARX = .DLL + 2 exported functions acrxEntryPoint & acrxGetApiVersion ,AutoCAD.EXE,ARX Apps,ARX Apps,ObjectARX APIs,Object ARX,3,T i a n y u S o f t,ObjectARX概述ARXAutoCAD Runtim,ObjectARX开发特点,不同的ACAD版本用不同的开发包及开发环境ACAD2000ACAD2002 : VC+ 6.0ACAD2004ACAD2006 : VS.NET 2002ACAD2007ACAD2009 : VS.NET 2005ACAD2010 : VS.NET 2008ACAD2007开始字符串采用UNICODE编码ARX之间不能连续依赖A.arx依赖B.arx, B.arx依赖C.dbx,则A.arx不能加载与ACAD已有功能地位一致,Object ARX,4,T i a n y u S o f t,ObjectARX开发特点不同的ACAD版本用不同的开发包及,ObjectARX类库构成,AcRx:用于帮定一个应用程序以及运行类的注册和识别。AcEd:用于注册自定义命令和AutoCAD事件通告。AcDb:AutoCAD图形数据库。AcGi: 用于AutoCAD 的图形类。AcGe:用于AutoCAD 的线型和几何对象通用类。ADS: AutoCAD 的早期版本C语言函数库。,Object ARX,5,T i a n y u S o f t,ObjectARX类库构成AcRx:用于帮定一个应用程序以及,ObjectARX类结构,类图classmap.dwg位置:ObjectARX 2006classmap,Object ARX,6,T i a n y u S o f t,ObjectARX类结构类图classmap.dwgObje,用ObjectARX能做些什么?,访问、编辑和扩展AutoCAD图形数据库和AutoCAD系统相互通信使用MFC创建用户接口支持多文档应用创建自定义类和自定义实体可以开发复杂的应用和其他开发环境进行协作,Object ARX,7,T i a n y u S o f t,用ObjectARX能做些什么?访问、编辑和扩展AutoCA,培训安排-1,一、基础AUTOCAD数据库结构及操作,ads_name-句柄-ID及转换,aced常用函数,WCS/UCS及转换,菜单/工具条/对话框制作二、自定义对象显示/存储/夹点/移动/拷贝/范围/list/捕捉点/炸开/相交点/sub事件三、自定义对象生成与编缉双击修改/Jig/属性页,Object ARX,8,T i a n y u S o f t,培训安排-1一、基础Object ARX8T i a n y,培训安排-2,四、一些重要对象字典/层/线型/字体样式五、扩展数据六、反应器八、总结,Object ARX,9,T i a n y u S o f t,培训安排-2四、一些重要对象Object ARX9T i a,所需基础,ACAD基本操作C+VCMFC(界面)COM(属性页等)STL(提高效率),Object ARX,10,T i a n y u S o f t,所需基础ACAD基本操作Object ARX10T i a,AutoCAD图形数据库概述,AutoCAD图形实际上是一系列存放在一个AcDbDatabase类型的对象中的AcDb对象。一个dwg就是一个数据库具备数据库的基本组织结构。包括九个符号表和一个命名对象词典,Object ARX,11,T i a n y u S o f t,AutoCAD图形数据库概述AutoCAD图形实际上是一系列,AutoCAD图形数据库结构,AcDbDatabase数据库 |-AcDb符号表 | |-块表(AcDbBlockTable) | |-尺寸标注样式表(AcDbDimStyleTable) | |-层表(AcDbLayerTable) | |-线型表(AcDbLinetypeTable) | |-已注册应用程序表(AcDbRegAppTable) | |-字体样式表(AcDbTextStyleTable) | |-用户坐标系表(AcDbUCSTable) | |-视口表(AcDbViewportTable) | |-视图表(AcDbViewTable) |-命名对象词典访问:AcDbDatabase:getSymbolTable,Object ARX,12,T i a n y u S o f t,AutoCAD图形数据库结构AcDbDatabase数据库O,向数据库中添加实体,Acad:ErrorStatus addEntityToModelSpace(AcDbEntity * pEnt, AcDbObjectId ,Object ARX,13,T i a n y u S o f t,向数据库中添加实体Acad:ErrorStatus ad,怎样遍历AutoCAD图形数据库?,void FindObjectId(AcDbObjectId ,Object ARX,14,T i a n y u S o f t,怎样遍历AutoCAD图形数据库?void FindObje,怎样创建和使用已有的AutoCAD图形数据库?,要使用AcDbDatabase数据库,与使用其它数据库一样,首先要声明一个数据库对象。AcDbDatabase类的声明,调用类的构造函数:AcDbDatabase :AcDbDatabase(bool buildDefaultDrawing = true, bool noDocument = false);其中,buildDefaultDrawing参数控制是否创建一个包括所有默认数据记录的数据库。该参数的默认值为true,这样在AcDbDatabase数据库创建时,将在新建的数据库中包含一个AutoCAD图形数据库必须包含的基本数据要素,这些要素包括九个符号表及其初始记录(比如0层、STANDARD文字样式等),命名对象词典(组词典和多线样式词典)以及必要的系统变量设置。这样就可以向新建的数据库中添加各种实体和对象。如:AcDbDatabase *pDb= new AcDbDatabase(true);若指定该参数为false,AutoCAD将创建一个完全空的AcDbDatabase数据库。这样的AcDbDatabase数据库不能直接向其中添加实体或对象,需读入一个图形文件来拓展该图形数据库,然后再逐步添加或修改数据库中的实体或对象。读入图形数据库使用函数:AcadErrorStatus AcDbDatabase:readDwgFile(const char* fileName );若要使用已有的图形,比如“test.dwg”文件,则使用下列代码:AcDbDatabase *pDb= new AcDbDatabase(false);pDb-readDwgFile(“test.dwg”);AcDbDatabase构造函数的noDocument参数控制打开的数据库是否与当前文档关联,此参数用于“多文档处理”中。注意:在这种情况下,AcDbdatabase()的参数必须指定为false(当然,0或者Adesk:kFalse都可以)。因为使用pDb-readDwgFile()函数时,pDb必须是一个完全空白的数据库,也就是说,哪怕使用了AcDbDatabase(false);新建数据库后,只要对数据库进行了操作,就不能再使用readDwgFile()函数,否则会导致严重的内存错误。,Object ARX,15,T i a n y u S o f t,怎样创建和使用已有的AutoCAD图形数据库?要使用AcDb,数据库对象AcDbObject概述,每一个数据库对象具有以下三种表示方法:句柄AcDbHandle对象idAcDbObjectId指针AcDbObect *,Object ARX,16,T i a n y u S o f t,数据库对象AcDbObject概述每一个数据库对象具有以下三,三者之间的相互关系,注意: Handle不变 ,ObjectId变化,Object ARX,17,T i a n y u S o f t,三者之间的相互关系 注意: Handle不变 ,Object,之间相互关系和转换,1. AcDbHandle - AcDbObjectIdAcDbDatabase :getAcDbObjectId(,Object ARX,18,T i a n y u S o f t,之间相互关系和转换1. AcDbHandle - AcDb,怎样访问数据库对象?,打开对象的方法:acdbOpenObject()该函数为模板函数,能打开任意对象acdbOpenAcDbObject()acdbOpenAcDbEntity()打开对象的模式:AcDb:kForRead /只读AcDb:kForWrite /可写AcDb:kForNotify /通知升级和降级访问:AcDbObject:upgradeOpen(); /升级为写AcDbObject:downgradeOpen(); /降级为读删除对象AcDbObject:erase(),Object ARX,19,T i a n y u S o f t,怎样访问数据库对象?打开对象的方法:Object ARX19,用事务方式访问,事务AcTransaction * AcTransactionManager:startTransaction AcTransactionManager:endTransaction() AcTransactionManager:abortTransaction(),virtual Acad:ErrorStatus getObject(AcDbObject*& obj, AcDbObjectId objectId, AcDb:OpenMode mode, bool openErasedObject = false),Object ARX,20,T i a n y u S o f t,用事务方式访问事务Object ARX20T i a n y,对象访问限制,如果一个对象被写打开,则在关闭前不能再被读打开或写打开如果一个对象被读打开,则在关闭前不能再被写打开,但可被读打开(一个对象最多可同时被打开128次),Object ARX,21,T i a n y u S o f t,对象访问限制如果一个对象被写打开,则在关闭前不能再被读打开或,对象类型识别,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 belongs 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 = AcDbLine :cast(curEntity ),Object ARX,22,T i a n y u S o f t,对象类型识别desc():Object ARX22T i,AutoCAD里的交互,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 pointsPoint, angle acquisitionacedGetAngle used to get a angle valueacedGetPoint used to pick a pointacedGetCornerEntity selectionacedEntSel used to select a single entityacedNEntSel used to select a single, nested entityacedNEntSelP used to select a single, nested entityacedSSGet used to select multiple entitiesOthersacedGetKword used to get a key wordacedInitGet used to initialize acedGetXXXX functionsacedGetFileD used to retrieve file selection from a file dialog,Object ARX,23,T i a n y u S o f t,AutoCAD里的交互AcEd 全局函数Object ARX,向ACAD发送命令,acedCommand:立即执行acedCommand(RTSTR, zoom, RTSTR, e, 0);sendStringToExecute:作为下一个命令执行CString strCmd;strCmd.Format(_HNBMReservedAreaModified %d %d , (long)ReservedAreaHandle, nType);acDocManager-sendStringToExecute(acDocManager-curDocument(), strCmd, false, true, false);共同点:都不能执行有用户交互的命令,Object ARX,24,T i a n y u S o f t,向ACAD发送命令acedCommand:立即执行Objec,WCS,UCS,OCS(ECS),规则:数据库中对象保存的点坐标是WCS坐标(建议);而一些acedXX函数(如acedGetPoint,acedEntSel等)、list命令一般是UCS坐标。WCS与UCS相互转换/UCS坐标系fromrb.restype = RTSHORT;fromrb.resval.rint = 1;/WCS坐标系torb.restype = RTSHORT;torb.resval.rint = 0;acedTrans(pt_ucs,acdbUcs2Wcs acdbWcs2Ucs AcDbEntity:getEcs,Object ARX,25,T i a n y u S o f t,WCS,UCS,OCS(ECS)规则:数据库中对象保存的点坐,UCS常用函数及类,函数:Acad:ErrorStatus acedGetCurrentUCS(AcGeMatrix3d类:AcDbUCSTable 类:AcDbUCSTableRecord,Object ARX,26,T i a n y u S o f t,UCS常用函数及类函数:Acad:ErrorStatus,ARX应用向导,应用向导:ObjectARX 2006的在ObjectARX 2006utilsObjARXWiz目录下。功能:与MFC应用向导类似产生工程产生特定类及函数,Object ARX,27,T i a n y u S o f t,ARX应用向导应用向导:ObjectARX 2006的在O,ARX,DBX加载/卸载,加载ap(appload)arx其它方式(lisp文件,注册表等)卸载aparx,Object ARX,28,T i a n y u S o f t,ARX,DBX加载/卸载加载Object ARX28T i,ARX软件结构,加载:On_kInitAppMsg卸载:On_kUnloadAppMsg命令映射(arx2006或以上):static void INTECAD_INTESelect(void)ACED_ARXCOMMAND_ENTRY_AUTO(CINTECADApp, INTECAD, _INTESelect, INTESelect, ACRX_CMD_TRANSPARENT, NULL),Object ARX,29,T i a n y u S o f t,ARX软件结构加载:On_kInitAppMsgObject,ARX & MFC,ObjectARX 完全支持MFC。两个MFC基类 AdUi and AcUi。注意:在调用资源时加上这句话 CAcModuleResourceOverride resOverride;,Object ARX,30,T i a n y u S o f t,ARX & MFCObjectARX 完全支持MFC。Obj,对话框,资源转换,多个ARX时可能需要CAcModuleResourceOverride resOverride;或AfxSetResourceHandle (_hdllInstance) ;AfxSetResourceHandle (acedGetAcadResourceInstance () ;,Object ARX,31,T i a n y u S o f t,对话框资源转换,多个ARX时可能需要Object ARX31,菜单与工具条,通过菜单文件COM方式添加,Object ARX,32,T i a n y u S o f t,菜单与工具条通过菜单文件Object ARX32T i a,例1:基本操作,建立应用程序建立命令实现功能:选中一实体,然后输出其信息,Object ARX,33,T i a n y u S o f t,例1:基本操作建立应用程序Object ARX33T i a,例2:重复产生同半径的圆,对话框输入半径用鼠标指定圆心,Object ARX,34,T i a n y u S o f t,例2:重复产生同半径的圆对话框输入半径Object ARX3,数据库结构查看工具,ARXDBG工具的使用位置:ObjectARX 2006samplesdatabaseARXDBG文档:ArxDbg.doc,Object ARX,35,T i a n y u S o f t,数据库结构查看工具ARXDBG工具的使用Object ARX,本节结束,下节将介绍自定义实体的内容,Object ARX,36,T i a n y u S o f t,本节结束下节将介绍自定义实体的内容Object ARX36T,自定义对象类,一般从 AcDbObject 或AcDbEntity派生AcDbObject:不须显示,如字典对象AcDbEntity:可显示/操作的实体从其他(如AcDbLine等实体类)派生:根据需要自定义类可继续从另一个自定义继承,从而继承体系成树状结构编写时遵守一定的规则放在DBX工程中,Object ARX,37,T i a n y u S o f t,自定义对象类一般从 AcDbObject 或AcDbEnti,自定义类特点,头文件ACRX_DECLARE_MEMBERSACDB_REGISTER_OBJECT_ENTRY_AUTO版本CPP文件ACRX_DXF_DEFINE_MEMBERSAcDbProxyEntity:kNoOperationassertReadEnabled ()与assertWriteEnabled () ;读写控制显示刷新UNO/REDO,Object ARX,38,T i a n y u S o f t,自定义类特点头文件Object ARX38T i a n y,DBX加载/卸载,在ARX中调用acrxLoadModule/acrxUnloadModuleARX在使用DBX的LIB库时,可能会出现诸如:acrxGetApiVersion找不到或ARX加载失败的问题.解决方法:在ARX和DBX工程中都增加def文件,文件内容如下:EXPORTSacrxEntryPointPRIVATEacrxGetApiVersionPRIVATE,Object ARX,39,T i a n y u S o f t,DBX加载/卸载在ARX中调用Object ARX39T i,自定义对象-读入/写出,作用文件(DWG,DXF)读写UNDO/REDOCLONE函数virtual Acad:ErrorStatus dwgInFields(AcDbDwgFiler* filer);virtual Acad:ErrorStatus dwgOutFields(AcDbDwgFiler* filer) const;virtual Acad:ErrorStatus dxfInFields(AcDbDxfFiler* filer);virtual Acad:ErrorStatus dxfOutFields(AcDbDxfFiler* filer) const;,Object ARX,40,T i a n y u S o f t,自定义对象-读入/写出作用Object ARX40T i a,AcDbDwgFiler,类中常用函数 virtual Acad:ErrorStatus readInt32(Adesk:Int32*) virtual Acad:ErrorStatus writeInt32(Adesk:Int32) virtual Acad:ErrorStatus readString(char*) virtual Acad:ErrorStatus writeString(const char*) virtual Acad:ErrorStatus readPoint3d(AcGePoint3d*) virtual Acad:ErrorStatus writePoint3d(const AcGePoint3d,Object ARX,41,T i a n y u S o f t,AcDbDwgFiler类中常用函数Object ARX41,自定义对象-显示,函数:virtual Adesk:Boolean worldDraw( AcGiWorldDraw* mode);virtual void viewportDraw(AcGiViewportDraw* mode);区别worldDraw函数用来生成跟视图无关的几何图形,它只生成一组几何图形,其他的因为视图的变化而导致的几何图形变化都由AutoCAD来自动调整,举个例子,你生成一个立方体,这个立方体从不同的角度看所看到的外形是不一样的,但是worldDraw只生成一个角度的几何图形,其他的都由AutoCAD来自动的调整了。viewportDraw则不同,它可以根据不同的视图生成不同的几何图形,当你的视图改变的时候,它自动将几何图形调整到正确的状态。有时候这两个函数需要配合使用,例如,如果你画圆,那就可以用worldDraw,因为无论你怎么变换视图圆还是圆。但是如果你生成一些表示立体的几何图形有时候就需要借助于viewportDraw了,因为对于立体图形来说不同的视图看到的是不一样的。举个例子来说明其区别就是worldDraw画出来的立体图形,你改变了角度(也算viewport改变)后看到的有可能就不是立体图形了,但是你用viewportDraw画出来的就不会出现这样的问题。,Object ARX,42,T i a n y u S o f t,自定义对象-显示函数:Object ARX42T i a n,AcGiWorldDraw与AcGiViewportDraw,类似,但AcGiViewportDraw有视口相关的矩阵和方向函数通过geometry得到绘图类AcGiWorldGeometry 的对象通过subEntityTraits得到环境设置类AcGiSubEntityTraits 对象,Object ARX,43,T i a n y u S o f t,AcGiWorldDraw与AcGiViewportDraw,AcGiWorldGeometry与AcGiGeometry,circlecircularArcPolyline(多段线)polygontextpline(多义线,类似于AcDbPolyline),Object ARX,44,T i a n y u S o f t,AcGiWorldGeometry与AcGiGeometry,AcGiSubEntityTraits,常用函数 virtual void setColor(const Adesk:UInt16 color) = 0; virtual void setTrueColor(const AcCmEntityColor注意一个自定义对象的不同部分可分属不同层是否填充只针对circle,polygon等封闭图形,Object ARX,45,T i a n y u S o f t,AcGiSubEntityTraits常用函数Object,例1 自定义实体-读写/显示,生成一等边三角形的自定义实体中心外接圆半径方位角,Object ARX,46,T i a n y u S o f t,例1 自定义实体-读写/显示生成一等边三角形的自定义实体Ob,自定义对象-夹点,virtual Acad:ErrorStatus getGripPoints(AcGePoint3dArray,Object ARX,47,T i a n y u S o f t,自定义对象-夹点virtual Acad:ErrorSta,自定义对象-移动,virtual Acad:ErrorStatus transformBy( const AcGeMatrix3d,Object ARX,48,T i a n y u S o f t,自定义对象-移动virtual Acad:ErrorSta,自定义对象-拷贝,virtual Acad:ErrorStatus deepClone(AcDbObject* pOwnerObject, AcDbObject*,Object ARX,49,T i a n y u S o f t,自定义对象-拷贝virtual Acad:ErrorSta,自定义对象-炸开,virtual Acad:ErrorStatus explode(AcDbVoidPtrArray,Object ARX,50,T i a n y u S o f t,自定义对象-炸开virtual Acad:ErrorSta,自定义对象-捕捉点,virtual Acad:ErrorStatus getOsnapPoints( AcDb:OsnapMode osnapMode, int gsSelectionMark, const AcGePoint3d,Object ARX,51,T i a n y u S o f t,自定义对象-捕捉点virtual Acad:ErrorSt,自定义对象-范围,virtual Acad:ErrorStatus getGeomExtents(AcDbExtents,Object ARX,52,T i a n y u S o f t,自定义对象-范围virtual Acad:ErrorSt,自定义对象-list,作用:调试检查用.virtual void list() const;,Object ARX,53,T i a n y u S o f t,自定义对象-list作用:调试检查用.Object ARX5,自定义对象-相交点,virtual Acad:ErrorStatus intersectWith(const AcDbEntity* pEnt,AcDb:Intersect intType,AcGePoint3dArray,Object ARX,54,T i a n y u S o f t,自定义对象-相交点virtual Acad:ErrorSt,自定义对象- sub事件,virtual Acad:ErrorStatus subErase(Adesk:Boolean erasing);virtual Acad:ErrorStatus subOpen(AcDb:OpenMode mode);virtual Acad:ErrorStatus subClose();,Object ARX,55,T i a n y u S o f t,自定义对象- sub事件virtual Acad:Err,理解拖动夹点与平移实体的工作方式,在拖动夹点时,ACAD调用自定义对象重载的moveGripPointsAt函数。但这时你要注意:此时的this指针指向的自定义对象A并非数据库中待修改的对象B,A只是ACAD复制的一个用于操作的临时对象,它的所有持久性(即保存到文件中的)参数与B相同,非持久性参数保持构造函数时的值。A并没有被加入到数据库中,所以在moveGripPointsAt不能通过database()函数获取数据库指针;A中的参数没有累积性,即在moveGripPointsAt中更改了一个类成员变量m的值,下一次调用moveGripPointsAt时,m的值与B中m值相同,而不是修改过的值。transformBy与moveGripPointsAt类似。,Object ARX,56,T i a n y u S o f t,理解拖动夹点与平移实体的工作方式在拖动夹点时,ACAD调用自,本节结束,下节将介绍自定义对象生成与编缉双击修改动态生成(Jig)属性页,Object ARX,57,T i a n y u S o f t,本节结束下节将介绍自定义对象生成与编缉Object ARX5,实体的双击修改,在ARX工程中:从AcDbDoubleClickEdit派生并重载函数:virtual void startEdit(AcDbEntity *pEnt, AcGePoint3d pt); virtual void finishEdit(void);在On_kInitAppMsg中:if(!acrxDynamicLinker-loadModule(/*MSG0*/ACDBLCLKEDITPE.ARX,Adesk:kFalse) AfxMessageBox(ACDBLCLKEDITPE.ARX Load Failed);/ Initialize Double Click EditingAcDbDoubleClickEdit:rxInit();acrxBuildClassHierarchy();TYTriangleDoubleClickEdit *pTriangleDoubleClickEdit=new TYTriangleDoubleClickEdit;TYTriangle:desc()-addX(AcDbDoubleClickEdit:desc(),pTriangleDoubleClickEdit);,Object ARX,58,T i a n y u S o f t,实体的双击修改在ARX工程中:从AcDbDoubleClic,实体的双击修改,On_kUnloadAppMsg函数中:TYTriangle:desc()-delX(AcDbDoubleClickEdit:desc();startEdit函数文档加锁设置资源显示对话框修改实体文档解锁,Object ARX,59,T i a n y u S o f t,实体的双击修改On_kUnloadAppMsg函数中:Obj,例1:自定义实体的双击修改,可改:外接圆半径填充,Object ARX,60,T i a n y u S o f t,例1:自定义实体的双击修改可改:Object ARX60T,动态创建,AcEdJigvirtual DragStatus sampler () ;virtual Adesk:Boolean update () ;virtual AcDbEntity *entity () const ;DragStatus drag();,Object ARX,61,T i a n y u S o f t,动态创建AcEdJigObject ARX61T i a n,Object ARX,62,T i a n y u S o f t,Object ARX62T i a n y u S o f,AcEdJIg中的用户输入函数,DragStatus acquireString(char *str); DragStatus acquireAngle(double 注意:不能使用acedXXX函数,Object ARX,63,T i a n y u S o f t,AcEdJIg中的用户输入函数 DragStatus acq,AcEdJig:其它函数,const char* keywordList();void setKeywordList(const char*);const char* dispPrompt();void setDispPrompt(const char*, .);AcEdJig:CursorType specialCursorType();void setSpecialCursorType(CursorType);AcEdJig:UserInputControls userInputControls();void setUserInputControls(AcEdJig:UserInputControls);,Object ARX,64,T i a n y u S o f t,AcEdJig:其它函数const char* keywor,例2:动态生成自定义实体,用向导生成或手工书写向导生成的AcEdJig派生类有错:头文件中除去ACRX_DECLARE_MEMBERSCPP文件中除去ACRX_CONS_DEFINE_MEMBERS,Object ARX,65,T i a n y u S o f t,例2:动态生成自定义实体用向导生成或手工书写Object A,练习,自定义实体具有N条边的多边形画出多边形及外接圆可输入边数N和外接圆半径动态创建在创建过程中显示图形在创建过程中显示并可修改尺寸(选作)双击修改,Ob

    注意事项

    本文(ObjectArx开发培训教程课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开