加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用C++让AutoCAD自动制图

(2011-01-18 23:35:07)
标签:

cad

objectarx

c

it

分类: Computer@Skill

仅此文献给为了帮助别人偷懒的CAD工程制图的程序员们~~

刚才体验了一下AutoCAD R14的自动制图(由于太高版本很卡,而且连VC都要.Net,而且是2005或2008的,所以选择了R14)。

1。正确安装AutoCAD R14,ObjectArxSDK和VC++ 6(我在虚拟机WinXP上用的是迷你版VC++)。附录有Auto ObjectArx的下载地址。

2。在VC里添加一个新的Win32 DLL空工程。

3。在菜单“工程”/“设置”中进行:

—— “C/C++”选项卡

分类为“预处理器”,在附加包含路径一栏填写ObjectArxSDK的安装位置中INC文件夹的路径(如C:\Tools\ObjectARX\INC);

—— “连接”选项卡

分类为“常规”,“输出文件名”中把产物的扩展名从.dll改为.arx

分类为“输出”,“基地址”填写0x1c000000,“入口点”填写DllEntryPoint@12

分类为“输入”,在“对象/库模块”一栏最后面添加上acad.lib acedapi.lib rxapi.lib libacge.lib,“附加库路径”填写ObjectARX的安装位置中LIB的文件夹路径(如:C:\Tools\ObjectARX\LIB);

4。新建一个cpp文件(如ARXTest000.cpp),输入代码:

 

#include <math.h>

#include <aced.h>

#include <adslib.h>


int arxtest000();


void CallarxApp() {

arxtest000();

}


void initApp() {

acedRegCmds->addCommand("ARXTEST000","ARXTEST000","ARXTEST000",

ACRX_CMD_MODAL,CallarxApp);

}


void unloadApp() {

acedRegCmds->removeGroup("arxtest000");

}


extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg,

  void* pkt){

switch(msg) {

case AcRx::kInitAppMsg:

acrxDynamicLinker->unlockApplication(pkt);

initApp();

break;

case AcRx::kUnloadAppMsg:

unloadApp();

break;

}

return AcRx::kRetOK;

}

 

// 模块功能,在CAD中运行后,点击两个点pt1,pt2并输入一个数字num,

// 在屏幕上将画出以pt1为原点的离散点集合A={(x,20sin(x)) | x∈[pt1.x,pt2.x] 且 card(A)=num}

double f(double _x) {

return 20*sin(_x);

}


int arxtest000() {

ads_point pt1,pt2,pt3,pt4;

int num;

ads_real base,step;

 

ads_getpoint(NULL,"\ninput 1st point: ",pt1);

ads_getpoint(pt1,"\ninput 2nd point: ",pt2);

ads_getint("\ninput num: ",&num);

 

if(num<=1 || num>100) {

return AcRx::kRetOK;

}


base=pt1[0];

step=(pt2[0]-pt1[0])/(ads_real)num;

pt3[2]=0.0;

pt4[2]=0.0;


pt3[0]=base+step*num;

pt3[1]=f(pt3[0])+pt1[1];

num--;

for(;num>=0;num--) {

pt4[0]=base+step*num;

pt4[1]=f(pt4[0])+pt1[1];

ads_command(RTSTR,"pline",RTPOINT,pt3,RTPOINT,pt4,RTSTR,"C",0);

pt3[0]=pt4[0];

pt3[1]=pt4[1];

}

return AcRx::kRetOK;

}

 

5。写完代码,再新建一个文本文件,命名为ARXTest000.def(DLL描述文件),输入:

 

LIBRARY ARXTest000

DESCRIPTION "arx 1st test programme"

EXPORTS

acrxEntryPoint

_SetacrxPtp

acrxGetApiVersion

6。一切保存好,现在可以按F7组建这个模块了。现在工程文件夹里能找到ARXTest000.arx文件了。

7。打开CAD,用菜单"Tool"/"Load application..."来加载这个.arx文件。

8。在命令行输入arxtest000,接着在屏幕上随便弄两个点,再输入一个数,图形就自动画出来啦~~


 

附录:

 

ObjectArx SDK下载地址

2010(32位和64位版本)

http://download.autodesk.com/akdlm/esd/dlm/objectarx/ObjectARX_2010_Win_64_and_32Bit.exe

2009(32位和64位版本)

http://download.autodesk.com/esd/objectarx/2009/ObjectARX_2009_Win_64_and_32Bit.exe

2008

32位版本:

http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_32Bit.exe

64位版本:

http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_64Bit.exe

2007

http://download.autodesk.com/esd/objectarx/2007/Arx_All.exe

2006

http://download.autodesk.com/WebPub/autocad/oarx2006/Arx_All.exe

2005

http://download.autodesk.com/WebPub/Developer/autocad/Arx_All2005.exe

2004

http://download.autodesk.com/WebPub/autocad/oarx/arx_sdk.exe

2002

http://download.autodesk.com/pub/objectarx/objectarx_2002/K030.arx.plus.all.zip

2000

http://download.autodesk.com/pub/objectarx/ObjectArxSDK.exe

R14

http://download.autodesk.com/Pub/developer/sdk/obarxsdk.exe


 

J.Y.Liu

2010.6.22

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有