当具有凸出因子的 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)
)
)
我有一个 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)
)
)