5

我们正在构建一个 DXF 导出器,根据我的阅读,这个非常简单的文件应该是有效的。我们没有任何 CAD 工具可供测试,因此我的调试能力非常有限。这可以在Proficad 在线查看器中正常打开,但我从Autodesk 查看器中收到错误消息,提示“绘图文件无效,无法查看”。

这是整个文件。任何帮助表示赞赏!

  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
4

4 回答 4

4

您的 DXF 文件存在一些问题。

  1. LWPOLYLINE 需要大量额外开销才能使用。您需要一个 TABLES 部分,然后您必须处理 AcDbEntity 和 AcDbPolyline 条目。它很快变得复杂。切换到 POLYLINE 实体将为您省去很多麻烦。

  2. 您需要 AutoCAD 的 HEADER 部分才能打开 DXF 文件。您不必在 HEADER 中添加太多内容,基本上只是版本信息。

下面显示的是一个功能最少的 DXF 文件(以 R12 格式保存),它将在 AutoCAD 中成功打开:

  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上面是指示句柄(ID 号)将跟随的代码。这7C是实际的句柄。如果添加更多实体,则需要为每个实体增加句柄,因此每个实体都有一个唯一的句柄。

于 2015-05-26T18:15:24.170 回答
2

根据 Autodesk 的官方 DXF 规范(此处为 PDF),LWPOLYLINE 的顶点仅是 2D;例如,他们应该只有1020代码,而不是任何30代码,因为你所有的30代码都是0.0它不应该有所作为。如果您确实决定 LWPOLYLINE 需要具有非零的 Z 值,则可以38在您的第一个代码对之前指定一个代码对(高程)10

如果您需要为每个点设置不同的 Z 值,请考虑使用 POLYLINE 与许多 VERTEX 实体后跟单个 SEQEND。

编辑:虽然 DXF 规范应该是非常自由的形式,但我发现它的 Autodesk 实现对它可以读取的内容非常特别。

于 2015-05-21T23:49:29.630 回答
1

事实上,LWPOLYLINE 只是 2D 的......

还有一个建议:继续使用 AutoCAD 并创建一个类似的图形,然后导出为 DXF,这样您就可以与您正在设计的内容进行比较。

于 2015-05-22T14:11:15.677 回答
0

好吧,您的问题特定于 DXF 中的特定数据格式问题,该问题缺少/添加了一些 AutoCad 不满意的值。解决此问题的最佳机会是尝试从 AutoCad 创建一个类似的文件,并比较您可能错过/错误添加的内容。在这种情况下,其他人很难为您调试。我看过 Autocad 的 DXF 规范 pdf,底部有一些编写 DXF 文件的帮助部分,也可以参考它们。

于 2015-08-13T08:51:43.793 回答