DXF 文件 - 如何将带有标签文本的“AcDbText”实体链接到几何实体 (AcDbPolyline)?

问题描述

我想这个问题可能没有准确的答案,但也许我至少可以更好地理解使用 DXF 文件...

我需要处理 DXF​​ 文件(平面图)并将标签(通常是房间名称链接到代表特定房间的实体。 我检查了 DXF 文件,两个实体之间似乎没有链接TEXT 实体有一个唯一的句柄(代码 5),它有一个指向另一个对象的软指针(我认为是通用块定义 - 代码 330),但事实并非如此。所以我的问题是:

  1. 我是否正确地假设在这种情况下唯一的方法是将标签的坐标与“最近”几何对象的坐标进行比较?这是可行的,但如果有几个重叠的对象怎么办 - 我可以看到那里有一些潜在的风险。

  2. 有没有办法在 AutoCAD 或类似工具中包含从文本实体到几何实体的“精确”链接?也许使用某些属性?目前我对 DXF 的了解很少,所以如果有人能指点我一些文档或示例 .dxf 文件,其中包含这种“精确链接”的东西,那就太好了。

非常感谢!

解决方法

有没有办法在 AutoCAD 或类似工具中包含从文本实体到几何实体的“精确”链接?也许使用某些属性?目前我对 DXF 的了解很少,所以如果有人能指点我一些文档或示例 .dxf 文件,其中包含这种“精确链接”的东西,那就太好了。

很可能还有其他方法可以做您想做的事。例如:

此外,AutoCAD 有一种称为 Extended Entity Data 的机制,它包含在任何 DXF 数据文件中(请参阅提供的链接)。

AutoCAD 提供了一些用于处理 XDATA 的工具,您还可以使用第三方扩展程序,例如 CADPowerGeoTools,它们具有 XDATA 工具库。当然,您可以编写自己的插件来做您想做的事。

总而言之,您可以将 handleTEXT 作为 XDATA 附加到表示房间的 POLYLINE。将 TEXT 附加为 XDATA 后,它将在 DXF 文件中可用,您将能够解析它并找到 TEXT 元素的句柄。

编写一个在 AutoCAD 中运行的 VBA 宏并不难,它要求您选择两个元素,然后将文本实体句柄添加为 XDATA。那么你就可以开始了。