返回介绍

提供的接口

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

可以看到的是,数据都是以程序名(即 kDxfRegAppName = 1001)开始,而在后挂在相关的信息。

获取、修改、删除扩展数据

获取扩展数据的接口如下:

virtual struct resbuf*    xData   (
    LPCTSTR pszRegappName = NULL - 扩展数据应用名,如果为空返回所有扩展数据
) const;

设置扩展数据的接口如下:

virtual Mcad::ErrorStatus setXData(
    const struct resbuf* xdata - 扩展数据链表指针,在不使用时调用Mx::mcutRelRb释放链表
);

需要注意的是:如果我们创建了已有的应用程序名并设置到扩展数据,将会覆盖之前该应用名下的数据,在本实例中,我们通过提示用户的方式,选择覆盖、加入尾部(合并)的方式来添加,代码如下:

		 McDbObjectPointer<AcDbEntity> spEnt(m_mId, AcDb::kForWrite);
		 if (spEnt.openStatus() == Acad::eOk)
		 {
			 auto pData = spEnt->xData(sTemp);

			 if (pData)
			 {
				 auto iResult = MxDraw::MxMessageBox(L"已有该程序名的扩展数据,YES[覆盖] NO[合并] CANCLE[取消]", MB_YESNOCANCEL);
				 if (IDYES == iResult) {
					 CreateNewXData();
				 }
				 else if (IDNO == iResult) {
					 CreateNewXData();
					 pLastNode->rbnext = pData->rbnext;
					 pData->rbnext = pExDataRb;
				 }
				 else {
					 return;
				 }
			 }
			 else
			 {
				 CreateNewXData();
			 }
			 spEnt->setXData(pExDataRb);
			 acutRelRb(pData);
		 }

仅需将已有扩展数据的最后一个数据的rbnext指针指向我们新添加的节点即可

删除扩展数据的接口如下:

virtual Mcad::ErrorStatus delXData(
    LPCTSTR pzsAppName = NULL - 删除的扩展数据名称,如果为空,删除所有扩展数据。
);

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

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

发布评论

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