面向实体边界模型的设计特征重构①
2016-02-23李正磊张应中罗晓芳
李正磊, 张应中, 罗晓芳
(大连理工大学 机械工程学院, 大连 116024)
面向实体边界模型的设计特征重构①
李正磊, 张应中, 罗晓芳
(大连理工大学 机械工程学院, 大连 116024)
实体模型只提供产品低层次的几何信息而不具备高层次的特征信息, 导致模型的修改十分困难, 因此需要从实体模型中重构设计特征将实体模型转换为特征模型. 利用分割环查找算法识别出零件模型中的布尔分割环, 构建分割环关系图, 根据分割环关系图识别模型中的设计特征构建零件的特征模型. 最后对该方法的有效性予以验证.
实体模型; 设计特征; 分割环; 特征识别; 特征重构
目前基于特征的三维造型技术已经广泛应用, 不同软件系统之间的数据交换日益频繁. 由于不同的CAD系统对特征的定义和表达不同, 导致数据交换只能在低层次的边界几何与拓扑信息层次上进行, 而高层次的特征信息在交换过程中会丢失, 造成转换后的模型编辑和修改十分困难. 为了解决这个难题, 必须在零件实体边界模型中重构出设计特征, 重建零件的特征模型, 恢复零件的设计意图.
特征识别与重构技术一直都是CAD领域研究的热点, 国内外对此开展了大量的研究, 提出了很多识别方法, 例如基于面邻接关系图、混合面邻接关系图和规则、体分解和神经网络方法等[1]. 但目前大多都是针对制造特征的, 从边界几何模型中重构零件的设计特征模型的研究相对较少. Koo S等[2]提出通过查找几何模型中的凸内环来识别模型中的凹特征, 其缺点是对于不在同一平面内的空间凸环无法处理, 并且由于只是利用凸环只能识别出凹特征, 无法识别凸特征. Byung Chul Kim[3]在Koo 的基础上提出了逐步体分解的方法来识别模型中的设计特征. 首先利用Koo S的方法识别出模型中的凹特征, 然后再利用模型中的凹内环通过体分割操作识别出简单的凸特征, 最后利用基于单元的体分解处理模型的其他部分. 文献[2-3]中的方法最大局限之处在于都是利用平面环, 无法处理空间环的情况, 而且当多个特征相交时, 导致环的识别相当困难, 论文中并没有提出一种可行的环查找算法. Yoonhwan Woo[4]等提出利用正交边界因子识别模型中的凸特征, 利用模型中的凹环及凹环上的一组面,通过计算面上相邻法向量的叉乘之和的极限值来判定凸特征, 但是凸特征如果不是被一个完整的凹环所包围时, 该方法无法使用. 刘云华等[5]提出了基于图分解的设计特征识别方法, 通过各种方法将面属性邻接图分解为更小的子图进而进行特征识别.
本文提出了一种利用布尔分割环识别和重构设计特征的方法. 首先由零件的实体边界模型得到其属性邻接图, 然后设计一种分割环查找算法从属性邻接图中查找用于后续分割模型所需的分割环; 利用实体模型中的几何和拓扑关系确定各分割环之间的关系, 构建布尔分割环关系图以确定特征识别的顺序; 识别模型中设计特征并将结果保存到设计历史构造树.
1 基于设计特征的零件实体造型
1.1 设计特征的形状认知
特征设计是目前CAD中主流的造型方法. 设计特征是设计信息的载体, 是一系列具有特定工程意义的几何元素集合[6], 可以表达高层次的设计意图信息.在一般的3D建模中, 常用的设计特征可分为体特征、局部修改特征和复制特征等. 体特征又分为増料特征和除料特征, 是特征造型中应用最多的特征. 体特征一般采用扫描几何造型生成, 根据扫描路径特点, 扫描体特征又可以分为以下四类:
1) 拉伸特征: 截面轮廓沿着一个指定直线方向,拉伸到给定长度或到达某个面形成三维形体, 且截面垂直于拉伸方向;
2) 旋转特征: 轮廓截面绕着一个旋转轴线旋转一定角度形成三维形体;
3) 扫掠特征: 由截面轮廓沿着一条空间扫描路径形成三维形体, 截面始终垂直扫描路径或保持法向不变;
4) 放样特征: 由空间多个不同截面沿放样轨迹过渡形成三维形体.
扫描体特征具有的一个明显形状特点, 它的三维形状可以表示为二维截面的变换, 形成三个具有形状特点的边界表面, 即底面、顶面和侧面, 如图1所示.并且可以得到如下扫描体形状特征知识:
1) 扫描体侧面通常垂直相邻于底面和顶面; 2) 扫描体侧面由一组相互连接的边界面包围.
2.2 设计历史构造树
设计活动是一系列的设计步骤或行为, 设计历史作为设计活动的记录[7], 以树的形式保存的整个建模过程被称之为设计历史构造树. 该树的叶子节点是设计特征, 中间节点是由设计特征隐含的布尔运算或局部修改运算符号, 根节点就是最终构造的实体零件模型. 设计树记录了特征建模的先后顺序, 以及中间的各种运算. 通过设计树可以对零件中的特征进行修改编辑. 除此之外, 还可以通过设计树选择特征、改变特征的生成顺序以及更改特征的名称等操作. 实际上,特征的修改就是一个设计树重构过程. 图2(a)是一个实体模型对应的设计历史构造树.
图1 四类扫描体特征
图2 设计历史构造树
通过该设计历史树不仅可以清晰的了解该模型的设计过程, 并且还可以通过修改该树的节点来编辑实体模型, 如将红色的长方体变成圆柱体. 如上图2(b)所示.
2.3 实体边界模型中的特征痕迹
如上所述, 基于特征的造型过程就是在一个基体上将不同的基本特征通过布尔运算添加到基体上形成复杂零件模型的过程. 每种基本特征都有自己特定的几何与拓扑模式, 尽管由于特征相交会使特征的完整边界模式遭到破坏, 但是只要它确是零件的一个特征,就一定在零件的CAD模型中留有痕迹, 这些特征痕迹就是对模型中的设计特征进行认知与识别的基础. 例如两个特征做布尔并运算一般会形成凹环或凹边, 做布尔差运算会形成凸环等, 图3(a)给出一个特征痕迹的实例. 图3(a)中的模型是在长方体1的基础上通过添加或去除不同的基本特征得到的. 一般情况下凸环是凹特征的痕迹, 凹环是凸特征的痕迹. 如平面凸环、空间凸环分别是长方体1与立方体2、长方体3做布尔减运算所形成的特征痕迹; 平面凹环1是长方体1与长方体4做布尔并运算形成的痕迹, 平面凹环2是长方体4与圆柱体5做布尔并运算形成的特征痕迹.
图3 特征痕迹实例
由特征痕迹可以推理出设计特征, 如图3(a)中的平面凸环, 该环的四个邻接面两两平行并且垂直于凸环所在的平面, 邻接的另一底面也平行于凸环所在平面, 可以推理出该特征是简单的拉伸特征.
3 分割环的识别与构造
如上一节所述, 不同的设计特征相交会形成布尔分割环, 通过分割环可以将设计特征从零件模型中识别出来. 但问题的关键是如何识别特征相交的痕迹,同时将相交的痕迹边构造成分割环.
3.1 分割环的定义与表示
沿着一组封闭环L1, L2…Ln将B-Rep模型分割成多个面壳(face shell)FS1, FS2…FSm, 如果所有的FSi都能通过面壳封闭操作形成封闭实体, 那么称封闭环L1, L2…Ln为分割环[8]. 分割环是一组边的集合, 根据组成分割环的边的凸凹性不同分割环可分为凸环和凹环,凸环的所有环边全是凸边, 凹环的所有环边全是凹边.为了判定边的凸凹性, 本文引入二面角的概念——两个邻接面外侧所形成的夹角称为二面角[9], 二面角的定义见下图4. 边的邻接面所形成的二面角大于180°称为凸边, 小于180°的为凹边, 等于180°的为中性边.边的凸凹性的判定方法见图5.
图4 二面角的定义
图5 边的凸凹性判定方法
两邻接面F1和F2相交于棱边ab, 取F1和F2中任一平面为基面, 如取F1面为基面, 棱边ab的方向由右手螺旋法则由基面F1的法矢量n1确定. 取棱边ab上一单位向量记为nab, 其方向和棱边ab方向一致. 则边的凸凹性可由下面的式子给出:
3.2 分割环的识别
首先从实体的边界模型(B-rep)中提取面边信息,建立模型的属性邻接图(Face Adjacent AttributeGraph,FAAG)G=〈V,E,A〉. 其中V表示模型中的面;E表示面之间的邻接关系, 对应模型中的边;A用于记录附加在V和E上的属性, 包括边的凸凹性、面上环的个数等. 图6 (a)所示零件的FAAG图如图6(b)所示, 这里仅记录了边的凸凹性, 其中0表示凹边, 1表示凸边.
图6 零件实体模型及其属性邻接图
由实体模型得到对应的FAAG图后, 如果直接在整个的图中查找分割环效率是很低的. 为了提高查找效率, 本文引入混合区域的概念. B-rep中多个相邻的面所形成的集合称为区域, 如果区域中同时存在凹边和凸边, 那么称此区域为混合区域[10]. 通过对各种零件模型的分析可以发现分割环一般出现在混合区域中,因此首先根据混合区域的定义遍历实体模型的FAAG图标记出模型中的混合区域, 然后在混合区域上识别出所有的分割环. 图7给出了特征识别的总流程.
图7 特征识别总流程
分割环的可按下述算法进行识别 :
输入: CAD模型的属性邻接图AdjFaceGraph *G
输出: 分割环的集合存储CLoop的动态数组LoopArr中. vector<PK_EDGE_t>Edges 存放单个的分割环的边. 模型的每条边edge可以有三种状态: 未遍历、正在遍历、已遍历, 设置int 型m_TraversalFlag为标志变量, 其对应的值分别为 0、 1 和-1.
在建模过程中由于特征相交会导致分割环发生交叉, 给分割环的识别带来一定的难度, 并且对非封闭的分割环还需要构造辅助边得到闭合环. 这些问题的解决借助图8进行阐述.
图8 交叉分割环与非闭合分割环
在图8(a)所示的模型中查找分割环时a、b、c都可能被搜索, 但很明显正确的分割环只有a和c. 因为在零件建模过程中拉伸体的草图是在平面上的, 因此本文提出以下两个分割环搜索的原则: 1 在多个分割环交叉的情况下优先选择平面分割环; 2 空间分割环必须是闭合的. 原则1保证b不会被识别为有效的分割环, 原则2保证分割环c会在分割环a后别识别出来.分割环a是非闭合分割环, 需要进行闭合操作. 延伸分割环所在的平面(延伸面)与模型中其他平面相交得到得到辅助边集合, 以此来封闭分割环a.
3.3 分割环关系图
在基于特征的设计系统中, 零件的特征要按一定的顺序添加到几何体上, 因此在特征识别中必须重构这一顺序, 这一顺序与特征建模顺序相反, 可以从分割环关系图中得到. 在特征模型中有些特征依附于其他的特征之上, 这些特征被称为子特征, 被依附的特征称为父特征. 在子特征被识别之前必须先识别父特征, 这反应在分割环上就是要确定分割环的先后顺序.本文利用实体模型中的几何和拓扑关系确定各分割环之间的关系, 构建布尔分割环关系图以确定特征识别的顺序, 下面通过图9中一个简单的例子来说明分割环关系图的构建方法.
图9 创建分割环关系图
从图9(a)中的模型可以很容易的看出1是2的子特征、3是4的子特征, 2和4又是基体5的子特征. 分割环3是内环, 其所在的平面是分割环4的一组邻接面的其中一个面, 很容易得出分割环3上所连接的特征是分割环4所连接特征的子特征, 则可确定分割环3和4之间的先后顺序. 分割环1虽然不在分割环2的邻接面上, 但分割环1所在的平面与分割环2的所有邻接面都相邻, 即在分割环2所连接特征的底面上,同样可以得出分割环应该在分割环1的前面进行特征识别. 分割环2和4都是直接依附于基体5上, 两者之间没有依附关系, 不存在先后顺序.
4 基于分割环的扫描体特征
得到了分割环关系图, 特征识别的顺序也就随之确定了, 接下来需要根据分割环来重构设计特征. 扫描体特征是通过某一平面草图沿着某一路径生成的,其拓扑结构相对固定, 通常有一个顶面、一个底面和多个侧面. 由分割环创建扫描体特征的一般过程参考下图10进行说明: 由分割环可以很容易得到扫描体特征的一组侧面, 通过研究发现扫描体特征的底面一般情况下总是垂直于其侧面的一个平面, 因此由扫描体的侧面可以得到其底面, 这样底面的边界环和已有的分割环形成了一对构造环. 由于特征相交导致有时无法由分割环直接生成扫描截面, 而一般情况下扫描体的底面不会被破坏, 这样可以通过底面边界环创建扫描截面. 而扫描轨迹的创建需借助与底面垂直的侧面,一般情况下选取垂直于底面的最长的一条侧面的棱边.由于零件模型的复杂程度不同, 有些特征的扫描截面与扫描轨迹的创建十分复杂, 还有待进一步的研究.
图10 由分割环创建扫描体
对最常见的垂直拉伸的扫描体有如下的判定方法进行识别: 分割环所在的平面垂直于该分割环的一组邻接面, 且这一组邻接面都在分割环所在平面的同侧,同时该组邻接面的另一公共邻接面平行于分割环所在平面. 利用该原则可以很容易的重构出基于平面分割环的扫描体特征, 基于空间分割环的特征重构与之不同, 通过下图11的例子予以说明.
图11 基于空间分割环的特征重构示例
在图11(a)中分割环1、2和4都是平面分割环, 用parasolid内核函数PK_BODY_make_swept_body (profile,path, path_start, &options, &swept_body)可以很容易重构出相应的拉伸扫描体特征. 其中参数profile为拉伸草图即分割环, 参数path为拉伸路径, 拉伸路径是由分割环所形成的平面中点到对应的底面中点所确定的. path_start为拉伸起点即分割环所形成的平面的中点. options是拉伸操作的一些选项, swept_body中保存的是重构出的特征, 如图11(b)所示; 对于分割环3为空间分割环, 相比于平面分割环对其进行特征重构会复杂一点.由于分割环不在同一平面上所以无法直接像1、2、4那样重建特征体, 但是分析发现, 若选择分割环的一组邻接面中的一个面的边界环作为拉伸草图, 以与其垂直的两个邻接面的公共边作为拉伸路径, 同样可以创建拉伸特征.
5 重构实例
本文提出的特征识别与重构方法已经通过Visual C++2008与OpenGL开发平台编程实现. 为了验证本文的方法, 下面的例子是在UG8.0中建的零件模型,保存为XT格式. 该模型中共有7个分割环, 如图12 (a)所示, 其中有两个凹环识别出的是凸特征1和5, 5个凸环识别出的凹特征2、3、4、6和7. 重构的扫描体特征如图12(b)所示. 其中圆柱体1在5之前被识别, 2和3分别在6和7之前识别.
图12 基于分割环的特征重构实例
6 结论
本文提出了一种利用布尔分割环识别和重构设计特征的方法. 该方法从实体模型的属性邻接图中识别出分割环, 利用实体模型的几何与拓扑关系确定各分割环之间的关系, 构建分割环关系图以确定特征识别的顺序,并基于分割环构建扫描体设计特征. 本文完成的工作是对实体边界几何模型进行设计特征重构一个初步的尝试,此外, 本文仅讨论了拉伸扫描体设计特征的重构, 更为复杂的其它扫描体特征、过渡特征及如何高效的创建设计历史构造树将是下一步的研究目标.
1 Han JH, Requicha AAG. Feature recognition from CAD models. IEEE Computer Graphics and Applications, 1998, 18(2): 80–94.
2 Koo S, Lee K. Wrap-around operation to make multi-resolution model of part and assembly. Computers & Graphics, 2002, 26(5): 687–700.
3 Kim BC, Mun D. Stepwise volume decomposition for the modification of B-rep models. The International Journal of Advanced Manufacturing Technology, 2014, 75(9–12): 1393–1403.
4 Woo Y, Kim SH. Protrusion recognition from solid model using orthogonal bounding factor. Journal of Mechanical Science and Technology, 2014, 28(5): 1759–1764.
5 刘云华,陈立平,钟毅芳.从几何实体重建设计特征模型.计算机辅助设计与图形学报,2003,15(7):836–841.
6 王兴东,邹光明,孔建益,佘林,胡于进.基于设计特征的概念设计解产生及其评价.武汉科技大学学报(自然科学版), 2006,29(4):372–375.
7 姜华,王涛,操晴,熊光楞.设计历史的建模方法.机械科学与技术,2000,19(2):197–201.
8 罗月童,樊晓菁,等.基于面壳封闭的B-rep至CSG转换算法.计算机辅助设计与图形学报,2014,26(10):836–841.
9 Fu MW, Ong SK, Lu WF, et al. An approach to identify design and manufacturing features from a data exchanged part model. Computer-Aided Design, 2003, 35(11): 979–993.
10 Ma LJ, Huang ZD, Wu QS. Extracting common design patterns from a set of solid models. Computer-Aided Design, 2009, 41(12): 952–970.
Design Feature Reconstruction for B-Rep Solid Models
LI Zheng-Lei, ZHANG Ying-Zhong, LUO Xiao-Fang
(School of Mechanical Engineering, Dalian University of Technology, Dalian 116024, China)
Solid models only provide low-level geometry information of products and do not have high-level feature information. As a result, it is very difficult to modify the solid model. It is necessary to reconstruct design features from the solid model and transform a solid model to a feature model. The cutting loop can be identified by a cutting loop search algorithm and then the relation graph of cutting loop is built. According to the relation graph, design feature can be identified and the feature model can be built. Finally, a reconstruction example is provided, which demonstrates the effectiveness of the presented method.
solid model; design feature; cutting loop; feature recognition; feature reconstruction
国家自然科学基金(54375069)
2016-03-15;收到修改稿时间:2016-04-18
10.15888/j.cnki.csa.005468