以编程方式创建 DXF 样条曲线

Creating DXF Spline programmatically

我需要以编程方式创建样条曲线。我做了类似的东西:

0
SECTION
  2
HEADER
  9
$ACADVER
  1
AC1006
  0
ENDSEC
  0
SECTION
  2
TABLES
  0
TABLE
2
LAYER
  0
LAYER
 2
shape
 70
 64
 62
 250
 6
CONTINUOUS
 0
LAYER
 2
holes
 70
 64
 62
 250
 6
CONTINUOUS
 0
ENDTAB
 0
ENDSEC
0
SECTION
2
ENTITIES
0
SPLINE
8
shape
100
AcDbSpline
210
0
220
0
230
1
70
4
71
3
72
11
73
4
74
4
42
0.0000001
43
0.0000001
44
0.0000000001
40
0
40
0
40
0
40
0
40
1
40
1
40
1
40
2
40
2
40
2
40
2
10
0
20
0
30
0
10
100
20
50
30
0
10
40
20
40
30
0
10
15
20
23
30
0
11
0
21
0
31
0
11
200
21
200
31
0
11
80
21
80
31
0
11
432
21
234
31
0
0
ENDSEC
0
EOF

当我尝试在 Autodesk TrueView 中打开它时,出现错误:

Undefined group code 210 for object on line 54. Invalid or incomplete DXF input -- drawing discarded.

哪里出错了?当我只将 SPLINE 部分复制到 AI 生成的 DXF 时,一切正常。所以我想我需要在 header 部分添加一些内容或其他内容。

您可能需要为 SPLINE 指定句柄,因为您指定 $ACADVER = AC1018 = AutoCAD 2004,其中需要项目句柄。

尝试在图层名称之前添加一个 5 代码对,就像这样,其中 AAAA 是一个独特的十六进制编码句柄:

  0
SPLINE
  5     <-- add these two lines
AAAA    <--
  8
shape
100
AcDbSpline

您的样条曲线为 3 阶,有 11 个节点 (0, 0,0,0,1,1,1,2,2,2,2) 和 4 个控制点 ((0,0), (100 ,50),(40,40),(15,23))。这可能是问题的罪魁祸首。您应该有 4 个控制点和 8 节或 7 个控制点和 11 节。

此文件是 DXF 版本 AC1006,早于 DXF R12。 SPLINE实体 至少需要 DXF 版本 AC1012 DXF R13/R14。但使用 DXF 版本 AC1012 DXF 文件的标签结构已更改(OBJECTS 和 类 部分,SubClassMarkers ...),因此只需编辑 DXF 版本 不起作用。

另请参阅:http://ezdxf.readthedocs.io/en/latest/dxfinternals/filestructure.html#minimal-dxf-content

而且 SPLINE 实体似乎无效,它没有句柄 (5) 也没有所有者 标记 (330),并且缺少整个 AcDbEntity 子类。