我有一个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
答案 0 :(得分:4)
找出这些细节的最佳方法是测试。如果您没有AutoCAD应用程序,请尝试使用Autodesk TrueView,它是免费的。
我通过测试发现的是:最后一个凸起值什么都不做,你可以把它改成你想要的任何值,或者只是删除它,LWPOLYLINE看起来总是一样。
编辑:
仅当LWPOLYLINE未关闭时才会出现这种情况。
如果关闭LWPOLINE,则组代码70 = 1,最后一个凸起以及最后一个开始宽度和结束宽度值应用于从最后一个顶点到第一个顶点的闭合段,您的示例为闭合折线看起来像这样:
答案 1 :(得分:1)
DXF组70是位编码的,位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)
)
)
以下entmake
表达式(最终DXF组42条目设置为-1
(=tan(-pi/4)
)会生成折线,如图所示:
(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)
)
)