如何解决添加 MTEXT 时 Autocad 不读取我的 DXF 文件
前提
我编写了一个方法,允许创建带有一些图形实体的 dxf 文件:线条、多边形、文本... 一切正常,我的 dxf 可以从我尝试过的每个程序中读取。
问题
现在我想添加一个新实体:一个以矩形为边界的文本。像其他实体一样,我搜索了正确的 dxf 等效项,然后我遵循了 this group codes table。 这个 MTEXT 在我尝试过的每个在线 dxf 阅读器中都正确显示,但在 AutoCad 中没有显示:当我尝试用 MTEXT 打开我的 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 查看器:
AutoCad 2021:
解决方法
AutoCAD 仅适用于 DXF 版本 R12 和适应度,从 DXF 版本 R13+ 开始,AutoCAD 非常挑剔。 MTEXT 至少需要 DXF R13+,因此创建 AutoCAD 接受的 DXF 文件需要做更多的工作。错误消息通常不是很有帮助,而且 DXF 参考中缺少很多信息。
-
DXF R13+ 要求每个实体(组代码 5)有一个唯一句柄
-
DXF R2000+ 需要所有者句柄(组代码 330)。 DXF R13/14 可能不需要所有者句柄。所有者句柄是实体所在布局的 BLOCK RECORD 句柄。对于 DXF R13+,块记录是管理块和布局的中央结构,因为块记录“拥有”所有实体,而不是块或布局。
-
DXF R13+ 通过子类标记将不同子类(AutoCAD 的 C++ 内部结构)的数据分开。缺少两个子类标记,第一个是 (100,"AcDbEntiy"),它标记了常见 DXF 属性(如图层和线型)的开始。第二个是 (100,"AcDbMText") 生成器,用于 MTEXT 特定属性的开头。
您的代码(在 MTEXT 之前)可能有效,因为您只使用了 DXF R12 实体,而 AutoCAD 忽略了来自更高版本 DXF 的功能。
如果您实现 DXF R2000+ 支持,您还必须添加更多必需的结构:https://ezdxf.mozman.at/docs/dxfinternals/filestructure.html#minimal-dxf-content
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。