STL文件错误的自动修复算法的研究概要.docx
《STL文件错误的自动修复算法的研究概要.docx》由会员分享,可在线阅读,更多相关《STL文件错误的自动修复算法的研究概要.docx(11页珍藏版)》请在冰豆网上搜索。
STL文件错误的自动修复算法的研究概要
第1期(总第146期
2008年2月机械工程与自动化
MECHANICAL ENGINEERING & AUTOMATIONNo.1Feb.
文章编号:
1672-6413(200801-0020-03
STL文件错误的自动修复算法的研究
*
张江林,张剑峰
(扬州大学机械工程学院,江苏 扬州 225009
摘要:
目前,对STL文件错误的修复已经进行了一些研究,但这些研究还不能精确实现错误的整体描述,针对这个问题,构造了错误广义表,整体描述了STL文件中的错误,简化了修复过程,并开发了专用的STL文件修复工具。
关键词:
STL文件;整体描述;错误广义表;自动修复中图分类号:
TP302 文献标识码:
A
*扬州市自然科学基金资助项目(YZ2004042-8
收稿日期:
2007-05-22;修回日期:
2007-09-13
(,,,0 引言
快速成型制造设备目前能够接受诸如STL、SLC、CLI等多种数据格式,其中由美国3DSestem公司开发的STL文件格式可以被大多数快速成型机所接受。
STL文件表达简单清晰,很多三维几何模型都可以通过表面的三角化生成STL文件,且STL文件具有简单的分层算法,模型易于分割。
但它也有很多的缺点,如STL模型只是三维模型的一个近似描述,造成了一定的精度损失;STL文件中存在着大量的冗余数据,数据之间无拓扑关系且存在缺陷。
由于RP设备接到的往往是已经转换好的STL文件,因此需要一种工具能直接检验STL文件的正确性并修补不正确的STL文件。
针对这些问题,本文提出一种STL文件错误的修复新算法,并开发了相应的工具。
1 STL文件格式及错误1.1 STL文件格式与规则
STL文件是通过三维模型表面的三角网络化得到的,文件中只包含相互衔接的三角形面片节点坐标及其外法矢,它有ASCLL码和二进制码两种形式,二进制码输出形式所占用的文件空间比ASCLL码输出形式的小得多(一般是1/6,但是ASCLL码输出形式可以阅读并能进行直观检查,ASCLL码的输出形式如下:
solidBALL
facetnormalninjnk outerloop
vertexx1y1z1
vertexx2y2z2 vertexx3y3z3 endloop endfacet ……endsolidBALL
由STL文件格式可知,STL文件是由许多三角形小平面数据组成,每一个三角形小平面都用一个法矢和三个顶点坐标来描述。
它所描述的正确实体数据模型应满足如下几条法则:
共顶点原则;取向原则;充满规则;!
取值规则;∀边规则。
1.2 STL文件中的错误分类
根据STL文件错误的特点以及产生原因,可以将其错误分为以下几类:
向量错误:
某一面片法向与周围面片法向相反;顶点错误:
顶点不重合导致的三角面片重合的顶点数少于两个;空洞(孔洞与裂缝(间隙;!
重叠;∀错位;#退化面片(多边共线几何退化,即面片的所有边均共线;∃孤立面片:
三角形面片与STL数据模型实体脱离;%拓扑信息的错误,同一条边属于三个或三个以上三角形共有。
2 STL文件错误检查与修复2.1 STL文件错误检查
STL文件只是表达了物体表面的数值信息,文件中的三角形面片是随机的、杂乱的,无明显的拓扑关系,且文件存在着巨大的数据冗余。
在检查、修复之前必须建立STL面片邻接拓扑关系。
2.1.1 拓扑关系的表示
任何一个可以完整表示多面体的数据结构均可以
用来表示三角面片之间的拓扑关系,例如四边结构、半边结构、翼边结构、放射边结构等。
在翼边结构中包含与边相邻的2个环,由于翼边结构没有明确的正方向,因此判断当前边所在的环与面比较困难。
四边结构将每条边分裂为两对方向相反的边,可以表示无向二边流形体,但无法表示带孔洞的模型。
人们对翼边结构作了许多改进,得到了半边结构,见图1。
半边节点的引入使得三角面片之间的毗邻关系更容易表示,通过体可以找到其所包含的所有面、边和顶点,通过面可以找到其3个邻面、3条边和3个顶点;通过边可以找到其所属的2个面和它包含的2个顶点;通过点可以找到它所属的多个边和多个面。
在拓扑关
系中顶点记录该点的坐标信息,面和边包含的顶点只记录顶点的编号,具体的数据结构见图2
。
图1
半边结构示意图
图2 点、面、半边链表的内在关系
2.1.2 错误的检查
当STL文件拓扑关系建立后,就可以检查STL文件的错误并建立错误半边链表,为修复做准备。
根据半边结构的特点,以半边的检查作为错误检查的基础,其检查的标准为:
一条半边无与其端点相同、方向相反的另一条半边存在,则此半边为错误的半边,该半边的两个端点为错误的端点,该半边所在三角形面片为错误的面片。
2.2 STL文件的修复
针对STL文件的各种错误,国内外对其修复进行了研究,但总体而言,现有的研究普遍存在不足,周华民等[1]对这些研究进行了分析,并针对其不足通过构造错误描述图来实现错误的整体描述,有效提高了STL文件修复工具的可靠性、实用性和覆盖范围。
错误描述图以两半边首尾相连为原则把相关联的错误面、错误半边和错误顶点组成一个单连通区域,最后对每个单连通区域进行错误修复。
虽然错误描述图取得很好的效果,但在每个单连通区域里还需对每种错误进行分析归纳以及单环、多环的判断与处理,故本文提出了错误广义表,进一步降低了问题的复杂度。
2.2.1 错误广义表的创建
在错误半边链表的基础上构建了半边的错误广义表,见图3,它由一个头链表和许多树构成,树的叶节点通过指针L相互连接起来,且错误广义表中有两种数据结构。
建立错误广义表的基本思想是:
从错误半边链表中第一条错误边出发,获得该边的存储地址以构成一个edgecrunode结构的节点,以该节点为树的根节点出所有以这个错误顶点为起点的错误半边,以这些错误半边来构造根节点的子节点,再分别以这些子节点为根节点并用上述方法来构造其子节点,直到所有子节点无子节点(即树的叶节点为止;以错误链表中未使用过的错误半边为基础,重复上述步骤来建立另外一棵树,直至无错误半边未使用为止;以head为头指针建立headlist结构的单向链表(链表中节点数等于树的数目,其中节点的edge指针分别指向一棵树的根节点;以pcurrent指针为头指针通过edgecrunode结构中的L指针把所有树的叶节点串联起来。
2.2.2 错误修复算法的简要过程
我们以广义表数据结构为基础提出一种新的算法,算法的基本步骤为:
(1读入STL格式文件,对其数据模型进行整体合法性校验。
(2建立拓扑关系。
对STL文件中所有的三角形面片建立三角形面片之间的共边和共顶点的内在关系,建立三角形面片之间的边、顶点的拓扑关系。
(3抽出错误的半边。
在半边链表中edge指针为NULL的半边是错误半边,把这些错误半边提取出来并组成一个完整的错误广义表。
(4错误的修复。
在错误广义表中从pcurrent指针指向的第一个叶节点开始,获得该叶节点对应的错误半边,通过指针Pr获得上一个节点所对应的错误半边,直到得到的错误半边的起点与第一次得到的错误半边的终点是同一个点为止,若无此条件,则直到指针Pr为NULL为止。
对获得的所有错误半边进行判断、修复,如若所有错误半边中第一次获得的错误半・
21・ 2008年第1期 张江林,等:
STL文件错误的自动修复算法的研究
个顶点且所有错误半边不共线,则此错误为空洞,并添加面片进行修复;对于无法判断的复杂错误,将所有错误半边删除构成新的错误并在下一轮修复过程中
修复。
若指针Pr为NULL,再从第二个叶节点开始,重复上述步骤,直到指针L为NULL
为止。
图3 错误广义表结构图
3 应用
基于上述的修复算法,开发了专用的STL文件修复工具,以修复齿轮零件为例,图4为STL文件自动
修复软件界面。
图4 STL文件自动修复软件界面
同时,我们对算法进行了实验,实验工艺参数为:
激光功率P=40W,扫描速度v=150mm/s,扫描间隔
s=0.2mm,铺粉厚度h=0.20mm。
烧结成的齿轮零件见图5,取得了很好的效果。
4 结束语
如果STL文件所表示的面化实体数据模型不正确,将使后续切片加工过程不能进行,而完全由人工进行诊断与修复比较吃力乏味,故需要对STL三角化数据模型进行自动诊断与修复。
本文在已有研究的基础上,采用错误广义表对错误半边进行了整体的概括,提高了修复的速度,保证了数据有效的操作与管理,并用VisualC++开发了相应的修复软件,此修复工具可
图5 烧结后的齿轮零件
参考文献:
[1] 周华民,成学文,刘芬.STL文件错误的修复算法研究[J].
计算机辅助设计与图形学学报,2005,17(4:
761-767.
[2] 刘金义,侯宝明.STL格式实体的快速拓扑重建[J].工程
图学学报,2003,24(4:
34-39.
[3] 张翔,廖文和,程筱胜,等.STL格式文件的拓扑重建方法研究[J].机械科学与技术,2005,24(9:
1093-1096.
[4] 侯宝明,刘雪娜.STL实体模型的拓扑重建及其缺陷修复
[J].计算机工程,2005,31(3:
213-217.
[5] 戴宁,廖文和,陈春美.STL数据快速拓扑重建关键算法
[J].计算机辅助设计与图形学学报,2005,17(11:
2448-2452.[6] 张剑峰,黄因慧,赵剑峰.快速成型系统中STL模型缺陷
的自动修复技术[J].扬州大学学报(自然科学版,2002,5(2:
33-36.
[7] 陈波,张红梅,江颉,等.基于二叉树的冗余数据去除[J].
计算机应用,2005,25:
205-206.[8] 费业泰.误差理论与数据处理[M].北京:
机械工业出版
社,2000.
(25页
・
22・ 机械工程与自动化 2008年第1期
3 结论
(1联接螺栓静力计算的最大应力远小于螺栓材料的强度极限,表明螺栓断裂的原因不是由于静强度不足。
而疲劳仿真计算结果同实际使用寿命相差不大,揭示了螺栓断裂的原因在于交变应力产生的疲劳;同时,也说明基于ANSYS/FE-SAFE的模具联接螺栓仿真计算方法是可行的。
(2实际寿命同仿真计算有一些差别,这主要是由于计算模型中表面参数在软件中的选取同实际有一定的差别。
因此,在寿命的计算中就出现一定的误差。
(3疲劳寿命计算最可靠的方法是疲劳试验,而进行疲劳试验耗资费时,做完试验的试件就已经破坏;同时,结构疲劳寿命同试件的尺寸大小、试验环境有关。
基于ANSYS/FE-SAFE软件对螺栓进行疲劳分析,可以弥补试验的不足,而且在设计阶段就能进行分析,
并能方便地模拟不同工况下螺栓的疲劳寿命。
图5 两种不同表面参数的计算结果
参考文献:
[1] 姜年朝.ANSYS和ANSYS/FE-SAFE软件的工程应用
及实例[M].南京:
河海大学出版社,2006.
[2] 姚卫星.结构疲劳寿命分析[M].北京:
国防工业出版社,
2003.[3] 航空工业部科技委员会.应力集中手册[M].北京:
航空
工业出版社,1990.
[4] 航空航天工业部科学技术研究院.应变疲劳分析手册
[M].北京:
科学出版社,1991.
[5] PetersonRE.Stressconcentrationfactor[M].New
York:
JohnWileyandSons,1974.
FatigueAnalysisandSimulationofConnectingBlots
inDieBasedonANSYS/FE-SAFE
ZHANGXun,JIANGNian-zhao
(NanjingResearchInstituteofSimulationTechnolgy,Nanjing210016,China
Abstract:
Theinfluenceofpretighteningstressandthermalstressonconnectingblotsindiehasbeenstudiedinthispaper.ThesimulationshowsthatthestressofblotisfarundertheUTSofmaterial.Inpractice,theconnectingblotsofdieoftentakeplacefatiguefailure.Inordertostudythereasonfortheconnectingblotsfracture,thefatigueanalysishasbeencarriedoutandthefatiguelifehasbeencalculated.
Keywords:
blots;fatigueanalysis;ANSYS/FE-SAFE
(上接第22页
ResearchontheAutomaticRepairAlgorithmsforSTLFiles
ZHANGJiang-lin,ZHANGJian-feng
(CollegeofMechanicalEngineering,YangzhouUniversity,Yangzhou225009,China
Abstract:
Currently,someresearcheshavebeencarriedontotherepairoftheerrorsinSTLfiles,buttheseresearchcan'tcarryawholedescriptionontheerrors.Aimmedatthis,theerrorlistsisstructuredtowholelydescribetheerrorsandsimplifytherepairprocess,andacorrespondingrepairtoolisdeveloped.
Keywords:
STLfiles;wholedescription;errorlists;automaticrepair
・
25・ 2008年第1期 机械工程与自动化