DXF文件中圆弧数据的读取和重新绘制流程

(整期优先)网络出版时间:2023-04-25
/ 2

DXF文件中圆弧数据的读取及重新绘制流程

闫帅鹏

中国电子科技集团公司第二十九所安全管理与综合保障部

【摘要】:AUTOCAD绘图软件广泛的使用到加工行业,因为每个绘图人员的习惯不一样,所以要想按照绘图员的思想能够完整的进行加工,必须首先对AUTOCAD软件生成的DXF文件进行读取和重新绘制,以方便后续按照重新绘制的图纸进行加工时提高加工效率,本文主要对圆弧数据的读取和重新绘制进行描述

【关键字】:DXF文件文件读取 重新绘制圆弧数据

:DXF文件信息元素构成

一幅完整的CAD图形,会包含图层、线型、直线、多段线、圆弧、椭圆、样条曲线等多种元素信息。为了更加完整且有条理的解析图形原有的信息,并还原出最符合加工要求的图形[2],本文将DXF文件读入的流程分为几个功能模块,文件读入流程如图1所示。

DXF文件读入流程图.jpg

1DXF文件读取流程图

二:圆弧数据的读写流程设计

从圆弧的概念当中可以看出对于圆弧有两个最重要的形成条件,就是定点也就是我们说的圆心,二就是定长也就是我们说的圆半径。所以在读取圆弧类数据的时候这两个条件是读取的关键点。

在观察DXF文件的存储信息中,我们可以看到“arc”的信息段,该信息段的下方表示的是圆弧实体段曲线的数据。在图元实体模块中,圆弧曲线的实体信息如表1所示:

1圆弧曲线的DXF组码

组代码

代码含义

0

一个实体

arc

圆弧

102030

圆弧圆心的x/y/z坐标值

40

半径

50

起点角度

51

终止点角度

根据DXF文件的编码规则,圆弧数据段的结构如下:

1、直线关键字为“arc

2、组码“10的下方,代表椭圆圆心点X坐标值

3、组码“20的下方,代表椭圆圆心点Y坐标值

4、组码“40的下方,代表圆弧半径

5、组码“50的下方,代表起点角度值

6、组码“51的下方,代表终点角度值

圆弧数据类读取流程如图2

2圆弧的读取流程图

圆弧类数据的重新绘制:

根据表1的内容,可以求出圆弧的圆心坐标和半径的准确值。而利用VB.NET自带的DrawEllipse函数就可以绘制出一个标准圆弧。

根据圆弧的方程可计算出起始第一个点的点坐标值。在绘制圆弧过程中按照0.01度的值进行旋转增加绘制第二点,以此类推,绘制出最后一个点,也就是绘制出了一个完成的圆弧。

圆弧的绘制要注意起始角度与终止角度的大小。通过实验发现,不管绘制圆弧时的顺序如何,在生成DXF文件时均是按照逆时针方向的生成圆弧的起始角度和终止角度,并且角度范围在0—360°之间。

因此,在绘制时一定要判断起始角度与终止角度的大小:

a.StartAngle<EndAngle时,角度参数从StartAngleEndAngle

b.StartAngle>EndAngle时,角度参数从StartAngleEndAngle+360

圆弧的绘制流程图如图3

3圆弧的绘制流程图

三:基于VB.NET对DXF文件中圆弧数据读取的软件设计

上述章节已经详细阐述了圆弧数据段的读写流程。本节将基于VB.NET的特点,对软件编制过程中所需的重难点进行讲解。

针对椭圆这一类图元数据,可以定义一个类名为“arc”。这个类主要有圆弧所在圆的圆心点坐标、圆弧所在圆的半径、圆弧的起始角度、圆弧的终止角度等几个属性构成。

1.intArcNumber,表示此图元包含的圆弧个数;

2.CircleX,表示圆心的X轴坐标

3CircleY,表示圆心的Y轴坐标

4.CircleR表示圆半径

5. StartAngle表示起始角度

6. EndAngle表示终止角度

7. LaserCircleX表示转换后的圆心X轴坐标

8. LaserCircleY表示转换后的圆心Y轴坐标

9. LaserCircleR表示转换后的圆半径

10. LaserStartAngle表示转化后的起始角度

11. LaserEndAngle表示转换后的终止角度

在进行绘制时,直接调用DrawLine模块,输入下列参数:

1.画笔对象

2.圆弧圆心X坐标值;

3.圆弧的圆心Y坐标值;

4.圆弧的半径值;

5.圆弧的起始角度

6.圆弧的终止角度

完整的圆弧绘制程序为:

IfnewArc.isDash = TrueThen

Draw.DrawArc(objPen, newArc.LaserCircleX - newArc.LaserCircleR, _

Form1.PictureBox1.Height - newArc.LaserCircleY - newArc.LaserCircleR,

2 * newArc.LaserCircleR, 2 * newArc.LaserCircleR, _

(360 - newArc.LaserStartAngle), FinalAngel)

ElseIfnewArc.isDotDash = TrueThen

objPen.DashStyle = Drawing2D.DashStyle.DashDotDot

Draw.DrawArc(objPen, newArc.LaserCircleX - newArc.LaserCircleR, _

Form1.PictureBox1.Height - newArc.LaserCircleY - newArc.LaserCircleR,

2 * newArc.LaserCircleR, 2 * newArc.LaserCircleR, _

(360 - newArc.LaserStartAngle), FinalAngel)

objPen.DashStyle = Drawing2D.DashStyle.DashDot

ElseDraw.DrawArc(Pens.Blue, newArc.LaserCircleX-newArc.LaserCircleR,

Form1.PictureBox1.Height - newArc.LaserCircleY - newArc.LaserCircleR,

2 * newArc.LaserCircleR, 2 * newArc.LaserCircleR, _

(360 - newArc.LaserStartAngle), FinalAngel)

综上所述,参照上面的命令可以将圆弧数据全部绘制在软件界面中。

四:结论

本文根据实际应用的需求,通过读取DXF文件的获得了AUTOCAD文件中圆弧数据的几何信息,提取了圆弧数据存储数据,并将以转化,进行重新绘制,基于VB软件进行编程。可以在实际的加工生产中促进加工效率的提升。

参考文献:

参考文献

[1]谭超,基于 AUTOCADDXF格式文件读写方法研究[J],计算机与网络,200921

[2]方勇,基于AutoCADDXF文件的转换[J],苏州职业大学学报,2003,(14),3

[3]张国庆,DXF文件在激光打标系统的应用研究[J],光电技术应用,2010(5),1

1