【问题标题】:Creating DXF Spline programmatically以编程方式创建 DXF 样条
【发布时间】:2017-05-04 12:44:06
【问题描述】:

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

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 中打开它时,出现错误:

第 54 行对象的未定义组代码 210。 DXF 输入无效或不完整 -- 绘图已丢弃。

错误在哪里?当我将 SPLINE 部分复制到 AI 生成的 DXF 时,一切正常。所以我想我需要在标题部分添加一些东西。

【问题讨论】:

  • 当我尝试在 AutoCAD 中打开您的 DXF 时,它在第 42 行失败(表 APPID 中的错误)
  • @Maxence 对,只需将 AC1018 更改为 AC1006 并重试。这是我的错。原始文件有“AC1006”,我试图以某种方式修复它。
  • AC1006 AutoCAD R10。不确定此时是否支持样条曲线。他们的 ObjectBirthVersion 是 AC1012 (AutoCAD R13)
  • AutoCAD 2017 因 AC1006 崩溃

标签: spline autodesk dxf


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您的样条曲线是 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 个节。

    【讨论】:

    • 是的,但在此之前出现错误。另外,正如我之前所说,当我将 SPLINE 部分移动到 Adob​​e Illustrator 生成的 DXF 时,此 SPLINE 工作正常。
    【解决方案3】:

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

    尝试在层指定之前添加一个 5 代码对,如下所示,其中 AAAA 是唯一的十六进制编码句柄:

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

    【讨论】:

    • 我在哪里可以找到这个手柄?我需要以某种方式声明它吗?当我添加一个随机数(如 3E)时,我得到: > 第 50 行的数据库句柄 3E 无效。DXF 输入无效或不完整 -- 绘图被丢弃。
    • 另外,当我使用 ARC、LINE 和 CIRCLE 时,相同的“DXF 底座”(不带手柄)也可以正常工作。 ELLIPSE 和 SPLINE 没有。
    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多