几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   【转帖】请教:关于添加扩展数据 (http://www.dimcax.com/hust/showthread.php?t=8165)

yang686526 2009-04-18 08:55 PM

【转帖】请教:关于添加扩展数据
 
请教:关于添加扩展数据
请教:关于添加扩展数据
void adddlg::onaddbutton()
{
// todo: add your control notification handler code here
ads_name ent;

int adddlg::init_reg_app();
if(acdbentlast(ent)!=rtnorm) return; //获取最后的实体赋给ent.
adddlg::init_reg_app();
struct resbuf head1,*eb1=null,*eb2=null;
struct resbuf ex0,ex1,ex2;

eb1=acdbentgetx(ent,&appname1);

head1.restype=-3;
head1.rbnext=&ex0;
if(eb1==null)
{
ads_printf("\n在获取实体扩展数据时出错,请重试!");
return;
}
ex0.restype=1001; //应用程序名
ex0.resval.rstring=local_appname;
ex0.rbnext=&ex1;
ex1.restype=1000; //实体标记,这里为outlet
ex1.resval.rstring="this is flag";
ex1.rbnext=&ex2;

ex2.restype=1000; //名字
ex2.resval.rstring="zhao feng jiao";
ex2.rbnext=null;
eb2=eb1;
while (eb2->rbnext!=null)
eb2=eb2->rbnext;
eb2->rbnext=&head1;
if(acdbentmod(eb1)!=rtnorm)
{
acutprintf("\n在附加扩展数据时,系统出错.");
return;
}
while (eb2->rbnext!=null) eb2=eb2->rbnext;
while (eb1->rbnext!=null) eb1=eb1->rbnext;
return;
}
int adddlg::init_reg_app()
{
struct resbuf *rbp;
strcpy(local_appname,"test");

if ((rbp = acdbtblsearch("appid", local_appname, 0)) == null)
{
if (acdbregapp(local_appname) != rtnorm)
{
acutprintf("\n不能为<%s>注册xdata.", local_appname);
return rterror;
}
}
else
acutrelrb(rbp);
appname1.resval.rstring=local_appname;
return rtnorm;
}
这里那里有问题,可编译成功,但在cad里运行时,就有操作地址的错误,搞得cad死翘翘啦。高人请指点一二。谢谢!


所有的时间均为北京时间。 现在的时间是 08:27 AM.