VC2005使用ObjectArx2007进行AutoCAD2007的二次开发

2012-02-06 18:23:14|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, ObjectArx, AutoCAD|来源:唯设编程网

首先需要搭建平台,要使用VC2005、ObjectARX2007对AutoCAD2007进行二次开发,前提你需要安装这三个软件,安装VC和AutoCAD没有什么特别要说明的地方,但我在安装ObjectARX2007时却总是遇到错误,ERROR CODE:2738,如下图所示:

ObjectArx安装时的2738错误

困惑了好长时间,最终在某个网站找到问题的原因是:“ installer relies upon VBScript, which for some reason isn't registered automatically!”解决方法如下:

开始->运行->输入“CMD”命令->”CD C:WindowsSystem32”->回车->"regsvr32 vbscript.dll"->回车(其中引号部分是需要你在CMD命令窗口输入的命令^_^)

重新安装就OK啦!

下面我们开始一个演示程序:

Step1、启动VC2005,选择:文件->新建->项目,项目类型如图所示

VC2005使用ObjectArx2007进行AutoCAD2007的二次开发

Step2、输入VC2005的项目名称,这里我输入:ArxProject2,点击确定,在OVERVIEW现象卡中我们保持默认参数,如图所示:

VC2005使用ObjectArx2007进行AutoCAD2007的二次开发

Step3、在VC2005/ObjectARX2007向导中的Application Type选项卡中我保持默认ObjectArx(AutoCAD Extension):

VC2005使用ObjectArx2007进行AutoCAD2007的二次开发

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 () {
    }
 
} ;
<12>
发表评论0条 】
网友评论(共?条评论)..
VC2005使用ObjectArx2007进行AutoCAD2007的二次开发