有熟悉objectarx的朋友吗?
xc 2002-10-26 09:06:32 我想建立一个匿名块,然后画一个圆,把这圆加入该块。建立匿名块代码我是照抄objectarx的帮助里面的代码,画圆是我自己写的。可是程序在关闭匿名块时总是无法关闭Unable to close anonymous block,调试发现status != RTKWORD,而是status =RTREJ.全部代码如下
struct resbuf *entlist;
ads_point basept;
char newblkname[20];
ads_point pnt1 = ( 0.0, 0.0, 0.0);
entlist = acutBuildList(
RTDXF0, "BLOCK",
2, "*ANON", // Only the '*' matters.
10, "1", // No other flags are set.
0 );
if (entlist == NULL) {
acdbFail("Unable to create result buffer list\n");
return BAD;
}
status = acdbEntMake(entlist);
acutRelRb(entlist); // Release acdbEntMake buffer.
if (status != RTNORM) {
acdbFail("Unable to start anonymous block\n");
return BAD;
}
ads_point center = {5.0, 7.0, 0.0};
char *layer = "MYLAYER";
entlist = acutBuildList(RTDXF0, "CIRCLE",// Entity type
8, layer, // Layer name
10, center, // Center point
40, 10.0, // Radius
0 );
if (entlist == NULL) {
acdbFail("Unable to create result buffer list\n");
return ;
}
status = acdbEntMake(entlist); //程序运行到这儿出了问题
if(acutRelRb(entlist)!=RTNORM)
return; // Release acdbEntMake buffer.
if (status == RTERROR) {
acdbFail("Unable to make circle entity\n");
return ;
}
entlist = acutBuildList(RTDXF0, "ENDBLK", 0 );
if (entlist == NULL) {
acdbFail("Unable to create result buffer list\n");
return BAD;
}
status = acdbEntMake(entlist);
acutRelRb(entlist); // Release acdbEntMake buffer.
if (status != RTKWORD) {
acdbFail("Unable to close anonymous block\n");
return BAD;
}
status = acedGetInput(newblkname);
if (status != RTNORM) {
acdbFail("Anonymous block not created\n");
return BAD;
}