返回介绍

添加对象指定数据

发布于 2023-08-09 23:10:33 字数 4419 浏览 0 评论 0 收藏 0

用户可以在自己的应用程序中使用2种机制来添加对象指定数据,这2种机制如下:

扩展数据(xdata)

扩展记录

扩展数据

扩展数据是一个结果缓冲区链表,应用程序可以访问这个链表。数据是通过从1000~1071 的DXF组码相关联的。这种机制可以节省空间,并且使得向对象添加数据变得很容易。但是扩展数据大小必须限制在16K以内 ,而且必须是属于DXF组码的数据类型。

可以使用McDbObject::xData()函数获得在对象中复制扩展数据的链表,该函数的原型如下:

virtual resbuf* McDbObject::xData(const char* regappname = NULL) const;

也可以使用McDbObject::setXData()函数来设置对象的扩展数据,该函数的原型如下:

virtual Mcad::ErrorStatus McDbObject::setXData(const resbuf* xdata);

setXData function

接口:virtual Mcad::ErrorStatus setXData(const struct resbuf* xdata);

参数

名称说明
xdata

扩展数据链表指针,在不使用时调用Mx::mcutRelRb释放链表

返回值:如果成功返回Mcad::eOk。

参考例程

void CTestCommands::TestDataWrite()
 {
   MrxDbgSelSet mSelset;
   mSelset.userSelect();
   McDbObjectIdArray vId;
   mSelset.asArray(vId);
  
   ID = vId[0];
  
   McDbObjectPointer<McDbText> spText(ID, McDb::kForWrite);
   
  
   CString sAppName = _T("TestExData");
   int iValue = 999;
  
   acdbRegApp(sAppName);
   struct resbuf* pExDataRb = acutBuildList(1001, sAppName, AcDb::kDxfXdInteger16, iValue, 0);
   spText->setXData(pExDataRb);
 }

xData function

接口:virtual struct resbuf* xData (LPCTSTR pszRegappName = NULL) const;

参数

名称说明
pszRegappName

扩展数据应用名,如果为空返回所有扩展数据

返回值:返回扩展数据链表,不需要是调用 Mx::mcutNewRb释放内链表。

参考例程

void CTestCommands::TestDataRead()
 {
   McDbObjectPointer<McDbText> spText(ID, McDb::kForWrite);
  
   struct resbuf* pExDataRb = spText->xData(_T(""));
  
   if (pExDataRb == NULL)
   {
    acutPrintf(_T("\n 没有扩展数据"));
   }
   else
   {
    CTestCommands::printResbufChain(pExDataRb);
   }
 }

扩展字典

每个对象都可以有一个扩展字典,它包含一个任意的 McDbObject 对象序列。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文