微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

添加 MTEX​​T 时 Autocad 不读取我的 DXF 文件

如何解决添加 MTEX​​T 时 Autocad 不读取我的 DXF 文件

前提

我编写了一个方法,允许创建带有一些图形实体的 dxf 文件:线条、多边形、文本... 一切正常,我的 dxf 可以从我尝试过的每个程序中读取。

问题

现在我想添加一个新实体:一个以矩形为边界的文本。像其他实体一样,我搜索了正确的 dxf 等效项,然后我遵循了 this group codes table。 这个 MTEX​​T 在我尝试过的每个在线 dxf 阅读器中都正确显示,但在 AutoCad 中没有显示:当我尝试用 MTEX​​T 打开我的 dxf 时,发生错误并且没有显示任何内容。 可能是什么问题?

我的尝试

这是我的 dxf 的多行文字部分。为了使其更易于理解,我添加了标有 // 的注释(当然文件中不存在):

0         //Entity
MTEXT
8         //Layer
0
62        //Color
   135
1         //Text
This\Pis a beautiful example.
10        //x
0
20        //y
200
40        //Nominal (initial) text height
16
41        //Reference rectangle width
50
71        //Attachment point: 1 = Top left
1
72        //Drawing direction: 5 = By style
5
50        //Rotation angle in radians
0
90        //Background fill setting: 0 = Background fill off
0

我也尝试添加所有非可选标签,但结果是一样的...

输出

通用 dxf 查看器:

enter image description here

AutoCad 2021:

enter image description here

解决方法

AutoCAD 仅适用于 DXF 版本 R12 和适应度,从 DXF 版本 R13+ 开始,AutoCAD 非常挑剔。 MTEXT 至少需要 DXF R13+,因此创建 AutoCAD 接受的 DXF 文件需要做更多的工作。错误消息通常不是很有帮助,而且 DXF 参考中缺少很多信息。

  1. DXF R13+ 要求每个实体(组代码 5)有一个唯一句柄

  2. DXF R2000+ 需要所有者句柄(组代码 330)。 DXF R13/14 可能不需要所有者句柄。所有者句柄是实体所在布局的 BLOCK RECORD 句柄。对于 DXF R13+,块记录是管理块和布局的中央结构,因为块记录“拥有”所有实体,而不是块或布局。

  3. DXF R13+ 通过子类标记将不同子类(AutoCAD 的 C++ 内部结构)的数据分开。缺少两个子类标记,第一个是 (100,"AcDbEntiy"),它标记了常见 DXF 属性(如图层和线型)的开始。第二个是 (100,"AcDbMText") 生成器,用于 MTEX​​T 特定属性的开头。

您的代码(在 MTEX​​T 之前)可能有效,因为您只使用了 DXF R12 实体,而 AutoCAD 忽略了来自更高版本 DXF 的功能。

如果您实现 DXF R2000+ 支持,您还必须添加更多必需的结构:https://ezdxf.mozman.at/docs/dxfinternals/filestructure.html#minimal-dxf-content

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。