CAD的DXF解析中LWPOLYLINE多线段凸度的相关概念和弧度转换

最近解析CAD的DXF文件时需要对合并后的多线段LWPOLYLINE组码进行解析,网上搜集了些相关资料,借鉴并摘录,同时记录下链接,以防重新搜索。

1.“已知圆弧的起点、端点和凸度,计算圆心”--

 起点(x1,y1),端点(x2,y2);
 b= 0.5*(1/bulge-bulge);  --bulge为凸度
 圆心x = 0.5*((x1+x2)-(y2-y1)*b);
 圆心y = 0.5*((y1+y2)+(x2-x1)*b);

(由起点或端点,和圆心可计算出圆半径)

结论:http://blog.sina.com.cn/s/blog_66349acf0102vivw.html

推导过程:https://blog.csdn.net/jiangyb999/article/details/89366912

解析CAD,通过凸度值绘制弧线:https://zhuanlan.zhihu.com/p/348798153

凸度--CAD多段线中的弧定义:https://blog.csdn.net/codedecipher/article/details/103014471

AutoCAD 凸度(bulge)的概念及使用WPF函数画图https://www.cnblogs.com/yuanchenhui/p/autocad_bulge.html

2.凸度定义:

        ①凸度是圆弧圆心角的四分之一的正切 

                bulge=h/s=tan(2α/4)  --(h为弧的弓高,s为弦长的一半,2α表示圆心角)

        ②凸度等于圆弧的弓高和圆弧的前进距离的比,即凸度=2H/L,H为弓高,L为前进的长度,也即弦长。bulge=2H/L=tan(β)=tan(α/2)

        ③凸度为0或无,表示直线;  

        ④凸度的正负表示圆弧的方向,

                bulge > 0 时:代表起始点沿逆时针转到终止点,角度是逐渐变大的;

                bulge < 0 时:代表起始点沿顺时针转到终止点,角度是逐渐变小的。

CAD的DXF解析中LWPOLYLINE多线段凸度的相关概念和弧度转换

 3.DXF中对LWPOLYLINE的解析参考: 

优化多段线组码

组码

说明

100

子类标记 (AcDbPolyline)

90

顶点数

70

多段线标志(按位编码);默认值为 0:
1 = 关闭;128 = Plinegen

43

固定宽度(可选;默认值 = 0)。如果设置为可变宽度(代码 40 和/或 41),则不使用

38

标高(可选;默认值 = 0)

39

厚度(可选;默认值 = 0)

10

顶点坐标(在 OCS 中),多个条目;每个顶点一个条目
DXF:X 值;APP:二维点

20

DXF:顶点坐标的 Y 值(在 OCS 中),多个条目;每个顶点一个条目

40

起点宽度(多个条目;每个顶点一个条目)(可选;默认值 = 0;多个条目)。如果设置为固定宽度(代码 43),则不使用

41

端点宽度(多个条目;每个顶点一个条目)(可选;默认值 = 0;多个条目)。如果设置为固定宽度(代码 43),则不使用

42

凸度(多个条目;每个顶点一个条目)(可选;默认值 = 0)

210

拉伸方向(可选;默认值 = 0, 0, 1)
DXF:X 值;APP:三维矢量

220, 230

DXF:拉伸方向的 Y 值和 Z 值(可选)

 4.附一段弧和直线合并形成的多段线组码实例:

 LWPOLYLINE
  5
2E0B0
330
1F
100
AcDbEntity
  8
0
100
AcDbPolyline
 90
        4
 70
     1
 43
0.0
 10
411.0409991769569
 20
533.2047196659034
 42
-0.1846606338755925
 10
911.0409991769484
 20
533.2047196659033
 10
911.0409991769484
 20
233.2047196659017
 10
411.0409991769522
 20
233.2047196659019
 42
-0.2679491924311228
  0
VIEWPORT

 感谢万能的百度和无私贡献的大佬们!

上一篇:建模方式总结


下一篇:ICCV 2019 | ICCV 2019 论文接收列表 | ICCV 2019一共接收1077篇 | 共4303篇投稿