AUTOCAD二次开发笔记(ObjectARX)---全部.docx
文本预览下载声明
ObjectARX开发环境的创建与开发实例Hello World(VS2005+AutoCad2008+ObjectArx2008)在一个做CAD二次开发的公司做Web开发,感觉可提升的空间很小。有必要研究一下公司的产品开发,以利发展。一、首先安装好vs05与cad2008安装cad的时候也没有什么特别,加载到虚拟光驱,安装过程中有个错误提示,不影响继续。?二、安装ObjectArx2008直接打开解压缩到某个目录即可。比如C:\ObjectARX 2008然后打开C:\ObjectARX 2008\utils\ObjARXWiz目录,运行ArxWizards.msi这样在新建C++项目的时候会出现ObjectARX项目,如图?三、包含文件工具-选项-项目和解决方案-VC++目录,如图所示:包含文件(添加图中前两个目录即可)库文件(添加图中前两个目录即可)?四、新建ObjectARX项目,完成后添加MFC支持,如图所示:然后直接点finish打开acrxEntryPoint.cpp点击左上角的a按钮,然后新建一个命令。如图:只需要修改Internation Name与Localized Name为testcmd即可添加完成后,会在acrxEntryPoint.cpp中自动添加一句如下的代码:然后添加一句AfxMessageBox(_T(this is a test command.));?五、加载与运行在项目中win32\debug目录下,把ArxProject2.arx复制到桌面,注意先生成一下。打开cad08输入命令:ap打开加载对话框。找到.arx文件即可加载。如图:然后输入自己的命令testcmd就能运行了。如图:?公司高手如云,希望能在CAD二次开发方面有些发展。转行也行,呵呵。凡事以大气象去面对,优秀是一种习惯。CAD二次开发学习笔记一(画一条直接)ARX内部是不需要调用cad命令的。调用 ARX 函数或对象就可以象CAD一样绘制、编辑实体。在AutoCAD中画直接的命令是line0,01000,100通过ObjectARX画,新建一个命令cmd1代码如下:代码//?-----?ArxProject2.cmd1?commandstatic?void?ArxProject2cmd1(void){????//?Add?your?code?for?command?ArxProject2._MyCommand1?here????acutPrintf(_T(Hello?World));????//在内存上创建一个新的AcDbLine对象????AcGePoint3d?ptStart(0,0,0);????AcGePoint3d?ptEnd(10000,10000,0);????AcDbLine?*pLine?=?new?AcDbLine(ptStart,ptEnd);????/*基于AutoCAD内部的实现机制,必须在堆上创建对象。??????acdbHostApplicationServices()-workingDatabase()??????获得指向当前活动的图形数据库的指针。????*/????//获得指向块表的指针????AcDbBlockTable?*pBlockTable;????acdbHostApplicationServices()-workingDatabase()-getBlockTable(pBlockTable,AcDb::kForRead);????//获得指向特定的块表记录(模型空间)的指针????AcDbBlockTableRecord?*pBlockTableRecord;????pBlockTable-getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);????//将AcDbLine类的对象添加到块表记录中????AcDbObjectId?lineId;????pBlockTableRecord-appendAcDbEntity(lineId,pLine);????//关闭图形数据库的各种对象????pBlockTable-close();????pBlockTableRecord-close();????pLine-close();}?ap加载然后cmd1运行。凡事以大气象去面对,优秀是一种习惯。CAD二次开发学习笔记二(创建一个对话框)打开资源视图-右击-添加资源-Dialog双击对话框,弹出MFC类向导,输入类名FirstClass,确定,创建对话框类。FirstClass.h与FirstClass.cpp需要在FirstClass.h中包含#include Resource.h代码如下:?大气象#pragma?onc
显示全部