用C++让AutoCAD自动制图
(2011-01-18 23:35:07)
标签:
cadobjectarxcit |
分类: 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,
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