- 积分
- 1627
- 明经币
- 个
- 注册时间
- 2003-4-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
我得程序有个问题,开始如果用objectARX2000 AppWizzard生成程序框架后,可以编译和构造,但在AutoCAD中加载后运行时,出现异常,一看由向导生成的文件挺多的,不好找错误,便把我得程序放在了helloworld例子的框架中,能编译,但不能构造arx文件,出现的错误提示我不懂,希望那位好心人帮帮忙,现在附上代码,如下,
//Cpp文件开始
#include <aced.h>
#include <rxregsvc.h>
#include <math.h>
#include <dbents.h>
void initApp();
void unloadApp();
void dist_alert(); //主要函数,
double acgedist(AcGePoint3d &pt1,AcGePoint3d &pt2){
double x,y,z;
double x1,y1,z1,x2,y2,z2;
x1=pt1[0];x2=pt2[0];x=x1-x2;
y1=pt1[1];y2=pt2[1];y=y1-y2;
z1=pt1[2];z2=pt2[2];z=z1-z2;
return sqrt(x*x+y*y+z*z);
} //用于计算两 AcGePoint3d 点之间的距离的函数
void initApp()
{
// register a command with the AutoCAD command mechanism
acedRegCmds->addCommand("taoyi",
"ttt",
"ttt",
ACRX_CMD_MODAL,
dist_alert);
}
void unloadApp()
{
acedRegCmds->removeGroup("taoyi");
}
//-------main function start,功能是选中一些Line后,弹出对话框来显示其长度值
void dist_alert()
{
struct resbuf eb1;
char sbuf1[10]; // Buffers to hold strings
ads_name ssname1;
eb1.restype = 0; // Entity name
strcpy(sbuf1, "LINE");
eb1.resval.rstring = sbuf1;
eb1.rbnext = NULL; // No other properties
acedSSGet(NULL, NULL, NULL, &eb1, ssname1);
long ss_len, i;
ads_name cur_ent;
acedSSLength(ssname1, &ss_len);
for(i=0;i<ss_len;i++){
acedSSName(ssname1, i, cur_ent);
AcDbObjectId cur_ent_id;
acdbGetObjectId(cur_ent_id,cur_ent);
AcDbEntity* pcur_ent;
acdbOpenObject(pcur_ent,cur_ent_id,AcDb::kForRead);
AcDbLine *pcur_line;
pcur_line = AcDbLine::cast(pcur_ent);// wait wait ....
double dist_real;
char* dist_str=NULL;
dist_real = acgedist(pcur_line->endPoint(),pcur_line->startPoint());
acdbRToS(dist_real,2,3,dist_str);
acedAlert(strcat(strcat("The enity is the " , dist_str), " Units!"));
}
}
//main function end-----------应该很简单吧^_^
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg)
{
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(pkt);
acrxRegisterAppMDIAware(pkt);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
default:
break;
}
return AcRx::kRetOK;
}
//CPP文件结束
好像没有上载文件的功能了, |
|