当具有凸出因子的 dxf 顶点后面没有终点时,这意味着什么?

What does it mean when a dxf vertex with a bulge factor is not followed by an end point?

我有一个 DXF 文件,它是从一个简单圆弧的绘图导出的,该圆弧开始于 (0, 0),结束于 (2, 0),半径为 1.0。我希望 LWPOLYLINE 由两个顶点组成,第一个包含起点和膨胀因子,第二个点只包含终点。但是,终点也包含膨胀因子。如何解释这个凸点?难道所有带有凸起的顶点后面都不应该跟着另一个定义终点的点吗?

AcDbPolyline
 90
        2
 70
     0
 43
0.0
 10
0.0  -----------------> x1
 20
0.0  -----------------> x2
 42
0.9999999999999998 ---> p1 to p2 w/ bulge = 1, makes sense
 10
2.0  -----------------> x2
 20
0.0  -----------------> y2
 42
1.330537671996453 ----> why does p2 have a bulge? Shouldn't all vertices w/ 
                        a bulge be followed by another point (to define the 
                        end point)?
  0
ENDSEC

找出此类细节的最佳方法是进行测试。如果您没有 AutoCAD 应用程序,请试用 Autodesk TrueView,它是免费的。

我通过测试发现:最后一个凸出值没有任何作用,您可以将其更改为您想要的任何值或删除它,LWPOLYLINE 看起来总是一样。

编辑:

仅当 LWPOLYLINE 未闭合时才成立。

如果 LWPOLINE 是闭合的,组代码 70=1,最后一个凸起以及最后一个起始宽度和结束宽度值,应用于从最后一个顶点到第一个顶点的闭合线段,您的示例作为闭合折线看起来像这样:

DXF 组 70 为 bit-coded,位 1 表示 LWPolyline 实体已关闭(请注意,这与具有重合端点的 LWPolyline 不同)。

设置位 1 后,凸出系数(DXF 组 42)和起始和结束宽度值(DXF 组 40 和 41)定义闭合线段(即跨越最后一个顶点和第一个顶点的线段)顶点)应该出现。

您可以在以下示例中见证此值的效果:

以下 entmake 表达式省略了最终的 DXF 组 42 条目(因此被解释为 0),生成如图所示的多段线:

(entmake
   '(
        (000 . "LWPOLYLINE")
        (100 . "AcDbEntity")
        (100 . "AcDbPolyline")
        (090 . 3)
        (070 . 1)
        (010 0.0 0.0)
        (010 1.0 1.0)
        (010 1.0 0.0)
    )
)

而最终 DXF 组 42 条目设置为 -1 (=tan(-pi/4)) 的以下 entmake 表达式会生成如图所示的折线:

(entmake
   '(
        (000 . "LWPOLYLINE")
        (100 . "AcDbEntity")
        (100 . "AcDbPolyline")
        (090 . 3)
        (070 . 1)
        (010 0.0 0.0)
        (010 1.0 1.0)
        (010 1.0 0.0)
        (042 . -1.0)
    )
)