2015-09-27 30 views
0

我想在dxf文件中以编程方式创建样条曲线。我需要使用拟合点,因为曲线需要通过指定的点。我知道我也需要使用控制点。有没有一个公式来计算这些应该是什么?它是一个封闭的样条线,有四个合适的点。如何使用拟合点创建dxf样条曲线?

在此先感谢!

回答

2

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

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

Fit points vs control points

使用折线近似的样条曲线会比较容易。下面是(从0,0开始L形 - > 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是如何工作的)。

+0

是的,非常感谢Maxence - 我也有类似的结论。我正在尝试按照您的建议使用多段线 - 您是否知道我可以看到的任何示例?它看起来像多线实体一样,我也需要顶点实体。 – AesculusMaximus

+0

如果您编写的版本> R12的DXF,您可以使用LWPOLYLINE而不是POLYLINE,则不需要额外的VERTEX实体。 – Maxence

+0

我下载了引用的代码。这个代码没有帮助试图发布它在这里,但它达到了stackoverflow字符限制。无论如何,它充满了拼写错误和变量,如:AMag,k NP,Mat,Bx,By,Cx,Cy。任何地方都无法解释这些变量。 – Dustin