DXF 文件 - 无法在 Autodesk 查看器中打开
DXF File - Won't Open in Autodesk Viewer
我们正在构建一个 DXF 导出器,据我所知,这个极其简单的文件应该是有效的。我们没有任何可用于测试的 CAD 工具,因此我的调试能力非常有限。这在 the Proficad online viewer but I get an error from the Autodesk viewer 中打开很好,说 "The drawing file is invalid and cannot be viewed"。
这是完整的文件。感谢您的帮助!
0
SECTION
2
ENTITIES
0
LWPOLYLINE
90
5
70
0
43
0.0
10
-8.75
20
-11.75
30
0.0
10
-8.75
20
11.75
30
0.0
10
8.75
20
11.75
30
0.0
10
8.75
20
-11.75
30
0.0
10
-8.75
20
-11.75
30
0.0
0
ENDSEC
0
EOF
根据 Autodesk 的官方 DXF 规范 (PDF here),LWPOLYLINE 的顶点仅是二维的;例如,它们应该只有 10
和 20
代码,而不是任何 30
代码,并且由于您所有的 30
代码都是 0.0
,因此不应该制作区别。如果您确定 LWPOLYLINE 需要具有非零的 Z 值,您可以在第一个 10
代码对之前指定一个代码 38
对(高程)。
如果每个点都需要不同的 Z 值,请考虑使用 POLYLINE 和许多 VERTEX 实体,后跟一个 SEQEND。
编辑:虽然 DXF 规范应该是非常自由形式的,但我发现它的 Autodesk 实现对它可以读取的内容非常特别。
事实上,LWPOLYLINE 只是二维的...
还有一个建议:继续使用 AutoCAD 并创建一个类似的绘图,然后导出为 DXF,这样您就可以与您正在设计的进行比较。
您的 DXF 文件存在一些问题。
LWPOLYLINE 需要大量额外开销才能使用。您需要一个 TABLES 部分,然后您必须处理 AcDbEntity 和 AcDbPolyline 条目。它很快变得复杂。切换到 POLYLINE 实体会让您省去很多麻烦。
您需要 AutoCAD 的 HEADER 部分才能打开 DXF 文件。你不必在 HEADER 中放太多,基本上只是版本信息。
下面显示的是可以在 AutoCAD 中成功打开的功能最少的 DXF 文件(以 R12 格式保存):
0
SECTION
2
HEADER
9
$ACADVER
1
AC1009
0
ENDSEC
0
SECTION
2
ENTITIES
0
POLYLINE
5
7C
8
0
66
1
10
0.0
20
0.0
30
0.0
0
VERTEX
5
174
8
0
10
-8.75
20
-11.75
30
0.0
0
VERTEX
5
175
8
0
10
-17.5
20
0.0
30
0.0
0
VERTEX
5
176
8
0
10
-8.75
20
11.75
30
0.0
0
VERTEX
5
177
8
0
10
0.0
20
0.0
30
0.0
0
VERTEX
5
178
8
0
10
-8.75
20
-11.75
30
0.0
0
SEQEND
5
179
8
0
0
ENDSEC
0
EOF
如果这就是您要放入文件中的全部内容,它应该可以正常工作。请记住,所有 DXF 实体都需要一个句柄(基本上是一个 ID 号)。
0
POLYLINE
5
7C
上面的5
是表示句柄(身份证号码)的代码。 7C
是实际句柄。如果您添加更多实体,则需要为每个实体增加句柄,因此每个实体都有一个唯一的句柄。
好吧,您的问题特定于 DXF 中的特定数据格式问题,即 missing/adding AutoCad 不满意的一些值。解决此问题的最佳机会是尝试从 AutoCad 创建一个类似的文件并比较您可能 missed/added 错误的文件。在这种情况下,其他人很难为您调试。我看过 Autocad 的 DXF 规范 pdf,底部有一些编写 DXF 文件的帮助部分,也可以参考一下。
我们正在构建一个 DXF 导出器,据我所知,这个极其简单的文件应该是有效的。我们没有任何可用于测试的 CAD 工具,因此我的调试能力非常有限。这在 the Proficad online viewer but I get an error from the Autodesk viewer 中打开很好,说 "The drawing file is invalid and cannot be viewed"。
这是完整的文件。感谢您的帮助!
0
SECTION
2
ENTITIES
0
LWPOLYLINE
90
5
70
0
43
0.0
10
-8.75
20
-11.75
30
0.0
10
-8.75
20
11.75
30
0.0
10
8.75
20
11.75
30
0.0
10
8.75
20
-11.75
30
0.0
10
-8.75
20
-11.75
30
0.0
0
ENDSEC
0
EOF
根据 Autodesk 的官方 DXF 规范 (PDF here),LWPOLYLINE 的顶点仅是二维的;例如,它们应该只有 10
和 20
代码,而不是任何 30
代码,并且由于您所有的 30
代码都是 0.0
,因此不应该制作区别。如果您确定 LWPOLYLINE 需要具有非零的 Z 值,您可以在第一个 10
代码对之前指定一个代码 38
对(高程)。
如果每个点都需要不同的 Z 值,请考虑使用 POLYLINE 和许多 VERTEX 实体,后跟一个 SEQEND。
编辑:虽然 DXF 规范应该是非常自由形式的,但我发现它的 Autodesk 实现对它可以读取的内容非常特别。
事实上,LWPOLYLINE 只是二维的...
还有一个建议:继续使用 AutoCAD 并创建一个类似的绘图,然后导出为 DXF,这样您就可以与您正在设计的进行比较。
您的 DXF 文件存在一些问题。
LWPOLYLINE 需要大量额外开销才能使用。您需要一个 TABLES 部分,然后您必须处理 AcDbEntity 和 AcDbPolyline 条目。它很快变得复杂。切换到 POLYLINE 实体会让您省去很多麻烦。
您需要 AutoCAD 的 HEADER 部分才能打开 DXF 文件。你不必在 HEADER 中放太多,基本上只是版本信息。
下面显示的是可以在 AutoCAD 中成功打开的功能最少的 DXF 文件(以 R12 格式保存):
0
SECTION
2
HEADER
9
$ACADVER
1
AC1009
0
ENDSEC
0
SECTION
2
ENTITIES
0
POLYLINE
5
7C
8
0
66
1
10
0.0
20
0.0
30
0.0
0
VERTEX
5
174
8
0
10
-8.75
20
-11.75
30
0.0
0
VERTEX
5
175
8
0
10
-17.5
20
0.0
30
0.0
0
VERTEX
5
176
8
0
10
-8.75
20
11.75
30
0.0
0
VERTEX
5
177
8
0
10
0.0
20
0.0
30
0.0
0
VERTEX
5
178
8
0
10
-8.75
20
-11.75
30
0.0
0
SEQEND
5
179
8
0
0
ENDSEC
0
EOF
如果这就是您要放入文件中的全部内容,它应该可以正常工作。请记住,所有 DXF 实体都需要一个句柄(基本上是一个 ID 号)。
0
POLYLINE
5
7C
上面的5
是表示句柄(身份证号码)的代码。 7C
是实际句柄。如果您添加更多实体,则需要为每个实体增加句柄,因此每个实体都有一个唯一的句柄。
好吧,您的问题特定于 DXF 中的特定数据格式问题,即 missing/adding AutoCad 不满意的一些值。解决此问题的最佳机会是尝试从 AutoCad 创建一个类似的文件并比较您可能 missed/added 错误的文件。在这种情况下,其他人很难为您调试。我看过 Autocad 的 DXF 规范 pdf,底部有一些编写 DXF 文件的帮助部分,也可以参考一下。