如何使用fitpoints创建dxf样条曲线?

时间:2015-09-27 08:44:28

标签: autocad spline dxf

我试图在dxf文件中以编程方式创建样条曲线。我需要使用拟合点,因为曲线需要通过指定的点。我明白我还需要使用控制点。是否有计算这些应该是什么的公式?它是一个带有四个拟合点的闭合样条曲线。

提前致谢!

2 个答案:

答案 0 :(得分:4)

我认为这不是一件容易的事。除控制点外,您还需要确定结点。有一个DXF阅读器/阅读器here(用C ++编写)声称支持样条曲线。也许你可以通过阅读代码找到一些信息。

AutoCAD使用近似曲线的NURBS(曲线仅通过第一个和最后一个点传递)。在用户界面中,样条插值(曲线通过拟合点),因此在读取/写入DXF文件时会进行转换。如果您创建一个具有4个拟合点的闭合点,您将看到DXF文件中有7个控制点:

Fit points vs control points

使用折线近似样条曲线会更容易。这是一条折线样本(L形从0,0开始 - > 100,0 - > 100,50)

  0
LWPOLYLINE
  5
D5
  330
70
  100
AcDbEntity
  8
0
  100
AcDbPolyline
  90
3
  70
0
  43
0.0
  10
0.0
  20
0.0
  10
100.0
  20
0.0
  10
100.0
  20
50.0

要从拟合点计算控制点的位置,您可以参考此page(§24&§25)。实际上你需要反转Casteljau的算法(对于Bezier曲线;我不知道它如何对NURBS起作用)。

答案 1 :(得分:1)

虽然我很欣赏这是一个老问题,但我认为我会分享自己的经验。我发现您可以仅使用拟合点而不使用控制点将样条曲线写入DXF文件。我只用开放的样条曲线来做到这一点,并且它可能(或可能确实)因版本而异。

SECTION
2
ENTITIES
0
SPLINE
8
Outline
100
AcDbSpline
70
1032
71
3
72
0
73
0
74
6
44
0.000000001
11
33.98654201387437
21
0.0
31
0.0
11
35.68732510673189
21
0.36908328878159574
31
0.0
11
37.37659045005916
21
1.0707740721032477
31
0.0
11
39.04265824154412
21
2.0149195037916585
31
0.0
11
40.67371568762629
21
3.1732042281057
31
0.0
11
42.25786591112497
21
4.5302062466715505
31
0.0

组码70位值1024允许拟合点。我在AutoCAD forum post上发现了一点点信息。我没有在其他地方引用过它。位值为1是闭合样条线,位值为8是平面。我的1032值显然是平面的,适合点且不封闭。

组代码74是装配点的数量。

组代码44是装配点公差。

组代码11、21、31是装配点的x,y,z坐标。

请参见reference manual