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


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-16, 03:17 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】[求助]各位高手帮帮忙:(扩展字典问题)

[求助]各位高手帮帮忙:(扩展字典问题)
[求助]各位高手帮帮忙:(扩展字典问题)
我想为各个层添加扩展字典,来记录层上的一些信息,下面是我的函数(我把层名作为字典的名字)
createdictionary()
{

acdbobjectid pcurlayerid;
pcurlayerid=acdbhostapplicationservices()->workingdatabase()->clayer();
acdblayertablerecord* ptrec;
acdbopenobject(ptrec,pcurlayerid,acdb::kforwrite);
ptrec->createextensiondictionary();
acdbobjectid dictobjid,xrecobjid;
acdbxrecord *pxrec = new acdbxrecord;
acdbdictionary* pdict;
dictobjid=ptrec->extensiondictionary();
ptrec->close();
acdbopenobject(pdict,dictobjid,acdb::kforwrite);
pdict->setat(pclname,pxrec,xrecobjid);
pdict->close();

resbuf* head;
head=acutbuildlist(acdb::kdxftext,name,acdb::kdxfreal,area,acdb::kdxfreal,
rlength,acdb::kdxfreal,rwidth,acdb::kdxfint16,num,rtnone);
pxrec->setfromrbchain(*head);
pxrec->close();
acutrelrb(head);
}//其中name、area、length、width、num分别为cstring double double double int型
为了验证扩展字典的正确性,我编写了下面的函数进行验证
readdictionary(cstring name)
{
acdblayertable *player;
acdblayertablerecord *prec;
acdbobjectid dictobjid;
acdbdictionary *pdict;
acdbxrecord *pxrec;
acdbhostapplicationservices()->workingdatabase()
->getsymboltable(player,acdb::kforread);
player->getat(name,prec,acdb::kforread);
player->close();
dictobjid=prec->extensiondictionary();
prec->close();
acdbopenobject(pdict,dictobjid,acdb::kforread);
pdict->getat(name,(acdbobject*&)pxrec,acdb::kforread);
pdict->close();
struct resbuf* prblist;
pxrec->rbchain(&prblist);
pxrec->close();
prblist->rbnext;//从第二个数据开始输出
acedprintf("area=%f\n",prblist->resval.rreal);
prblist->rbnext;
acedprintf("length=%f\n",prblist->resval.rreal);
prblist->rbnext;
acedprintf("width=%f\n",prblist->resval.rreal);
prblist->rbnext;
acedprintf("num=%f\n",prblist->resval.rint);
acutrelrb(prblist);
}
编译运行都没有问题,可就是得不到我输入的结果,请问各位高手,我的程序哪里有问题;还是不可以为层添加扩展词典
问题解决了,这是一个愚蠢而低级的错误出错的地方我已经做了标注,下面是改进后的代码,希望大家不要犯和我类似的错误
resbuf *prblist;
resbuf *ptemp;
pxrec->rbchain(&prblist);
ptemp=prblist;
pxrec->close();
ptemp=ptemp->rbnext;
acedprintf("area=%f\n",prblist->resval.rreal);
ptemp=ptemp->rbnext;
acedprintf("length=%f\n",prblist->resval.rreal);
ptemp=ptemp->rbnext;
acedprintf("width=%f\n",prblist->resval.rreal);
ptemp=ptemp->rbnext;
acedprintf("num=%f\n",prblist->resval.rint);
acutrelrb(prblist);
哈哈,我又回来了。互相学习,共同提高qq:250623330我的群:1083110
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



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


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多