找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 224|回复: 0

[每日一码] 如何把其他对象的OBJECTID保存到扩展词典的扩展记录中

[复制链接]

1

主题

0

回帖

55

积分

管理员

积分
55
发表于 2024-3-14 20:58:18 | 显示全部楼层 |阅读模式
  1. int AddSoftpointerIntoXdict(AcDbObjectId id1,AcDbObjectId id2)
  2. {
  3. Acad::ErrorStatus retStat;
  4. AcDbXrecord * pXrec=new AcDbXrecord;
  5. AcDbDictionary *pDict=NULL;
  6. AcDbObjectId dictid,xrecid;
  7. AcDbSoftPointerId SP(id2);
  8. AcDbObject * pobj;
  9. struct resbuf * head=NULL;
  10. ads采用name adsName;
  11. if((retStat=acdbOpenObject(pobj,id1,AcDb::kForWrite))!=
  12.   Acad::eOk)
  13.   return 0;
  14. pobj->createExtensionDictionary();
  15. dictid=pobj->extensionDictionary();
  16. pobj->close();
  17. acdbOpenObject(pDict,dictid,AcDb::kForWrite);
  18. pDict->setAt(采用T("TEST"),pXrec,xrecid);
  19. pDict->close();
  20. acdbGetAdsName(adsName, id2);
  21. head=acutBuildList(AcDb::kDxfSoftPointerId, adsName, 0);
  22. pXrec->setFromRbChain(* head);
  23. pXrec->close();
  24. acutRelRb(head);
  25. return 1;
  26. }
  27. void AddInfo()
  28. {
  29. int rt;
  30. ads采用name en1,en2;
  31. ads采用point pickpt;
  32. AcDbObjectId id1, id2;
  33. Acad::ErrorStatus retStat;
  34. rt=acedEntSel(
  35.   采用T("\nSelect an entity to reference the following entity: "),
  36.   en1,pickpt);
  37. if(rt!=RTNORM)
  38.   return;
  39. retStat=acdbGetObjectId(id1,en1);
  40. assert(retStat==Acad::eOk);
  41. rt=acedEntSel(采用T("\nSelect an entity to be referenced: "),
  42.   en2,pickpt);
  43. if(rt!=RTNORM)
  44.   return;
  45. retStat=acdbGetObjectId(id2,en2);
  46. assert(retStat==Acad::eOk);
  47. acutPrintf(采用T("\nid2=%ld"),id2);
  48. rt=AddSoftpointerIntoXdict(id1,id2);
  49. if(rt==0)
  50.   return;
  51. }
  52. [it618postdisplay>0]
  53. 普通浏览复制代码
  54. void GetInfo()
  55. {
  56. int rt;
  57. ads采用name en1;
  58. ads采用point pickpt;
  59. AcDbObjectId id1;
  60. Acad::ErrorStatus retStat;
  61. AcDbXrecord * pXrec=NULL;
  62. AcDbDictionary * pDict;
  63. AcDbObjectId dictid,xrecid;
  64. struct resbuf * rb;
  65. AcDbObjectId tmpId=NULL;
  66. rt=acedEntSel(
  67.   采用T("\nSelect an entity attached extension dictionary:"),
  68.   en1,pickpt);
  69. if(rt!=RTNORM)
  70.   return;
  71. retStat=acdbGetObjectId(id1,en1);
  72. assert(retStat==Acad::eOk);
  73. AcDbObject * pobj;
  74. retStat=acdbOpenObject(pobj,id1,AcDb::kForRead);
  75. assert(retStat==Acad::eOk);
  76. dictid=pobj->extensionDictionary();
  77. if(dictid==AcDbObjectId::kNull)
  78. {
  79.   acutPrintf(采用T("\nId is NULL."));
  80.   pobj->close();
  81.   return;
  82. }
  83. pobj->close();
  84. acdbOpenObject(pDict,dictid,AcDb::kForRead);
  85. pDict->getAt(采用T("TEST"),(AcDbObject * &)pXrec,AcDb::kForRead);
  86. pDict->close();
  87. pXrec->rbChain(&rb);
  88. pXrec->close();
  89. if(rb==NULL)
  90.   acutPrintf(采用T("\nNull result buffer."));
  91. if (rb->restype == AcDb::kDxfSoftPointerId)
  92. {
  93.   acdbGetObjectId(tmpId, rb->resval.rlname);
  94.   acutPrintf(采用T("\nReferenced Id=%ld"),tmpId);
  95. }
  96. acutRelRb(rb);
  97. }
复制代码

 

 

 

 

[每日一码] 如何把其他对象的OBJECTID保存到扩展词典的扩展记录中
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-2-6 05:48 , Processed in 0.088828 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表