新基于STL模型的逆向工程实体建模技术.docx
《新基于STL模型的逆向工程实体建模技术.docx》由会员分享,可在线阅读,更多相关《新基于STL模型的逆向工程实体建模技术.docx(7页珍藏版)》请在冰豆网上搜索。
![新基于STL模型的逆向工程实体建模技术.docx](https://file1.bdocx.com/fileroot1/2023-4/28/188f73bf-b924-4062-865b-45e95ce1acc8/188f73bf-b924-4062-865b-45e95ce1acc81.gif)
新基于STL模型的逆向工程实体建模技术
基于STL模型的逆向工程实体建模技术
内容摘要:
摘要:
针对以STL数据表示的零件模型,在分析结构件模型几何特点的基础上,提出了一种以几何体素分离与拓扑关系重建为基础的STL模型逆向工程实体建模技术。
通过对三角面片的合并实现平面、柱面、锥面等基本几何体素的分离,并利用Parasolid系统完成体素重构,进一步提取几何体素之间的布尔关系,从而实现含拓扑关系的产品模型重构。
利用这一方法,可以实现RE/RP系统与通用CAD系统之间的快速集成,实现产品数据在不同系统之间顺畅传递。
模型重建1逆向工程CAD技术与STL模型逆向工程CAD技术一般以数字化测量设备的输出数据为原始信息来源[1]。
摘要:
针对以STL数据表示的零件模型,在分析结构件模型几何特点的基础上,提出了一种以几何体素分离与拓扑关系重建为基础的STL模型逆向工程实体建模技术。
通过对三角面片的合并实现平面、柱面、锥面等基本几何体素的分离,并利用Parasolid系统完成体素重构,进一步提取几何体素之间的布尔关系,从而实现含拓扑关系的产品模型重构。
利用这一方法,可以实现RE/RP系统与通用CAD系统之间的快速集成,实现产品数据在不同系统之间顺畅传递。
关键词:
STL;逆向工程;实体建模;模型重建
1 逆向工程CAD技术与STL模型
逆向工程CAD技术一般以数字化测量设备的输出数据为原始信息来源[1]。
由于测量方式的不同,数字化测量设备可以分为接触式和非接触式。
随着测量技术的发展,不论何种测量方式,产生的测量数据都是非常多的,尤其是非接触式的激光测量,可以产生几十万甚至上百万测量点的测量数据。
我们将这种数据称为“点云”数据。
一般来说,数字化测量设备都带有数据处理软件。
这个软件的主要功能是对测量设备输出的数据进行初步处理,如去除明显噪声点、多块数据拼合、数据格式转换等。
一般的测量设备除了按照自定义格式输出数据外,都提供IGES格式的数据输出。
随着软件功能的加强,目前很多测量设备可以在输出测量数据的同时输出三角网格数据(即经过三角化以后的数据)或者STL格式数据。
但是这些STL格式数据一般没有经过测试(如不保证封闭性,可能存在裂隙等),不能直接用于逆向工程建模或RP制造。
由测量设备输出的STL数据必须经过修补、纠错处理,才能用来进行逆向工程CAD建模。
因此,逆向工程中重要的一个环节就是数据的预处理。
本文研究重点是几何模型重建,因此我们使用的数据都是经过预处理以后的有效数据,而非来自测量设备的原始数据。
2 基于STL模型的逆向工程实体建模
STL模型是以三角形集合来表示物体外轮廓形状的几何模型[2]。
在实际应用中对STL模型数据是有要求的,尤其是在STL模型广泛应用的RP领域,对STL模型数据均需要经过检验才能使用。
这种检验主要包括两方面的内容:
STL模型数据的有效性和STL模型封闭性检查。
有效性检查包括检查模型是否存在裂隙、孤立边等几何缺陷;封闭性检查则要求所有STL三角形围成一个内外封闭的几何体[3]。
本文中讨论的STL模型重建技术中的STL模型,均假定已经进行有效性和封闭性测试,是正确有效的STL模型。
由于STL模型仅仅记录了物体表面的几何位置信息,没有任何表达几何体之间关系的拓扑信息,所以在重建实体模型中凭借位置信息重建拓扑信息是十分关键的步骤。
另一方面,实际应用中的产品零件(结构件)绝大多数是由规则几何形体(如多面体、圆柱、过渡圆弧)经过拓扑运算得到,因此对于结构件模型的重构来讲拓扑关系重建显得尤为重要。
实际上,目前CAD/CAM系统中常用的B-rep模型即是基于这种边界表示的基本几何体素布尔运算表达的。
因此STL模型重建的过程如下:
首先重建STL模型的三角形拓扑关系;其次从整体模型中分解出基本几何体素;重建规则几何体素;然后建立这些几何体素之间的拓扑关系;最后重建整个模型。
2.1 三角形拓扑关系重建
STL模型中仅仅包含产品的几何位置信息,而且STL数据中包含大量的重复数据。
STL中的三角形顶点是重复记录的,其重复度为N(N为以该点为顶点的三角形数目)。
为了在后续步骤中提高运算效率,有必要首先去除冗余数据,提高存储和运算效率[4],同时建立STL模型三角形拓扑关系,即建立三角形的边信息结构,记录每条边的左右三角形。
考虑到排序运算效率,我们采用双向链表的方式记录每一条边的左右三角形信息。
三角形拓扑关系的建立不但精简了STL模型数据,而且是后序几何体素分离的基础。
2.2 STL模型几何体素分离
由于STL模型是由三角形集合构成的,因此直接利用三角形数据无法将不同的几何体素互相分离。
如果将描述模型平面部分的三角形合并,然后提取出平面的边界,利用边界就可以将不同的几何体素区分开来。
平面是最简单的几何元素。
根据平面特性,我们可以得到平面边界提取准则:
如果具有相邻边的两三角形法矢平行,则这两个三角形构成一个平面。
以此外推,所有与该平面具有相邻边且法矢平行的三角形都属于该平面。
平面识别过程是一个递归循环:
设任一三角形为“种子”三角形,其法矢为N0。
Ni为与“种子”三角形有相邻边的三角形的法矢,计算N0、Ni的夹角θ=arccos(N0.Ni/|N0||Ni)。
若θ<δ(δ为三角形合并阈值),则三角形i可以与“种子”三角形合并。
发生三角形合并后,原来的“种子”三角形边界扩充为多边形边界,“种子”三角形成为“种子”多边形。
以新得到的“种子”多边形边界为依据,寻找相邻三角形,再重复以上合并步骤,使“种子”多边形不断长大,最终当所有相邻三角形均无法与“种子”多边形合并时,递归停止。
这时得到的是由多条边界组成的平面多边形。
此时我们发现,即使是简单矩形,依然是由很多短边组成的多边形,这显然不适合特征造型的要求。
为此还需要进行边直化。
边直化就是将共线的短边合并成为一条直线边。
完成边直化以后就得到了正确的平面多边形,其法矢就是初始三角形的法矢。
对完成平面边界提取的模型基础,从边界边链表中的任意一条边开始,总可以找到与它位置相连的组成一个封闭几何体的所有边。
这时,剩下的边就成为另一个与当前几何体无几何位置联系的独立几何体。
当边界边链表中所有的边都遍历分离以后,就可得到所有组成零件的独立几何体的各自的边集合。
按照该方法,类似阶梯孔之类的特征将会被分解为n个(n为阶梯的层次数)独立的几何体。
体素分离的过程见图1。
图1a是STL模型,图1b是提取平面边界后的模型。
我们可以看到,原来STL模型上所有的平面都被提取出来了,而诸如圆角、圆柱面、圆锥面等二次曲面部分则还保留着三角形描述。
图1c是体素分离以后的STL模型(成为4个独立的几何体素)。
对于这些独立体素,我们需要将其中规则几何体重新利用参数化方法重构,这样才能使最终重建模型成为一个参数化的、有一定拓扑关系的实体模型。
图1 几何体素的分离
2.3 规则几何体素重构
由于大多数结构件模型可以分解为平面和各种二次曲面(圆柱面、球面、锥面等)的组合,因此将这些规则几何体利用参数化方法重构以后,就可以得到具有参数信息的结构件模型。
对于由平面围成的体素,可以直接将所有平面拼合在一起构成实体体素。
对于包含圆柱面、圆锥面等非平面的体素,根据这些几何体的特点以及STL模型能够提供的信息,我们对几类常见几何体的判断给出了准则。
通过实际建模证明,这些准则可以较准确地重建这些几何体。
(1)圆柱(外圆柱面、内孔面)体素重建 由于STL模型是用离散的数据表示连续曲面,因此STL模型中的圆(柱)实际上是一个多边形(体)。
对于圆柱面的判断,我们根据其几何特性提出如下准则:
条件1 设组成圆柱的三角形集合为Ω,则Ω内所有具有相邻边、法矢共面且平行的三角形组成圆柱的两个端平面,见图2a。
条件2 Ω内所有具有相邻边、法矢共面但不平行的三角形组成圆柱面,见图2b。
设圆柱侧面三角形的法矢为Ni(i=0,1,…,m,m为三角形数量),Ci为三个法矢的混合积:
Cj=(Ni×Ni+1).Ni+2,i=0,1,…,m-2若Ci=0,则所有三角形法矢共面。
同时,由于任意两法矢均不平行,故这些三角形组成圆柱面。
以上准则可同样适用于等半径过渡圆柱面的判断。
圆柱体素几何参数提取方法如下:
在确定了组成圆柱面的三角形后,就可以根据这些三角形确定圆柱面的直径、高度、几何位置等参数。
首先,合并这些三角形的公共边,得到两个由三角形边界边组成的多边形(即圆柱上下端面的圆)。
然后根据多边形顶点数据,计算出两个多边形的几何重心(圆柱位置参数)、外接圆直径(即圆柱直径)以及由两个几何重心确定的圆柱方向、高度。
(2)圆台、圆锥体素重建 类似圆柱面的识别,圆台、圆锥面的判别准则同样以三角形法矢之间的关系为依据。
条件1 设组成圆台(锥)的三角形集合为Ω,则Ω内所有具有相邻边、法矢共面且平行的三角形组成圆台(锥)面的端平面。
条件2 Ω内所有具有相邻边、法矢不共面的三角形组成圆台(锥)面。
圆台(锥)体素几何参数提取方法如下:
首先,合并组成圆台(锥)面的三角形的公共边,得到由边界边组成的多边形。
如果得到两个多边形,则该体素为圆台,若只有一个多边形(另一个多边形退化为一点),则该体素为圆锥。
根据得到的边界多边形,可以计算出其重心、直径。
对于圆台,得到上下圆面直径、方向、几何位置、高度;对于圆锥,得到底面直径、方向、几何位置,由于圆锥只有一个边界多边形,因此需要借助侧面三角形计算圆锥体的高度。
(3)其它二次曲面体素重建 在完成平面、圆柱面、圆台、圆锥面的提取后,利用剩下的尚未识别的三角形数据构造逼近曲面,并通过逼近曲面识别出这些三角形是否为球面、抛物面等二次曲面,并提取二次曲面相关参数。
有关通过逼近曲面识别球面、抛物面、旋转面等的算法很多[5,6]。
根据计算出的曲面类型和参数,利用现有几何造型软件(如ParaSolid)可直接构造出几何体。
2.4 基本拓扑结构重建
仅仅依靠独立的几何体素是无法正确重建模型的,只有明晰体素之间的拓扑关系,并据此完成拓扑运算后才能得到正确的零件模型。
拓扑关系的运算包括布尔“和”、布尔“减”、布尔“差”3种。
由于STL模型表达模型的外轮廓面信息,因此在STL模型中布尔“差”是不会出现的。
因此只要分析出两两几何体之间的“和”、“减”关系就可以完成模型重建。
对A、B两个独立的几何体素,需要相互进行包容性测试。
包容性测试可以判断出体素的顶点与另一体素的关系:
顶点在体素内、顶点在体素外、顶点在体素上。
根据顶点与体素的关系可以得到两个体素的相互位置关系,进一步得到它们的拓扑关系。
通过分析我们确定了两体素之间的6种位置关系,见图3。
分别将这6种位置关系对应到拓扑关系中,就可以确定两个体素之间的布尔运算类型。
2.5 零件模型重建
在确定所有组成零件的几何体素两两之间拓扑关系以后,需要进行布尔运算得到最终的模型。
此时需注意的是,不同的布尔运算次序会产生不同的结果。
图4是利用相同体素通过不同布尔运算次序产生的零件。
可以看到,不同的次序产生了两个完全不同的新零件。
如何能得到需要的正确结果,可通过对STL模型的分析,正确的方法是先对所有的体素进行布尔“和”运算,然后在“和”运算的基础上进行布尔“减”运算,这样才能保证运算结果的正确性、有效性。
3 实例
图5和图6是两个结构件模型STL数据的重建结果。
STL模型数据由测量数据经过简化得到,利用以ParaSolidV14.0为内核开发的CAD造型软件进行几何模型重建。
由于ParaSolid所保存的xt/xb文件具有很好的通用性(如UG、SolidWorks等CAD软件均可以直接读入),因此我们重建的CAD模型可以直与其它CAD系统进行交流。
4 结论
本文在分析结构件模型几何特点的基础上,提出了一种以几何体素分离与拓扑关系重建为基础的STL模型逆向工程实体建模技术。
该方法充分利用了STL模型能够提供的有用信息,重建模型中包含了参数化几何特征和基本拓扑关系,使重建模型具有很好的实用性。
该方法在很大程度上拓展了STL模型在CAD软件中的应用。
由于实际产品零件的复杂性,我们提出的方法还不能完全适应实际产品造型需求,下一步我们将针对变半径过渡区域及混合过渡区域的特征识别与重建进行深入研究。