2012-02-06 18:23:14|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, ObjectArx, AutoCAD|来源:唯设编程网
首先需要搭建平台,要使用VC2005、ObjectARX2007对AutoCAD2007进行二次开发,前提你需要安装这三个软件,安装VC和AutoCAD没有什么特别要说明的地方,但我在安装ObjectARX2007时却总是遇到错误,ERROR CODE:2738,如下图所示:
困惑了好长时间,最终在某个网站找到问题的原因是:“ installer relies upon VBScript, which for some reason isn't registered automatically!”解决方法如下:
开始->运行->输入“CMD”命令->”CD C:WindowsSystem32”->回车->"regsvr32 vbscript.dll"->回车(其中引号部分是需要你在CMD命令窗口输入的命令^_^)
重新安装就OK啦!
下面我们开始一个演示程序:
Step1、启动VC2005,选择:文件->新建->项目,项目类型如图所示
Step2、输入VC2005的项目名称,这里我输入:ArxProject2,点击确定,在OVERVIEW现象卡中我们保持默认参数,如图所示:
Step3、在VC2005/ObjectARX2007向导中的Application Type选项卡中我保持默认ObjectArx(AutoCAD Extension):
Step4、VC2005/ObjectARX2007向导的其它选项卡保持默认,单击FINISH按钮
Step5、在新建完成的项目中找到acrxEntryPoint.cpp文件并打开,在 CArxProject1App类中的virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt)函数内注册自定义命令,在virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt)函数中删除自定义命令,在该实例中我们定义命令CREATELINE创建直线,定义CREATECIRCLE命令创建圆,修改完成后的代码如 下:
class CArxProject1App : public AcRxArxApp { public: CArxProject1App () : AcRxArxApp () {} virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {//入口函数 // TODO: Load dependencies here acedRegCmds->addCommand(_T("DEDYDGROUP"),_T("CREATELINE"),_T("CREATELINE"),ACRX_CMD_TRANSPARENT|ACRX_CMD_USEPICKSET,myCreateLine); acedRegCmds->addCommand(_T("DEDYDGROUP"),_T("CREATECIRCLE"),_T("CREATECIRCLE"),ACRX_CMD_TRANSPARENT|ACRX_CMD_USEPICKSET,myCreateCircle); // You *must* call On_kInitAppMsg here AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ; // TODO: Add your initialization code here return (retCode) ; } virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {//退出函数 // TODO: Add your code here acedRegCmds->removeGroup(_T("DEDYDGROUP")); // You *must* call On_kUnloadAppMsg here AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ; // TODO: Unload dependencies here return (retCode) ; } virtual void RegisterServerComponents () { } } ;