基于stl文件的曲面切割轨迹获得方法

文档序号:3250088阅读:689来源:国知局
专利名称:基于stl文件的曲面切割轨迹获得方法
技术领域
本发明涉及一种曲面轨迹的获得方法,具体地说是一种基于Stl 文悴的曲面切割轨迹的获得方法。
背景技术
Stl是STereo Lithography的缩写,由3D Systems公司开发爾来, 它使用三角形面片来表示三维实体模型,现已成为CAD/CAM系统 接口文件格式的工业标准之一,绝大多数造型系统能支持并生成此种 格式文件。基于Stl文件可以对各种平面或者曲面进行加工。然而,对于曲 面表面进行加工时必须要有一个合适的运行轨迹,目前还没有一种适 合磁控溅射喷涂运行轨迹的获得方法。发明内容本发明针对上述不足,提供一种基于STL文件的曲面切割轨迹 获得方法,按照该方法获得的三维轨迹能够实现对多种复杂的基片进 行喷涂。本发明方法包括如下步骤l)读取Stl文件;2)用一个或多个平面切割曲面,求得平面与 三角形两边的交点;3)将获得的交点按照顺序排列,再进行均匀化 差补处理,即得到曲面三维轨迹。其中,步骤3所述的排序方法通过如下步骤实現假定用某一平 面S切割曲面,将与平面S相交的三角形数据建立单链表,每个三角 形数据用链表中的每一个结点表示,设链表指针为SB, n=l,2,3,...,Max,设Sn所指向的结点中平面与三角形的交点为A^和 B ,取任一结点中的两个交点,假设为Ai和Bi,以Ai为头结点,Bj作为尾结点,建立新的链表,用Ai的值遍历链表,找到具有相同交 点的结点,假定为Sj,则下一个点为Bj,以此类推,从而得到以Ai 作为头结点的链表,同样可以得到以Bi为尾结点的链表,将这两个 链表连接成一个链表,即得到平面S切割形成的连续排列的曲面三维 轨迹。
用多个平面切割曲面时,将得到多个轨迹,将相邻两平面a、 b 切割得到的顺序排列的链表的首结点或尾结点相连,将平面b以及与 平面b相邻的另一平面c的尾结点或首结点相连,依次类推,将多个 平面切割得到的轨迹拟合成一个。
利用上述方法获得的三维轨迹能够用于控制溅射靶的行走,使得 磁控溅射镀膜机能够加工复杂基片,并且具有良好的精度和均匀性。


图1、用某一平面a切割坐标系中三角形示意图;
图2、用平面A切割曲面B (平面)示意图3、Stl文件中三角形数据储存格式;
图4、链表中各结点以及保存的交点示意图5、多条切割轨迹示意图6、轨迹末端延伸示意图7、多条轨迹拟合示意图8、用平面S切割曲面R示意图9、链表中各结点以及保存的交点示意图。
具体实施例方式
下面结合附图进一步说明本发明,但是一下实施例不应理解为对 本发明的限制,在不背离本发明精神和实质的情况下,对一下实施方 式所作的修改或替换均属于本发明的范围。
实施例l本例以Stl文件为源文件,来说明本发明的过程。读取幼文件Stl文件实际上是许多三角形的集合,它给出了每一个三角形的三个顶点的坐标和三角形的法向量。其数据存储格式如下所示 fecet normal 9.763660e4)01-3.565955e"002 2-131615e"001 outer loopvertex-3.640531e+002 4.261792 e+003 4.675909 e+002 vertex-3.656961e+O02 4-195778 e +003 4.640729 e+002 vertex-3.651771e+O02 4.207171 e+0034.636015 e+002 endloop endfacet可以将Stl文件中的数据读到设计好的单链表中去,单链表结点的可用如下格式表示 Struct TriangleCPOINT N; /*法向量*/CPOINT A; /*顶点1*/CPOINT B; /*顼点2*/CPOINT C; /*顶点3*/float f一MaxX^ f—MinX; /*最大和最小X坐标*/float f_MaxY, f—MinY; /*最大和最小Y坐标*/float f_MaxZ, f—MmZ; /*最大和最小Z坐标*/struct Triangle* next;};读取的程序的编码可采用的是由0++标准委员会提供的输入输 出接口函数。读取在stl文^^中的所有三角形的值,直到把所有的值 都写入到设计的单链表中去。 切割曲面实际中的曲面是不规则的空间曲面,为了把空间中的曲面转化为 计算机能够识别和认识的数据,我们把空间中的曲面用很小的三角形 进行拼凑,使得用许多平面三角形拼凑的空间曲面近似于实际的曲 面。这些三角的顶点和法向量数据都保存到了 stl文件中。现在所有的三角形的数据都已经写入到了单链表中了 。用空间中的平面去切割实际中的不规则曲面,对于计算机来说就 是用平面切割那个近似曲面。实际上是求空间三角形和空间平面的交 点。如图l所示。空间平面的y坐标是已知的,三角形的两条边的空间直线方程根 据么、式可以求出。 公式如下[(x-xl) /(xl-x2)],yl)/(yl-y2)]=[(z-zl)/(zl-z2)]=t由于知道空间平面坐标的y值,故交点的Y坐标值是已知的,根据直线方程可以求出直线参数方程中的未知数t,交点的X和z坐标就可以求出。由于默认三角形为平面,所以三角形上的点的法向量 和三角形的法向量保持一致。所求的点的数据可保存到如下的结构体中struct CROSSCPOINTnom[2]; 〃法向量 CPOINTP[2]; //只能有两个交点 int NoOfTriangle; //三角形的索引号 CROSS*next;》;捲序当空间的平面和三角形相交得到交点所构成的链表是一个无序 链表,也就是说链表中的任意一点,它的左右邻居点并不是它在数模 中的左右邻居点。举例说明如下假设有一个空间曲面A(为简单起见,以空间平面举例)。它由 8个三角形表示,用一平面B截A即得到c到k九个点。由于得到的 Stl文件中的三角形并不是如图2所示那样排序的,而是任意排序的, 如图3所示。这种排序方式不满足我们要求,必须把各点的顺序调整到图2中所示的顺序。一种可行的方法是釆用三角形拓扑排序法,其原理如下由于一 个完整的曲面被一形平面三角形近似的拼成的这三角形除了在边远 处的之外,其它三角形的一条边是两个三角形所共有的。在用平面截三角形求交点的过程中,这些交点(除边缘处之外) 都保存了两次。因而利用相关性就可以排序。如图2所示平面B与③号三角形所交得到交点e和f,并保存 在一个链表结点中,而平面B又与④号三角形所交得到交点f, g, 并保存。说明f点被保存二次。如图4所示。假设④号三角形的交点是这个链表的头接点。我们分别取出f和 g并以g为头结点,f为尾结点建立新的链表,通过用f的值来遍历 整个链表,找到③号三角形,得到f的下一个点为e。以此类推,我 就可以得到c—d—e^f这个链表。同样的方法可以得到g为顶点的 链表g—h—i—k。然后合并两个链表就可以得到所需要的链表。再如假定用某一平面S切割曲面R,将与平面S相交的三角形 数据建立单链表,每个三角形数据用链表中的每一个结点表示,设链 表指针为&, n=l,2,3,...,Max,设Sn所指向的结点中平面与三角形的 交点为A『和Bn,取任一结点中的两个交点,假设为A和Bi,以A 为头结点,Bi作为尾结点,建立新的链表(临时链表),用A的值遍 历链表,找到具有相同交点的结点,假定为Sj,则下一个点为Bj,以 此类推,从而得到以A作为头结点的链表,同样可以得到以&为尾 结点的链表,将这两个链表连接成一个链表,即得到平面S切割形成 的连续排列的曲面三维轨迹。如图8所示,平面S切割曲面R, S将与曲面上的5个三角形相 交,这五个三角形分别为S1、 S2、 S3、 S4、 S5,在Stl文件中Sl S5 并不是靡序排列的,将这些三角形数据建立一个单链表,如图9所示, 每个三角形数据用链表中的每 一个结点表示,设链表指针为分别为Sl、 S2、 S3、 S4、 S5,设Sn所指向的结点中平面与三角形的交点为An和B^取任一结点中的两个交点,假设用A4和B4,以A4为头结点,B4作为尾结点,建立新的链表(临时链表),用A4的值遍历链表,找到与A4值相同的点B3,说明A4与B3表示的为同一点,在83所在 的结点中,还存在另外一点即A3, A3与B3为同一三角形与平面相交 的点,因此A3与B3相邻,因而下一个点为A3,以此类推,从而得到 以A4作为头结点的链表,同样可以得到以B4为尾结点的链表,将这两个链表连接成一个链表,即得到平面s切割形成的连续排列的曲面 三维轨迹。按照上述方法即可获得排序的链表,即曲面的三维轨迹。 差补链表中的点上面所得到的链表上两两相邻两点的距离是不均匀的,由于工艺 的要求需要保证点与点的距离是定值。本例采用的差补方式为直线差补。仍用上例来说明问题。假设得到排序链表c—dK—g—h—i —j—k.规定两点之间的距离为S,当c到d的距离大于S时,在c 与d之间加入dl点,并计算dl到d的距离与S的关系。如大于继续 加点,如小于S拋弃d, dl与e比较,以此类推得到一个两点距离均 匀的链表。 轨迹的延伸为了保证空间曲面边缘的镀膜的均匀性,轨迹路线相对于空间曲 面需要有一个延长量。如图5所示,假设用平面截三角形获得二条空 间的轨迹路线ab和cd,如果直线从a过渡到c或者从b过渡到d, 这都会导致边缘镀膜过厚,所以通过延长cd和ab曲线,在从延长点 e到h或f到g,这对边缘的影响较小,延伸的方法可采用按切线方 向进行延伸,如图6所示。假设A、 B点为链表中的最边缘处所截得 的两个点,以A、 B点的坐标建立直线方程,根据所要求的外延量求 出点C,即当溅射靶移动到C点处时,不会对齒面产生镀膜,在C与A之间等进行直线差补,得到距离均匀的点的集合。按照理论要求,外延的直线应该是曲线在点A处的切线方向, 并不是直线AB,在此我们根据实际工程做了近似。由数学定理可知, 由AB确定的直线在曲线AB上必有一点,该点的切线与AB确定直 线是平行的。由于AB之间距离很小,AB的曲率变化很小,所以在 AB上任选一点做切线,与在点A处求得切线是近似平行的。如图6 是所示。 拟合曲线用多个平面切割曲面后,得到的是一条条链表,而溅射靶行走轨 迹路线应该是一条完整的曲线,所以必须把各条的链表合成一个,如 图7所示。两链表相连中,例如在链表l与链表2的表各相连中,由 于1到2的距离可能超过真空电机的运动极限而导致电机抱死,产生 中途停车的现象,所以在链表1与2相连过程中,有必要在两链表相 连的两结点间插入适当的点,以使得两点之间的距离在真空电机的运 动极限范围之内。补入的点可以以两个链表头的坐标建立直线方程, 按照一定的距离,进行等距的差分。基于上述方法,控制滅射靶按照获得的三维轨迹行走,通过实验 表明可以对多种复杂的基片进行镀膜,并取得了良好的镀膜效果。
权利要求
1、基于STL文件的曲面切割轨迹获得方法,其包括如下步骤1)读取Stl文件;2)用一个或多个平面切割曲面3)将平面与三角形两边的交点按照顺序排列,再进行均匀化差补处理,即得到曲面切割轨迹。
2、 如权利要求l所述的方法,其特征在于,用某一平面S切割 齒面,将与平面S相交的三角形数据建立单链表,每个三角形数据用 链表中的每一个结点表示,设链表指针为Sn, n=i,2,3,...,i^ax,设SB 所指向的结点中平面与三角形的交点为An和Bn,取任一结点中的两 个交点,假设为Ai和Bi,以Ai为头结点,B,作为尾结点,建立新的 链表,用Ai的值遍历链表,找到具有相同交点的结点,假定为Sj, 则下一个点为Bj,以此类推,从而得到以Ai作为头结点的链表,同 样可以得到以Bi为尾结点的链表,将这两个链表连接成一个链表, gfJ得到平面S切割形成的连续排列的曲面三维轨迹。
3、 如权利要求2所述的方法,其特征在于,将相邻两平面a、 b 切割得到的顺序排列的链表的首结点或尾结点相连,将平面b以及与 平面b相邻的另一平面c的尾结点或首结点相连,依次类推,将多个 平面切割得到的轨迹拟合成一个。
4、 如权利要求1 3任一项所述的方法,其还包括用距离均匀的 点来表示获得的三维轨迹。
全文摘要
本发明提供了基于STL文件的曲面切割轨迹获得方法,其包括如下步骤1)读取St1文件;2)用一个或多个平面切割曲面;3)将平面与三角形两边的交点按照顺序排列,再进行均匀化差补处理,即得到曲面切割轨迹。利用上述方法获得的三维轨迹能够用于控制溅射靶的行走,使得磁控溅射镀膜机能够加工复杂基片,并且具有良好的精度和均匀性。
文档编号C23C14/54GK101225507SQ20081000692
公开日2008年7月23日 申请日期2008年1月25日 优先权日2008年1月25日
发明者周洪波, 贺晓华, 邓中亮 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1