2003年3月第20卷第1期沈阳航空工业学院学报JournalofShenyangInstituteofAeronauticalEngineeringMar.2003Vol.20No.1文章编号:10071385(2003)01002902关于基本形体的DXF与STL文件格式之间的转化张滢1刘宝明1杨者青2池海丰3(11沈阳航空工业学院CADΠCAM中心辽宁沈阳110034;21沈阳航空工业学院院长办公室辽宁沈阳110034;31沈阳市财政局辽宁沈阳110001)摘要:通过对DXF与STL的文件格式进行深入分析,发现三维图形信息的DXF文件,有大量的密码信息;在STL文件中,三维图形数据主要是以顶点坐标形式存储的;但可对基本形体的DXF与STL文件格式进行转化,这在理论上是非常有意义的。关键词:DXF文件;STL文件;转化中图分类号:TP391172文献标识码:ADXF与STL文件是比较常见的图形文件格式。它们之间的不同之处在于:在使用过程中,DXF文件主要是二维图形的数据来源,而STL文件是三维图形的数据来源。实际上,DXF文件既可表示二维图形,也可以存储三维数据。因此,如果程序能实现两者之间的转换,将给我们读取数据提供更大的方便。1DXF文件实体数据的读取DXF文件是目前流行的CAD(如AutoCAD、MasterCAM、ProΠEngineer、CATIA、UG等)系统软件提供的一种通用的图形交换文件格式。其中,AutoCAD所有的图形文件都是通过数据库来管理的,但这些数据库是以压缩数据格式存储的,用高级语言程序直接获取其中的信息是极为复杂的。为此,若对AutoCAD进行二次开发,常常读取DXF文件。文献〔1〕对DXF文件格式进行了深入研究,并针对二维图形在数控车削自动编程系统中得到了实际应用。目前,我们常常直接对三维图形信息进行处理,DXF文件中的三维图形信息应该是存储在实体节内。但是当打开一个包含三维图形信息的DXF文件时,发现了大量的密码信息。这是由于AutuCAD软件对其生成的三维实体拥有专利权,表达三维实体的部分均为专利符号,无法直接进行读取和利用。因此,只有间接的从其它部分进行读取。进一步分析文件其他部分格式,可以发现在收稿日期:20020713作者简介:张滢(1967)。男,辽宁凌源人,副教授标题节中有一组组码包含一些有用的信息。它们是用来表示图形扩展范围的最大、最小坐标变量S|EXTMAX与S|EXTMIN。因此,只要读取Xmin、Ymin、Zmin、Xmax、Ymax与Zmax值,即可确定要转换的实体的全部几何信息。但是,从此处所读取的数据毕竟较少,无法完全描述所有实体。同时,实体的移动、旋转及布尔运算也受到了限制,造成了文件格式转换的局限性。2STL文件格式分析STL文件格式是由3DSYSTEM公司于1988年制定的一个接口协议,是一种为快速原型制造技术(RPM)服务的三维图形文件格式。它分为ASCⅡ码和二进制两种。随着RPM的发展与应用,STL文件格式也得到了各CADΠCAM软件公司的广泛支持。文献[2]针对STL文件格式进行了详细分析,并可对任何形体进行真实感处理。3数据处理算法读取实体的最大、最小坐标以后,生成以三角形顶点表示的STL文件,实际是由三角形对实体进行空间分割的过程。经过这种分割,可以求出每个三角面的顶点坐标,并将其以一定的格式写入STL文件。由于立方体、楔体及圆锥体的输出较为简单,下面主要分析圆柱体、球体与圆环体的分割算法。311圆柱体的分割如图1所示:已知圆柱体的圆周切分密度N及最大、最小顶点坐标(Xmin,Ymin,Zmin)、(Xmax,Ymax,30沈阳航空工业学院学报第20卷Zmax),可确定圆柱体的半径:令r=形顶点坐标为:x[i]=r×sin(2π×i)Ny[i]=r×cos(2π×i)Nxmax-xmin2,三角(1)②其它面:点[i][j]→点[i+1][i]→点[i+1][j+1]点[i][j]→点[i+1][j+1]→点[i][j+1]z[i]=zmin或zmax在生成STL文件时,分为两部分输出。输出顶点顺序为:①上、下底面:上中心点→点(i(上)→点i+1(上)下中心点→点i+1(下)→点i(下)②侧面:点i(上)→点i(下)→点i+1(上)点i(上)→点i+1(下)→点i+1(上)图1圆柱体分割示意图312球体的分割分割球体时,需要两个方向的切割密度M,N。如图2所示:首先求出球心坐标为:xmin+xmax图2球体分割示意图313圆环体的分割分割球体时,需要两个方向的切割密度M,N。如图3所示:其中球心坐标如式(2);半径r=(xmax-xmin)Π2;切割圆半径b=(zmax-zmin)Π2;rT=r-b;根据空间几何关系,得到顶点坐标算法如下:for(inti=0;i<=N;i++){xTc[i]=rT3sin(2...