1. 引言
随着智能制造技术的飞速发展,设计和制造智能设备变得更加复杂,尤其是在计算机辅助设计(Computer Aided Design, CAD)、计算机辅助工程分析(Computer Aided Engineering, CAE)和计算机辅助制造(Computer Aided Manufacturing, CAM)等关键领域 [1] 。当前,CAD软件通常使用表面模型(Boundary Representation, B-rep) [2] 或构造实体(Constructive Solid Geometry, CSG) [3] 来定义几何形状,而CAE软件需要将这些模型转换为有限元分析(Finite Element Analysis, FEA)所需的网格模型,这一转换过程不仅耗时,还可能损害模型的结构和拓扑完整性,影响分析的准确性,并增加手动操作成本 [4] 。为了解决CAD和CAE软件在模型表示上的差异导致了效率低下和资源浪费问题,研究者们引入了等几何分析 [5] [6] (Isogeometric Analysis, IGA)方法,该方法使用B样条或非均匀有理B样条(Non-Uniform Rational B-Splines, NURBS)作为映射函数,创建了可以直接用于分析的体参数化模型,避免了网格离散化带来的问题,并在数学上保证了模型的高阶连续性,有利于模型的生成和优化。
当今体参数化模型的主流建模方法主要分为重建式和创建式两大类。重建式方法主要面向较为成熟边界表达模型,如点云模型、划分网格的有限元模型、标准CAD格式的STEP模型等。在现有的重建式方法中,主要对象是B-rep模型和CSG模型。Akhras [7] 使用polycube结构表达B-rep模型,将原有模型离散映射到polycube上,可以得到B-rep模型的体参数化表达,但无法确保模型特征的完备性。Strodthoff [8] 等人提出一种基于B-rep模型的分割方法,该方法利用原有模型构建Reeb图,使用Morse函数定义切割面,可以降低亏格,较为有效地将B-Rep模型参数化,但该方法鲁棒性不佳,需要进行复杂的计算。Zuo [9] 等人采用分解构造法,先将CSG模型分解成若干基本实体,用NURBS表达这些实体,再对相邻实体进行裁剪,使其满足IGA的要求,最后再使用布尔运算将这些实体复原。该方法适用性较好,能处理大部分CSG模型,但是无法直接获得裁剪曲面,计算量较大。这些方法可以有效创建体参数化模型,但得到的模型通常会丢失特征细节,模型质量也难以保证。
创建式体参数化建模方法侧重于从零开始构建模型,用户通过交互操作逐步定义模型的几何形状和特征。Liu [10] 提出了T样条布尔映射建模法,首先进行布尔合并运算组合模型,再将模型离散并映射得到由T样条表示的立方体结构,能直接应用于IGA。但体布尔运算涉及的计算量较大,现有研究还不够成熟。Massarwi [11] 等提出基于V-rep的通用建模方法,使用V-cell作为基础表达单元,构建V-model,以实现V-rep模型的表达。缺点是V-rep模型以裁剪B样条表示,难以进行积分和映射。通过改进,可以将V-rep模型细分成张量积B样条表示的三维模型 [12] ,但对于具有复杂特征的模型应用较为困难。
随着交互技术 [13] 的研究推进,通过人机交互实现体参数化模型构建的方法将建模过程变得更加简洁、透明。Barr [14] 开发新的实体建模方式,模拟几何模型变形,通过鼠标修改参数实现交互变形。张思宇等人 [15] 把自由变形思想引入到折叠建模过程中,证明自由变形对柔性伞衣织物折叠建模方法的可靠性。Hu等 [16] 将能量优化作为核心优化曲面变形,通过给曲面增加几何约束实现曲面的变形。Chang [17] 等人提出了一种变形技术,允许用户定义一个贝塞尔曲线坐标轴,在贝塞尔曲线的每个控制点上都定义了一个局部坐标系,通过操纵各个局部坐标系,用户可以改变贝塞尔曲线的形状,也就是改变所定义轴的形状。
本文在VS2017开发环境下,使用c++语言,调用OpenCASCADE Technology (OCCT)、OpenGL等多个开源库,使用Qt5.9.1设计软件界面,完成OCCT格式下表面表达模型的绘制;创建了以模型特征为主导的数据结构,在绘制B-rep模型时同时存储体参数化模型数据,最后进行体参数化模型的剖分、拼接工作,实现从表面表达模型到体参数化模型的转化。
2. 特征框架与数据结构
2.1. 特征定义
2.1.1. 特征点
特征点是构造一根或一组特征线时,直接交互输入的点。特征点存储了该点的坐标位置信息和该点是否可移动的布尔信息,是构造二维草图的基础。以图1为例,图1(a)为边角矩形特征,特征点为两个边角p1、p2;图1(b)为中心矩形特征,特征点为p3、p4;图1(c)为标准圆特征,特征点为p5、p6;图1(d)为三点圆弧特征,特征点为p7、p8、p9。
2.1.2. 特征线
特征线是在构建二维草图时,使用任意图形绘制按钮,得到的一根或一组封闭或开放的线。不同的形状特征分别存储各自的几何、位置和布尔信息,标准圆特征存储圆心坐标和半径,矩形特征存储矩形边长的几何信息和四条边水平/竖直的布尔信息。特征线可以交互拖动,并根据存储的几何、位置和布尔信息改变特征点的位置,实现模型变形。使用平移、旋转、镜像等命令时,特征线将保留原有特征,仅改变特征点的坐标,实现模型变换。

Figure 1. Schematic diagram of feature points and feature lines
图1. 特征点、特征线示意图
2.1.3. 特征面
特征面是二维草图构造完成后,退出草图构建时,将草图上所有线进行组合,得到的一个面。构造特征面时会进行特征线是否闭合的判定,若存在开放的特征线,则会退回到二维草图绘制阶段。特征面可以进行平移、旋转、镜像等变换操作,但不能直接变形。
2.1.4. 基准
基准数据包含基准点、基准线和基准面。基准点是三维坐标系中的一个点,存储该点的x、y、z坐标信息;基准线是三维坐标系中的一条直线,考虑与x、y、z轴中一根轴平行的直线,表达式为(x = a, y = b)或(x = a, z = c)或(y = b, z = c);基准面是三维坐标系中的一个平面,表达式为(ax + by + cz + d = 0)。基准数据用于辅助模型构建,通常是模型变换操作的参考,基准面也作为草图绘制的基础平面。
2.1.5. 特征路径与特征体
特征体是根据特征面、特征路径和特征变换得到的体。如图2所示,特征体V由特征面S通过拉伸操作得到,带方向的特征线L便为特征路径。大多数特征体可以通过拖动特征面的位置来改变特征路径的长度和方向,但不能改变特征面的几何和位置信息,也无法直接改变特征操作类型。特征体在进行平移、旋转、镜像等变换操作时,将直接改变特征面和特征路径,保留特征变换类型不变。

Figure 2. Schematic diagram of feature surface, feature path and feature volume
图2. 特征面、特征路径、特征体示意图
2.2. 特征树与父子特征
2.2.1. 特征树
早在1995年,王 [18] 等就提出了应用于CAD/CAPP/CAM集成化的特征树概念。为了展现体参数化模型可应用于建模、仿真、优化、制备一体化的优势,本文根据NURBS数据特点,按下列方法定义特征树:
(1) 一个机械零件是一个特征体,或由一组特征体拼接而成,体与体之间的拼接面必须相同;
(2) 特征体由一个或一组特征面、特征路径和特征变换得到;
(3) 特征面由一组特征线插值或剖分得到。
由此得到了与上文中特征定义相对应的四层特征树框架,如图3所示。在建模过程中,对每一层的特征进行绘制编号,依次存储在上一层数据中;删除的特征不会删去对应编号,特征内容改为空指针。
2.2.2. 父子特征依赖关系
父子特征是在创建多个特征体时,由于存在特征体创建的先后、特征体创建时基准面相对位置等问题,为了保证多个特征体在拼接处的公共面相同,提出的内在特征框架。父子特征的逻辑关系定义如下:
(1) 以基准坐标平面或与坐标平面平行的平面为基准面,构造的特征体及其所有特征的特征依赖序号为0;
(2) 在同一基准面上构造的特征体,第一个构造的特征体及其所有特征的特征依赖数组为(0, 0),之后按特征编号大小排序,第x个特征体及其所有特征的特征依赖数组为(x − 1, 0);
(3) 以特征依赖数组为(x, y)的特征体上任意一面作为基准面,构造的特征体及其所有特征的特征依赖数组为(x, y + 1)。
完成零件模型绘制,得到所有特征体和特征依赖序号之后,进行体参数化模型的生成工作。对于同一特征序号下的一组父子特征而言,首先将父特征的特征线数据投影到子特征的特征面中,依次判断父特征的特征线是否在子特征面内,并保留在子特征面内的部分。以此逐级向下传递,直到特征依赖序号最大的特征面完成该步骤。
然后对特征依赖序号最大的特征面进行四边剖分操作,并将该面的剖分结果向上映射到父特征的特征面中,使得父特征能保留子特征的分割线,再进行父特征中的特征面四边剖分,直到特征依赖序号为0的特征面完成自动剖分。父子特征之间的特征线投影、分割结果映射流程如图4所示。

Figure 3. Schematic diagram of feature tree
图3. 特征树示意图

Figure 4. Parent-child feature framework
图4. 父子特征框架
2.3. 基于特征的数据结构
在这套数据结构中,特征在模型显示控制和内部数据统一中都起到举足轻重的作用。特征点与OCCT点和控制点都不同,仅代表了特征线构造时的点的输入。对于任意一组特征线,输入特征点后,首先进行绘制该特征所需要的OCCT点和控制点运算,然后依次进行OCCT线和NURBS线的绘制。
在完成草图平面上的特征线绘制后,将进行特征面的生成过程,此时OCCT数据格式和NURBS数据格式将用各自算法得到OCCT的一个闭合平面,以及NURBS格式中完成四边剖分的一个平面,并将两个平面都存储在该特征体的特征面中,并进行下一步模型变换。以拉伸为例,该模型变换只需要一个特征面和一个特征路径,因此只需要在对话框中输入拉伸特征路径(包括方向和距离),即可完成该特征体的构建,OCCT格式的体和NURBS格式体都将存储在这个拉伸特征体中,并在特征树上显示。以特征为主导的数据格式对应关系如表1所示。

Table 1. Corresponding tables for different data structures
表1. 不同数据结构对应表
3. 轴承座的体参数化模型展示
在机械设计时,轴承座零件模型通常分为底座、背板、筋板、圆孔四个特征元素,图5(a)为使用OCCT数据结构绘制的轴承座B-rep模型,图5(b)为自动生成的轴承座体参数化模型。考虑到体参数化模型的体分割要求,将圆孔按背板、筋板位置分为三段,得到如图5(c)所示的爆炸图,即六个特征体。
在不考虑自动剖分的情况下,通常以特征体拉伸1为创建轴承座零件的第一个特征体,基准面为xoy平面,特征依赖数组为(0, 0);特征体拉伸2是以yoz平面作为基准面,特征依赖序号为(1, 0);特征体放样1的一个特征面在特征体拉伸2上,其特征依赖序号为(1, 1);特征体拉伸4是以yoz平面作为基准面,特征依赖序号为(2, 0);特征体拉伸3和特征体拉伸5均以特征体拉伸4的特征面为基准面,特征依赖序号为(2, 1)。最终得到的轴承座特征依赖图如图6(a)所示。
其中,特征体拉伸1没有子特征,但由于和特征体拉伸2、放样1相邻,则在绘制模型时需要保证拼接前公共面一致,因此绘制特征体拉伸1的特征面如图6(b)所示,得到自动剖分后的平面如图6(c)所示。
特征体拉伸2有子特征放样1,首先绘制特征体拉伸2的特征面如图6(d)所示,特征体放样1的特征面如图6(e)所示,两个特征面均不需要进行四边剖分。将放样1的特征面映射到拉伸2的特征面,得到新的特征面如图6(f)所示。
特征体拉伸3的两端各有一个特征体,是由一个柱状圆环分割成了三段,因此只需要在绘制特征体拉伸4、拉伸5时,将特征体3的特征面往子级映射即可,考虑到特征体拉伸3、拉伸5都与其他特征体相邻,特征体3的特征面应该用多段圆特征来绘制,特征面如图6(g)所示。

Figure 5. Schematic diagram of bearing base modeling
图5. 轴承座建模示意图

Figure 6. Schematic diagram of bearing base feature framework
图6. 轴承座特征框架示意图
图7展示了轴承座模型的分析流程,图7(a)为对轴承座底座圆孔内表面施加位移约束,图7(b)为对轴承座轴孔内下半表面施加向下载荷,然后通过对话框输入模型材料属性后,得到图7(c)所示的等效应力场,与图7(d)的ANSYS等效应力场分布趋势相同,证明该体参数化模型的可靠性。

Figure 7. Isogeometric analysis results of bearing base
图7. 轴承座等几何分析结果
4. 结论
为提高体参数化模型建模精度与建模效率,本文提出了一种基于特征的模型转换方法,对机械零件进行特征分割,通过B-rep格式交互绘制各特征体,创建零件的特征树,然后通过父子特征关系处理模型,并自动拼接得到该零件的体参数化模型。该方法借助界面交互,显著提升体参数化模型的创建速度,能有效保留模型特征;但未能从根本上解决体参数化模型的体分割问题,无法实现特征树不同分支之间的数据传递,因此建模时需要提前考虑不同分支的特征体拼接问题。