以编程方式创建 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 子类。
我需要以编程方式创建样条曲线。我做了类似的东西:
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 子类。