CN104239400A - 基本形体的dxf文件格式转换为stl文件格式的方法 - Google Patents

基本形体的dxf文件格式转换为stl文件格式的方法 Download PDF

Info

Publication number
CN104239400A
CN104239400A CN201410339375.0A CN201410339375A CN104239400A CN 104239400 A CN104239400 A CN 104239400A CN 201410339375 A CN201410339375 A CN 201410339375A CN 104239400 A CN104239400 A CN 104239400A
Authority
CN
China
Prior art keywords
file
value
max
point
dxf
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410339375.0A
Other languages
English (en)
Inventor
张滢
石鑫
庞凯民
赵文杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenyang Aerospace University
Original Assignee
Shenyang Aerospace University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenyang Aerospace University filed Critical Shenyang Aerospace University
Priority to CN201410339375.0A priority Critical patent/CN104239400A/zh
Publication of CN104239400A publication Critical patent/CN104239400A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

基本形体的DXF文件格式转换为STL文件格式的方法,其属于文档处理技术领域。该方法实现DXF图形交换文件转换成STL文件;利用VC++进行语言编程,读取并显示实体图形的DXF文件内容信息并将其转换为STL文件内容信息;调用OnFileOpen函数打开DXF文件,读取文件内容信息中基本形体的最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,确定基本形体的几何信息;根据基本形体的几何信息通过调用OnFileTran函数,用三角形对基本形体进行空间分割,求出每个三角形面的顶点坐标,生成以三角形顶点表示的数据信息,并将其写入STL文件。DXF向STL文件格式的转化,缩短产品的设计周期,拓宽软件的使用范围,提高工作效率,节省储存空间。

Description

基本形体的DXF文件格式转换为STL文件格式的方法
技术领域
本发明涉及一种基本形体的DXF文件格式转换为STL文件格式的方法,其属于文档处理技术领域。
背景技术
21世纪是信息高度发达、科学技术不断更新的新时代。CAD技术已经在多个行业领域得到了广泛应用,其应用技术的范畴也早已打破图形软件的约束,包括快速原型设计、参数化设计以及系统的生成等等。特别是近些年来,由文件格式支持的快速成型(Rapid Prototyping,简称RP)技术得到了迅猛发展,备受制造行业的青睐。作为技术集成度高和生产柔性度好的结合体,快速成型技术与CAD技术紧密相连,快速发展。美国奥巴马总统在2012年3月9日提出发展美国振兴制造业计划,并启动首个“增材制造”项目,即快速成型项目(研制过程中信息的传递主要采用STL文件格式),这标志着快速成型技术将作为国家制造业发展的首要战略并予以政府支持。
各种新技术的发展,当然离不开文件数据的处理。一般来说,所有快速成型和数控材料的去除过程均需要从CAD系统中提取数据信息。关于AutoCAD图形文件的研究应用,如数据读取、图形显示及文件管理等内容,已经引起了世界各国的高度重视,国外专家学者们也作出了巨大的贡献,取得了优异的科研成果。Ferreira.Jose Carvalho通过计算机辅助工程(CAE)开发了一个集成的CAD/RP/有限元分析系统,用以改进压铸制造工艺,协助减少压铸件的设计时间和优化升级压铸件的制造工艺参数,从而支持CAD/RP/FEA技术和NC控制。Hur.S-M等人采用delaunay三角剖分方法,以三角形的角度、三角形减少速率以及容许区域作为依据来构建三角形数据结构,对逆向工程(Reserve Engineering,简称RE)中STL文件数据进行轻量化处理,减少了经过3D激光扫描仪所测得的数据量,大大节省了在建模过程中点数据的处理时间,加速了STL文件的模型切片进程。Rahmati.Sadegh等人把工作重点放在了3D打印模型的精度、表层以及颜色质量方面,所创建的模型表层厚度在25-150um之间,使工作看起来像是重新参数化设计3D打印机。Hayasi.Mohamad T等人通过求交算法对DXF文件模型的特征图素进行提取,将特征信息转化成制造信息,再通过制造信息的识别,为RP和CNC生成加工路线代码,为计算机辅助工艺规划提供数据库支持。EmadS.Abouel Nasr等人也提出了依据制造特征从CAD系统读取图形元素的方法,Navangul.Gaurav等人提出了分层制造中基于STL文件坐标转换算法等等,上述研究均直接或间接地使得DXF、STL文件格式成为最为受用的图形存储格式。Sakao.Tomohiko指出了CAD系统模型设计在S/PE,即服务/产品工程中的应用与未来发展趋势。由于快速成型技术对于CAD模型的处理要求严格,特别是对于表面建模的CAD模型,其表面模型的拓扑信息的缺失总是会导致其与RP接口对接困难等问题。为此,Meier.Ingo R等人提出了一种用于建立模型拓扑结构的新算法,经过这种算法处理后的拓扑模型满足STL文件自身顶点到顶点的条件限制,缓解了上述接口对接困难的问题。Galantucci.L.M等人利用有效容积的方法从3D扫描的产品中输出STL文件,从而为逆向工程和快速成型提供技术支撑。Sukimin等人基于DXF文件格式分析,对DXF文件进行自动提取几何模型操作,最终实现模型的真实感显示。在建筑CAD领域,日本学者在3D设计方面率先使用STL文件模型,并随后研发了完整的建筑设计CAD/CAM系统软件,使3D打印技术与计算机辅助设计CAD捆绑起来,共同作用。
STL文件格式支持的3D打印技术在航空领域也得到了广泛应用。美国的波音公司已经能够利用三维打印技术制造大约300种不同的飞机零部件,包括将冷空气导入电子设备的形状复杂导管,目前波音公司正在研究利用3D打印技术打印出机翼等更大型的产品。欧洲空客航空公司在这方面也有所作为,空客在A380客舱里使用3D打印的行李架,在“台风”战斗机中也使用了3D打印的空调系统。空客公司最近又提出了“透明飞机概念”计划,制定了一张“路线图”,即从打印飞机的小部件开始,一步一步发展,最终在2050年左右用3D打印机打印出整架飞机。
DXF文件是目前流行的CAD系统软件提供的一种通用的图形交换文件格式。其中,AutoCAD所有的图形文件都是通过数据库来管理的,但是这些数据库是以压缩数据格式存储的,用高级语言程序直接获取其中的信息是极为复杂的。为此,若对AutoCAD进行二次开发,常常读取DXF文件。
按通常DXF文件存储图形的规则,DXF文件中的三维图形信息也应该是存储在实体节内。但是当打开一个包含三维图形信息的DXF文件时,发现了大量的密码信息。因此,只有间接的从其它部分进行读取。进一步分析文件其他部分格式,可以发现在标题节中有一组组码包含有一些有用的信息。它们是用来表示图形扩展范围的最大、最小坐标变量$EXTMAX与$EXTMIN。每个变量后分别以10,20,30来引导图形中的图形扩展坐标x,y,z。因此,只要读取xmin、ymin、zmin、xmax、ymax与zmax值,即可确定要转换的实体的全部几何信息。
发明内容
鉴于已有技术存在的缺陷,本发明的目的是提供一种基本形体的DXF文件格式转换为STL文件格式的方法,通过对DXF与STL两种文件格式进行深入分析,利用VC++进行语言编程,能够读取并显示基本形体的DXF文件内容信息并能将它们转化为对应的STL文件,为CAD/CAM的发展提供新的技术支持。
为实现上述目的,本发明通过以下技术方案来实现的:
该方法实现DXF图形交换文件转换成STL文件;利用VC++进行语言编程,读取并显示实体图形的DXF文件内容信息并将其转换为STL文件内容信息;DXF文件的实体图形信息存储在实体段内,DXF文件的标题段内存在表示实体图形扩展范围的最大坐标变量与最小坐标变量;调用OnFileOpen函数打开DXF文件,读取文件内容信息中基本形体的最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,确定基本形体的几何信息;STL模型的数据由三角形面片的法向量与三角形面片的3个顶点坐标构成,STL文件记载了构成基本形体的所有三角形面片的法向量和顶点坐标数据信息;根据基本形体的几何信息通过调用OnFileTran函数,判断switch(what)中what的值,根据what的值调用相应的函数进行数据处理,用三角形对基本形体进行空间分割,求出每个三角形面的顶点坐标,生成以三角形顶点表示的数据信息,并将其写入STL文件。
基本形体为圆柱体,switch(what)中what的值为3,读取文件内容信息中圆柱体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令圆柱体的圆周切分密度N,则圆柱体的半径求得三角形顶点坐标为:
生成STL文件时,分为两部分输出,输出顶点顺序为:
①上、下底面:上中心点→点i(上)→点i+1(上)
下中心点→点i+1(下)→点i(下)
②侧面:点i(上)→点i(下)→点i+1(下)
点i(上)→点i+1(下)→点i+1(上)。
基本形体为球体,switch(what)中what的值为5,读取文件内容信息中球体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令两个方向上的切割密度M、N,其中M为纵向切割密度,对应j值变化;N为横向切割密度,对应i值变化;求得球体球心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
根据空间几何关系,得到球体面顶点坐标算法为:
rt [ i ] = r × sin ( π × i N ) ;
x [ i ] [ j ] = rt [ i ] × sin ( 2 π × j M ) + cx ;
y [ i ] [ j ] = rt [ i ] × sin ( 2 π × j M ) + cy ;
z [ i ] [ j ] = r × cos ( π × i N ) + cz ;
生成STL文件时,分为两部分输出,输出顶点顺序为:
上下顶点周围的面:
上顶点→点[i][j]→点[i][j+1]
下顶点→点[i-1][j+1]→点[i-1][j]
其它面:
点[i][j]→点[i+1][j]→点[i+1][j+1]
点[i][j]→点[i+1][j+1]→点[i][j+1]。
基本形体为圆环体,switch(what)中what的值为6,读取文件内容信息中圆环体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令两个方向上的切割密度M、N,其中M为纵向切割密度,对应j值变化;N为横向切割密度,对应i值变化,求得环心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
环半径r=(xmax-xmin)/2,切割圆半径b=(zmax-zmin)/2,扫描圆半径rT=r-b;
根据空间几何关系,得到顶点坐标算法为:
xTc [ i ] = rT × sin ( 2 π × i N ) + cx ;
yTc [ i ] = rT × cos ( 2 π × i N ) + cy ;
yT [ i ] [ j ] = b × cos ( 2 π × j N ) + yTc [ i ] ;
zT [ i ] [ j ] = b × sin ( 2 π × j N ) + cz ;
x [ i ] [ j ] = b × cos ( 2 π × j M ) × sin ( 2 π × i N ) + xTc [ i ] ;
y [ i ] [ j ] = b × cos ( 2 π × j M ) × cos ( 2 π × i N ) + yTc [ i ] ;
z[i][j]=zT[i][j]
生成STL文件时,输出顶点顺序为:
点i,j→点i+1,j→点i,j+1
点i,j+1→点i+1,j→点i+1,j+1。
基本形体为圆锥体,switch(what)中what的值为4,读取文件内容信息中圆锥体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令圆锥体的圆周切分密度N,则圆锥体的半径:令求得环心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
根据空间几何关系,得到顶点坐标算法为:
x [ i ] = r × sin ( 2 π × i N ) + cx ;
y [ i ] = r × cos ( 2 π × i N ) + cy ;
生成STL文件时,输出顶点顺序为:
侧面:上顶点→点i(下)→点i+1(下)
上顶点→点i+1(下)→点i+2(下)
底面:点i(下)→下中心点→点i+1(下)
点i+1(下)→下中心点→点i+2(下)。
基本形体为长方体,switch(what)中what的值为1,读取文件内容信息中长方体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,其中心点坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
其各边的一半边长值(lx,ly,lz)为:
lx = x max - x min 2 ly = y max - y min 2 lz = z max - z min 2
求得12个三角形面的法向量与顶点值,
生成STL文件时,输出顶点顺序为:
点1→点2→点3,点1→点3→点5;其余部分输出顺序相同。
基本形体为楔体,switch(what)中what的值为2,读取文件内容信息中楔体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,其中心点坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
其各边的一半边长值(lx,ly,lz)为:
lx = x max - x min 2 ly = y max - y min 2 lz = z max - z min 2
求得8个三角形面的法向量与顶点值,
生成STL文件时,输出顶点顺序为:
点1→点2→点4,点1→点4→点3;其余部分输出顺序相同。
本发明的实现经过以下几个步骤:
一、DXF文件格式分析、读取:
DXF文件包含标题变量、表、块和实体段几何信息及非几何信息、结束标识。从根本上来讲,DXF文件是由很多的“组代码”和“组值”组成的“数据对”构造而成。这里的数据对就是通常所说的“组”。每组占两行,组代码在前,作为引行,表示数据类型的名称,而组值在后行,作为实际内容行,代表着具体的数据信息。实体段的一般格式如下:
0      //组码(段开始标示)
SECTION//组值(段名)
2      //组码(段类型)
ENTITIES//组值(实体段)
……(单独几何实体信息)
0
ENDSEC //(段结束)
在实际运用中,由于DXF文件中的实体段包含了零件图形所有的几何信息和插入块信息,是数据信息的主要来源。因此,对于DXF文件的研究,主要是对实体段数据信息进行深入分析即可。
DXF文件的三维图形信息存储在实体段内,但是,当打开一个包含三维信息的DXF文件时,里面的信息内容被加密了,不能够直接对其进行读取利用。然而,进一步参照对比其他部分内容,不难发现,DXF文件的标题段内存在一些关于实体图形的有用信息,即表示实体图形扩展范围的最大与最小坐标变量,那么只需读取其最大坐标值Max(x,y,z)与最小坐标值Min(x,y,z),就可以确定要转化实体的全部几何信息。
二、STL文件格式分析:
STL数据格式的实质是以许多细小的空间三角形面片为基本单位,离散的逼近,近似的描述三维实体模型的表面,类似于实体数据模型表面的有限元网格划分。图2表示一个棱长为100的立方体STL划分模型,可以看出,STL模型的数据由三角形面片的法向量与三角形面片的3个顶点坐标构成。STL文件记载了构成实体模型的所有三角形面片的法向量和顶点坐标数据信息。
在ASCII格式的STL文件中,主要有7行关键语句,必须小写并用空格与其他项分开。它们依次是solid(实体零件名)、facet normal(三角形面片法向量)、outer loop(三角形三个顶点描述开始标志)、vertex(顶点坐标)、Endloop(三角形三个顶点描述结束的标志)、endfacet(三角形面片描述结束的标志)、endsolid(实体描述结束的标志)。ASCII格式的STL文件结构如下:
solid filename
facet normal x y z
outer loop
vertex x y z
vertex x y z
vertex x y z
endloop
endfacet
……
与图2相对应,棱长100的立方体ASCII格式的STL文件存储示意图如图3所示。这里只取用了STL文件ASCII格式(文本文件)中的一个三角形面片。
由图3可知,正方体在文件中总共由12个facet normal…endfacet结构来表示,每个结构用于表示一个空间三角形面片。在一个facet normal…endfacet结构中,以图示三角形面片为例,表示三角形面片的有效数据共四行:
行(1)  facet normal0.000000e+00 1.000000e+00 0.000000e+00
行(2)  vertex1.000000e+02 1.000000e+02 0.000000e+00
行(3)  vertex0.000000e+00 1.000000e+02 1.000000e+02
行(4)  vertex1.000000e+02 1.000000e+02 1.000000e+02
其中行(1)描述的是该三角形面的法向量,后面的三个数值分别代表X、Y、Z方向的分矢量;行(2)、(3)、(4)描述的是三角形面片三个顶点的坐标值。三个顶点的排列顺序与法向量方向符合右手定则。
三、数据处理算法:
要生成以三角形顶点表示的STL文件,实际上是由三角形对实体进行空间分割的过程。这样,读取实体的(xmax,ymax,zmax)与(xmin,ymin,zmin)之后,便可以求出每个三角形面的顶点坐标,并将其以一定的格式写入STL文件。
四、程序运行显示结果。
根据本发明提供的具体实施例,本发明公开了以下技术效果:STL、DXF文件在不同领域得到广泛开展应用,若能够实现DXF向STL文件格式的转化,将对图形文件的处理提供极大的方便,大大缩短产品的设计周期,又可拓宽软件的使用范围,提高工作效率,同时将DXF文件的信息储存到STL文件中会大大的节省储存空间。
附图说明
图1是文件格式转化系统框图;
图2是棱长100的立方体STL划分模型;
图3是棱长100的立方体STL(ASCII)存储示意图;
图4是圆柱体分割图;
图5是圆柱体程序流程图;
图6是球体分割图;
图7是球体分割程序流程图;
图8是圆环体分割图;
图9是圆环体分割程序流程图;
图10是圆锥体分割图;
图11是圆锥体分割程序流程图;
图12是长方体分割图;
图13是长方体程序流程图;
图14是楔体分割图;
图15是楔体分割流程图;
图16是box的立方体图;
图17是box的dxf内容信息显示界面;
图18是box的stl内容信息显示界面;
具体实施方式
实施例一
基本形体为圆柱体,圆柱体分割程序流程图如图5所示。调用OnFileOpen()函数打开DXF文件,读取文件内容信息中圆柱体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,根据实体图形的几何信息通过调用OnFileTran()函数,判断switch(what)中what的值为3,令圆柱体的圆周切分密度N,则圆柱体的半径:令求得三角形顶点坐标为:
生成STL文件时,分为两部分输出,输出顶点顺序为:
①上、下底面:上中心点→点i(上)→点i+1(上)
下中心点→点i+1(下)→点i(下)
②侧面:点i(上)→点i(下)→点i+1(下)
点i(上)→点i+1(下)→点i+1(上)。
实施例二
基本形体为球体,球体程序流程图如图7所示。调用OnFileOpen()函数打开DXF文件,读取文件内容信息中球体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,根据实体图形的几何信息通过调用OnFileTran()函数,判断switch(what)中what的值为,令两个方向上的切割密度M、N,其中M为纵向切割密度,对应j值变化;N为横向切割密度,对应i值变化;求得球体球心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
根据空间几何关系,得到球体面顶点坐标算法为:
rt [ i ] = r × sin ( π × i N ) ;
x [ i ] [ j ] = rt [ i ] × sin ( 2 π × j M ) + cx ;
y [ i ] [ j ] = rt [ i ] × sin ( 2 π × j M ) + cy ;
z [ i ] [ j ] = r × cos ( π × i N ) + cz ;
程序的代码为:
for(inti=0;i<=N;i++)
{rt[i]=r*sin(PI*i/n);
for(intj=0;j<=M;j++)
{x[i][j]=rt[i]*sin(2*PI*j/M)+cx
y[i][j]=rt[i]*sin(2*PI*j/M)+cy;
z[i][j]=r*cos(PI*i/N)+cz;}}
生成STL文件时,分为两部分输出,输出顶点顺序为:
上下顶点周围的面:
上顶点→点[i][j]→点[i][j+1]
下顶点→点[i-1][j+1]→点[i-1][j]
其它面:
点[i][j]→点[i+1][j]→点[i+1][j+1]
点[i][j]→点[i+1][j+1]→点[i][j+1]。
实施例三
基本形体为圆环体,圆环体程序流程图如图9所示。调用OnFileOpen()函数打开DXF文件,读取文件内容信息中圆环体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,根据实体图形的几何信息通过调用OnFileTran()函数,判断switch(what)中what的值为6,令两个方向上的切割密度M、N,其中M为纵向切割密度,对应j值变化;N为横向切割密度,对应i值变化,求得环心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
环半径r=(xmax-xmin)/2,切割圆半径b=(zmax-zmin)/2,扫描圆半径rT=r-b;
根据空间几何关系,得到顶点坐标算法为:
xTc [ i ] = rT &times; sin ( 2 &pi; &times; i N ) + cx ;
yTc [ i ] = rT &times; cos ( 2 &pi; &times; i N ) + cy ;
yT [ i ] [ j ] = b &times; cos ( 2 &pi; &times; j N ) + yTc [ i ] ;
zT [ i ] [ j ] = b &times; sin ( 2 &pi; &times; j N ) + cz ;
x [ i ] [ j ] = b &times; cos ( 2 &pi; &times; j M ) &times; sin ( 2 &pi; &times; i N ) + xTc [ i ] ;
y [ i ] [ j ] = b &times; cos ( 2 &pi; &times; j M ) &times; cos ( 2 &pi; &times; i N ) + yTc [ i ] ;
z[i][j]=zT[i][j]
程序的代码为:
for(inti=0;i<=N;i++)
{xTc[i]=rT*sin(2*PI*i/N)+cx;
yTc[i]=rT*cos(2*PI*i/N)+cy;
for(intj=0;j<=M;j++)
{yT[i][j]=b*cos(2*PI*j/M)+yTc[i];
zT[i][j]=b*sin(2*PI*j/M)+cz;
x[i][j]=b*cos(2*PI*j/M)*sin(2*PI*i/N)+xTc[i];
y[i][j]=b*cos(2*PI*j/M)*cos(2*PI*i/N)+yTc[i];
z[i][j]=zT[i][j];}}
生成STL文件时,输出顶点顺序为:
点i,j→点i+1,j→点i,j+1
点i,j+1→点i+1,j→点i+1,j+1。
实施例四
基本形体为圆锥体,圆锥体分割程序流程图如图11所示。调用OnFileOpen()函数打开DXF文件,读取文件内容信息中圆锥体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,根据实体图形的几何信息通过调用OnFileTran()函数,判断switch(what)中what的值为4,令圆锥体的圆周切分密度N,则圆锥体的半径:令求得环心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
根据空间几何关系,得到顶点坐标算法为:
x [ i ] = r &times; sin ( 2 &pi; &times; i N ) + cx ;
y [ i ] = r &times; cos ( 2 &pi; &times; i N ) + cy ;
程序的代码为:
for(inti=0;i<=N;i++)
{x[i]=r*sin(2*PI*i/N)+cx;
y[i]=r*cos(2*PI*i/N)+cy;}
生成STL文件时,输出顶点顺序为:
侧面:上顶点→点i(下)→点i+1(下)
上顶点→点i+1(下)→点i+2(下)
底面:点i(下)→下中心点→点i+1(下)
点i+1(下)→下中心点→点i+2(下)。
实施例五
基本形体为长方体,长方体程序流程图如图13所示。调用OnFileOpen()函数打开DXF文件,读取文件内容信息中长方体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,根据实体图形的几何信息通过调用OnFileTran()函数,判断switch(what)中what的值为1,其中心点坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
其各边的一半边长值(lx,ly,lz)为:
lx = x max - x min 2 ly = y max - y min 2 lz = z max - z min 2
求得12个三角形面的法向量与顶点值。
生成STL文件时,输出顶点顺序为:
点1→点2→点3,点1→点3→点5;其余部分输出顺序相同。
实施例六
基本形体为楔体,楔体的分割程序流程图如图15。调用OnFileOpen()函数打开DXF文件,读取文件内容信息中楔体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,根据实体图形的几何信息通过调用OnFileTran()函数,判断switch(what)中what的值为2,其中心点坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
其各边的一半边长值(lx,ly,lz)为:
lx = x max - x min 2 ly = y max - y min 2 lz = z max - z min 2
求得8个三角形面的法向量与顶点值。
生成STL文件时,输出顶点顺序为:
点1→点2→点4,点1→点4→点3,其余部分输出顺序相同。
以立方体为例,运行程序运行并结果,DXF的实体图形(命名box)如图16所示。
打开box.dxf文件,其内容信息的界面显示如图17所示。
进行转换操作,生成box.stl文件,其内容信息的界面显示如图18所示。

Claims (7)

1.基本形体的DXF文件格式转换为STL文件格式的方法,其特征在于:该方法实现DXF图形交换文件转换成STL文件;读取并显示实体图形的DXF文件内容信息并将其转换为STL文件内容信息;DXF文件的实体图形信息存储在实体段内,DXF文件的标题段内存在表示实体图形扩展范围的最大坐标变量与最小坐标变量;调用OnFileOpen函数打开DXF文件,读取文件内容信息中基本形体的最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,确定基本形体的几何信息;STL模型的数据由三角形面片的法向量与三角形面片的3个顶点坐标构成,STL文件记载了构成基本形体的所有三角形面片的法向量和顶点坐标数据信息;根据基本形体的几何信息通过调用OnFileTran函数,判断switch(what)中what的值,根据what的值调用相应的函数进行数据处理,用三角形对基本形体进行空间分割,求出每个三角形面的顶点坐标,生成以三角形顶点表示的数据信息,并将其写入STL文件。
2.根据权利要求1所述的基本形体的DXF文件格式转换为STL文件格式的方法,其特征在于:所述基本形体为圆柱体,switch(what)中what的值为3,读取文件内容信息中圆柱体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令圆柱体的圆周切分密度N,则圆柱体的半径:求得三角形顶点坐标为:
生成STL文件时,分为两部分输出,输出顶点顺序为:
①上、下底面:上中心点→点i(上)→点i+1(上)
下中心点→点i+1(下)→点i(下)
②侧面:点i(上)→点i(下)→点i+1(下)
点i(上)→点i+1(下)→点i+1(上)。
3.根据权利要求1所述的基本形体的DXF文件格式转换为STL文件格式的方法,其特征在于:所述基本形体为球体,switch(what)中what的值为5,读取文件内容信息中球体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令两个方向上的切割密度M、N,其中M为纵向切割密度,对应j值变化;N为横向切割密度,对应i值变化;求得球体球心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
根据空间几何关系,得到球体面顶点坐标算法为:
rt [ i ] = r &times; sin ( &pi; &times; i N ) ;
x [ i ] [ j ] = rt [ i ] &times; sin ( 2 &pi; &times; j M ) + cx ;
y [ i ] [ j ] = rt [ i ] &times; sin ( 2 &pi; &times; j M ) + cy ;
z [ i ] [ j ] = r &times; cos ( &pi; &times; i N ) + cz ;
生成STL文件时,分为两部分输出,输出顶点顺序为:
上下顶点周围的面:
上顶点→点[i][j]→点[i][j+1]
下顶点→点[i-1][j+1]→点[i-1][j]
其它面:
点[i][j]→点[i+1][j]→点[i+1][j+1]
点[i][j]→点[i+1][j+1]→点[i][j+1]。
4.根据权利要求1所述的基本形体的DXF文件格式转换为STL文件格式的方法,其特征在于:所述基本形体为圆环体,switch(what)中what的值为6,读取文件内容信息中圆环体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令两个方向上的切割密度M、N,其中M为纵向切割密度,对应j值变化;N为横向切割密度,对应i值变化,求得环心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
环半径r=(xmax-xmin)/2,切割圆半径b=(zmax-zmin)/2,扫描圆半径rT=r-b;
根据空间几何关系,得到顶点坐标算法为:
xTc [ i ] = rT &times; sin ( 2 &pi; &times; i N ) + cx ;
yTc [ i ] = rT &times; cos ( 2 &pi; &times; i N ) + cy ;
yT [ i ] [ j ] = b &times; cos ( 2 &pi; &times; j N ) + yTc [ i ] ;
zT [ i ] [ j ] = b &times; sin ( 2 &pi; &times; j N ) + cz ;
x [ i ] [ j ] = b &times; cos ( 2 &pi; &times; j M ) &times; sin ( 2 &pi; &times; i N ) + xTc [ i ] ;
y [ i ] [ j ] = b &times; cos ( 2 &pi; &times; j M ) &times; cos ( 2 &pi; &times; i N ) + yTc [ i ] ;
z[i][j]=zT[i][j]
生成STL文件时,输出顶点顺序为:
点i,j→点i+1,j→点i,j+1
点i,j+1→点i+1,j→点i+1,j+1。
5.根据权利要求1所述的基本形体的DXF文件格式转换为STL文件格式的方法,其特征在于:所述基本形体为圆锥体,switch(what)中what的值为4,读取文件内容信息中圆锥体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,令圆锥体的圆周切分密度N,则圆锥体的半径:令求得环心坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
根据空间几何关系,得到顶点坐标算法为:
x [ i ] = r &times; sin ( 2 &pi; &times; i N ) + cx ;
y [ i ] = r &times; cos ( 2 &pi; &times; i N ) + cy ;
生成STL文件时,输出顶点顺序为:
侧面:上顶点→点i(下)→点i+1(下)
上顶点→点i+1(下)→点i+2(下)
底面:点i(下)→下中心点→点i+1(下)
点i+1(下)→下中心点→点i+2(下)。
6.根据权利要求1所述的基本形体的DXF文件格式转换为STL文件格式的方法,其特征在于:所述基本形体为长方体,switch(what)中what的值为1,读取文件内容信息中长方体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,其中心点坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
其各边的一半边长值(lx,ly,lz)为:
lx = x max - x min 2 ly = y max - y min 2 lz = z max - z min 2
求得12个三角形面的法向量与顶点值,
生成STL文件时,输出顶点顺序为:
点1→点2→点3,点1→点3→点5。
7.根据权利要求1所述的基本形体的DXF文件格式转换为STL文件格式的方法,其特征在于:所述基本形体为楔体,switch(what)中what的值为2,读取文件内容信息中楔体最大坐标值xmax,ymax,zmax与最小坐标值xmin,ymin,zmin,其中心点坐标(cx,cy,cz)为:
cx = x max + x min 2 cy = y max + y min 2 cz = z max + z min 2
其各边的一半边长值(lx,ly,lz)为:
lx = x max - x min 2 ly = y max - y min 2 lz = z max - z min 2
求得8个三角形面的法向量与顶点值,
生成STL文件时,输出顶点顺序为:
点1→点2→点4,点1→点4→点3。
CN201410339375.0A 2014-07-16 2014-07-16 基本形体的dxf文件格式转换为stl文件格式的方法 Pending CN104239400A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410339375.0A CN104239400A (zh) 2014-07-16 2014-07-16 基本形体的dxf文件格式转换为stl文件格式的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410339375.0A CN104239400A (zh) 2014-07-16 2014-07-16 基本形体的dxf文件格式转换为stl文件格式的方法

Publications (1)

Publication Number Publication Date
CN104239400A true CN104239400A (zh) 2014-12-24

Family

ID=52227464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410339375.0A Pending CN104239400A (zh) 2014-07-16 2014-07-16 基本形体的dxf文件格式转换为stl文件格式的方法

Country Status (1)

Country Link
CN (1) CN104239400A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260422A (zh) * 2015-09-28 2016-01-20 西北核技术研究所 一种多格式波形数据文件批处理方法
CN106202149A (zh) * 2016-06-22 2016-12-07 南京南瑞继保电气有限公司 一种iec61850模型文件转换方法
CN107273543A (zh) * 2017-07-06 2017-10-20 安徽省交通规划设计研究总院股份有限公司 一种dgn数据格式的转换方法
CN108460056A (zh) * 2017-02-22 2018-08-28 电子科技大学中山学院 一种dxf文件有效图元转换json数据的方法
CN111506690A (zh) * 2020-04-17 2020-08-07 河南省焦作地质勘察设计有限公司 一种南方CASS数据向MapGis数据无损转换的方法
CN113190888A (zh) * 2021-04-20 2021-07-30 东风柳州汽车有限公司 工艺文件编制方法、装置、设备及存储介质
CN113282952A (zh) * 2021-05-06 2021-08-20 范佳媛 一种工程系统设计文件篡改检测定位方法及装置
CN114723913A (zh) * 2021-08-12 2022-07-08 成都工具研究所有限公司 影像仪扫描文件矢量化及参数化处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561838A (zh) * 2009-05-25 2009-10-21 中国农业大学 ADAMS软件与Pro/E软件之间数据转换的方法
CN103761376A (zh) * 2014-01-10 2014-04-30 沈阳航空航天大学 基于二维dxf文件格式的零件三维真实感显示方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561838A (zh) * 2009-05-25 2009-10-21 中国农业大学 ADAMS软件与Pro/E软件之间数据转换的方法
CN103761376A (zh) * 2014-01-10 2014-04-30 沈阳航空航天大学 基于二维dxf文件格式的零件三维真实感显示方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张滢 等: "关于基于形体的DXF与STL文件格式之间的转化", 《沈阳航空工业学院学报》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260422A (zh) * 2015-09-28 2016-01-20 西北核技术研究所 一种多格式波形数据文件批处理方法
CN105260422B (zh) * 2015-09-28 2018-10-26 西北核技术研究所 一种多格式波形数据文件批处理方法
CN106202149B (zh) * 2016-06-22 2019-07-23 南京南瑞继保电气有限公司 一种iec61850模型文件转换方法
CN106202149A (zh) * 2016-06-22 2016-12-07 南京南瑞继保电气有限公司 一种iec61850模型文件转换方法
CN108460056A (zh) * 2017-02-22 2018-08-28 电子科技大学中山学院 一种dxf文件有效图元转换json数据的方法
CN107273543B (zh) * 2017-07-06 2020-06-05 安徽省交通规划设计研究总院股份有限公司 一种dgn数据格式的转换方法
CN107273543A (zh) * 2017-07-06 2017-10-20 安徽省交通规划设计研究总院股份有限公司 一种dgn数据格式的转换方法
CN111506690A (zh) * 2020-04-17 2020-08-07 河南省焦作地质勘察设计有限公司 一种南方CASS数据向MapGis数据无损转换的方法
CN113190888A (zh) * 2021-04-20 2021-07-30 东风柳州汽车有限公司 工艺文件编制方法、装置、设备及存储介质
CN113190888B (zh) * 2021-04-20 2022-10-28 东风柳州汽车有限公司 工艺文件编制方法、装置、设备及存储介质
CN113282952A (zh) * 2021-05-06 2021-08-20 范佳媛 一种工程系统设计文件篡改检测定位方法及装置
CN113282952B (zh) * 2021-05-06 2023-06-23 范佳媛 一种工程系统设计文件篡改检测定位方法及装置
CN114723913A (zh) * 2021-08-12 2022-07-08 成都工具研究所有限公司 影像仪扫描文件矢量化及参数化处理方法

Similar Documents

Publication Publication Date Title
CN104239400A (zh) 基本形体的dxf文件格式转换为stl文件格式的方法
Qin et al. Status, comparison, and future of the representations of additive manufacturing data
Song et al. Function representation based slicer for 3D printing
Ito et al. Surface triangulation for polygonal models based on CAD data
US7372460B2 (en) Method and program for generating volume data from boundary representation data
JP4783100B2 (ja) 境界データのセル内形状データへの変換方法とその変換プログラム
WO2002023408A1 (fr) Procede de description de profiles pleins et dispositif associe et systeme d&#39;aide a la conception de profiles pleins les utilisant
US20240153123A1 (en) Isogeometric Analysis Method Based on a Geometric Reconstruction Model
CN102629391A (zh) 基于数字图形介质的三维空间结构图形切割及切片方法
CN106445981A (zh) 一种基于小波变换的stl网格模型切片数据自适应压缩方法
Zhang et al. A surface based approach to recognition of geometric features for quality freeform surface machining
Feng et al. Direct slicing of T-spline surfaces for additive manufacturing
Hu Application of AutoCAD's 3D modeling function in industrial modeling design
CN111967066B (zh) 一种多形态颗粒增强复合材料三维细观结构建模方法
Shin et al. Data enhancement for sharing of ship design models
Wang et al. Freeform extrusion by sketched input
KR102350267B1 (ko) 마네킨의 분할 3d 프린팅 방법
Agrawal et al. Conversion of a GIS surface data directly to a 3D STL part for terrain modeling
WO2023272523A1 (zh) 模型重构方法、装置和系统
Wu Application of autoCAD in graphic art design based on VBA
Roth-Koch Generating CAD models from sketches
CN100464335C (zh) 微机电系统中三维实体到标准工艺版图的转换方法
JPS62251965A (ja) Cad/camシステムにおけるソリッドモデル形状定義方法
CN110171139B (zh) 薄壁结构3d打印与数值计算统一网格的方法
JP3895297B2 (ja) 立体形状記述方法及びそれを用いたエンジニアリングシステム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20141224