APP下载

基于UG二次开发的A级曲面拟合与边界裁剪方法

2012-07-23尹永福范萍萍邢鲁超徐家川

关键词:交线逆向曲面

尹永福,范萍萍,邢鲁超,徐家川

(山东理工大学交通与车辆工程学院,山东淄博255091)

逆向工程是指用一定的测量手段对汽车模型或实物进行测绘,根据测绘数据利用三维几何建模方法重构空间模型的过程[1].在汽车车身设计中,最主要的逆向技术就是车身A级曲面的重构.矩形域参数曲面的拟合方法一直是曲面重构方面研究的重点.目前矩形域参数曲面的重构主要有两种方法:一种是先将测量点拟合成曲线,再通过曲面造型的方式将曲线构建成曲面[2-5],该方法必须首先保证拟合曲线的精度,但即使拟合曲线满足精度要求,也不能保证由拟合曲线生成的曲面在规定的误差要求之内;另一种是由测量数据直接拟合曲面[2],该方法省去了拟合曲线的步骤,提高了拟合的效率,而且已经在软件当中有所应用,如UG的pointcloud,Pro/E的scantools,CATIA的fit to geometry功能等,但是采用该方法拟合的曲面不能很好地满足边界条件,需要对曲面边界进行裁剪操作,以便完成曲面模型的构建.因此,本文利用UG/Open API提供的曲面拟合与裁剪的函数,通过VC++编程实现车身A级曲面的拟合与裁剪,并将其集成到UG软件中,以提高车身A级曲面重构的自动化程度.

1 车身A级曲面的重构

1.1 A级曲面的定义及表示方法

A级曲面是指车身外表面中的高可见区域曲面,包括发动机罩、前后翼子板、前后保险杠、车门、A柱、B柱、C柱、后背门、顶盖、侧围以及内饰件中的高可见区域等[6].对于车身A级曲面造型特征要求,参照文献[7-9] 的定义可归纳如下:

(1)曲面片满足G2连续,单个曲面的补片数(patch数)在u,v两个参数方向上都是1(即Bézier曲面).

(2)曲率变化分布均匀,控制顶点分布规则,各行控制顶点间角度变化均匀.

(3)不存在奇异多余的拐点.

(4)应变能很小.

另外,文献[9] 对利用B样条和Bézier曲面表示A级曲面的优劣进行了比较,从而得出采用Bézier曲面表示A级曲面更有优势,并给出了车身A级曲面采用Bézier方法表示时曲面次数的选取规则:基本曲面采用的Bézier曲面次数为2~5次,尽量选用低次的;过渡曲面(拼接方向)采用的次数至少为5次,需要挠率连续时可以采用7次.综上所述,在对车身A级曲面进行逆向设计时需采用Bézier曲面的表示方法.

1.2 Bézier曲面的反求

当应用Bézier曲面进行逆向曲面造型时,首先要根据给定的型值点反求出Bézier曲面的控制顶点,然后再通过求出的控制顶点绘制Bézier曲面.

对于给定呈拓扑矩形阵列的数据点阵pij,i=0,1,…m;j=0,1,…,n,把每排数据点的相邻两点用直线段连接,就组成一个在拓扑意义上的矩形网格.曲面逆向设计要求求解一个曲面插值于所给定的(m+1)×(n+1)个矩形网格顶点,即求解一个m×n次Bézier曲面片[8],即

其中:Bin(t)=(1-t)n-i(0≤i≤n)为伯恩斯坦基函数;bij(0≤i≤m,0≤j≤n)为所求Bézier曲面的控制顶点.

UG/Open API提供了通过点云拟合曲面的函数UF_MODL_create_surf_from_cloud,其参数见表1.若令u_patches=1,v_patcher=1,则拟合的曲面即为Bézier曲面.

1.3 拟合曲面的裁剪

在车身A级曲面的逆向设计过程中,曲面的裁剪主要包括根据边界线对曲面进行裁剪及根据面与面的交线对曲面裁剪两类.对于复杂的车身曲面来说,不可能由一张曲面表示,所以根据面与面之间的交线对曲面进行裁剪就成为曲面重构过程中的主要问题.现有的软件已经可以实现根据给定的边界线对曲面进行裁剪的功能,但是对于相交曲面的裁剪一般是先提取出两个面的交线再进行裁剪,因此需要反复调用抽取交线的命令,从而大大降低了曲面重构的自动化程度.因此,我们将抽取交线的函数集成到曲面建模插件中,方便曲面的裁剪.

表1 曲面拟合函数参数表

抽取相交曲面之间交线的二次开发函数为UF_MODL_intersect_objects,函数的参数见表2.

表2 曲面求交函数参数表

对于提取出交线的曲面进行裁剪,只需调用裁剪曲面函数“UF_MODL_trim_sheet”就可以很方便地对曲面进行裁剪,其参数见表3.

表3 曲面裁剪函数参数表

2 程序的总体设计

2.1 程序的流程设计

程序的总体设计主要包括点云数据的选取、曲面的拟合、曲面求交以及曲面裁剪四部分.程序流程如图1所示.

图1 程序流程图

2.2 程序的界面设计

程序的界面设计包括曲面阶次的定义编辑框及点云选取、曲面拟合、曲面求交与裁剪四个按钮.图2为程序的操作界面图.

图2 程序的操作界面

图2中的“阶次定义”用来指定所生成曲面在u,v方向的阶次;“选择点云”按钮用来选取点云数据;“生成曲面”按钮用来生成Bézier曲面;“曲面求交”按钮用来对创建的多个Bézier曲面求交线,如果曲面有单独的边界,则操作过程中就不需要此按钮;“裁剪曲面”按钮用来根据求出的交线或单独的曲面边界裁剪曲面.因此,程序能够通过点云直接创建Bézier曲面,并能按照给定的边界快速裁剪曲面,从而可以提高曲面重构的自动化程度.

3 程序的具体实现

按照程序的总体设计要求,对程序的具体实现进行必要的说明。由于篇幅的关系,这里主要给出曲面拟合与裁剪的关键程序,并对程序中关键参数的选取进行简单介绍.

3.1 曲面的拟合

拟合曲面的主要程序如下:

其中,参数bnd_corners赋值为NULL,表示使生成的曲面在指定的X-Y平面上的投影四边形为点云数据的最小包围盒.如果指定了边界的4个角点,则生成的曲面严格地经过4个边界角点,但是并不能保证整个曲面边界很好地贴近点云边界,而且程序在执行过程中的稳定性不好,有时无法生成曲面或生成的曲面容易出现扭曲、跳跃.所以,此参数赋值为NULL,可以优先保证曲面有良好的光顺性,至于曲面边界条件的满足,则可以通过曲面的裁剪函数实现.

3.2 曲面的裁剪

由于通过点云拟合的曲面不能很好地满足点云边界条件,所以需要对点云边界进行裁剪使其符合点云边界特征的要求.对于不与其它曲面相交的边界,需要通过Bézier曲线拟合点云的边界线,并将其作为裁剪工具线;对于与其它曲面相交的边界需要先提取两个曲面的交线,以此作为裁剪曲面的工具线.曲面裁剪时的输入参数主要包括要裁剪的曲面、裁剪工具线及其数目和投影方向、定义曲面上要保留的区域等.因此,需要调用单选对话框函数(UF_UI_select_with_single_dialog)选择要裁剪的曲面并获取鼠标单击的位置坐标,同时调用类选择器对话框函数(UF_UI_select_with_class_dialog)选取裁剪工具线,由于裁剪曲线是各自独立的,为了裁剪方便,我们需将各条边界曲线连接为一个闭合的样条曲线,这里需要用到创建连接曲线的函数(UF_CURVE_create_joined_curve),最后,调用裁剪函数(UF_MODL_trim_sheet)裁剪曲面.

裁剪曲面的主要程序如下:

void creatb::OnButton4()

{… …

//获取鼠标的位置坐标,指定曲面保留部分

double cursor[3] ;

//选择需要裁剪的目标曲面

UF_UI_select_with_single_dialog(cue,title,UF_UI_SEL_SCOPE_NO_CHANGE,init_proc1,NULL,&res-ponse,&object,cursor,&view);

… …

//选择裁剪工具线

UF_UI_select_with_class_dialog(cue1,title1,UF_UI_SEL_SCOPE_NO_CHANGE,init_proc2,NULL,&response1,&count1,&object1);

//创建连接的曲线,这是裁剪程序稳定与否的关键

4 实例验证

通过VC++编译的DLL文件可在UG中作为一个插件运行.本节通过对一个汽车模型的顶盖与前后车窗数据进行拟合来检验程序的可行性.

4.1 曲面的拟合与裁剪

打开UG新建一个部件,导入点云数据,点击新增的菜单栏上的“曲面模块—拟合曲面”按钮,弹出如图2所示的程序操作界面,其运行情况如图3所示;然后指定所要生成的曲面在u,v方向的阶次,单击“选择点云”按钮,选取各个点云数据,最后单击“生成曲面”按钮创建拟合曲面.分别创建完3个曲面之后,选择“插入—曲线—样条”命令拟合各曲面的4条边界线(单段为Bézier曲线),单击“裁剪曲面”按钮,按照要求依次选择生成的曲面及创建的4条边界线,然后单击鼠标中键确定,从而得到汽车模型的各个曲面,进而利用“编辑—变换”命令将曲面对称后可得到顶盖的完整模型,如图4所示.

图3 插件在UG中的运行情况

图4 汽车模型的顶盖与前后车窗

4.2 曲面的光顺性分析

车身A级曲面的评价方法包括控制顶点、斑马线、曲率梳等,对于车身整体的光顺性一般采用斑马线来评价.本节利用UG的“斑马线”命令对曲面的光顺性进行检查,曲面的斑马线图如图5所示.从图5中可以看出,斑马线粗细均匀,间隔距离变化一致,没有拐点,满足文献[1] 中给出的A级曲面的要求.

图5 曲面的斑马线图

5 结束语

通过UG/Open API二次开发平台实现了点云数据的快速曲面拟合,并集成了曲面的修剪功能,便于曲面的边界裁剪及与后续拟合曲面拼接后的裁剪.同时,该曲面模块还可以继续完善,添加曲面的拼接、曲面的光顺等其他功能.

[1] 徐家川,雷雨成,洪英武,等.逆向工程中车身A级曲面的评价方法[J] .汽车技术,2007(4):4-8.

[2] 张顺琦,秦观生,邓瑞君,等.基于UG二次开发的点云数据曲面建模[J] .中国制造业信息化:学术版,2010,39(5):33-37.

[3] 晁永生,刘海江,孙文磊.以UG为平台的逆向工程数据处理技术[J] .现代制造工程,2010(1):30-32.

[4] 王海南,胡迪,李蔓华.UG逆向模块开发的应用研究[J] .新技术新工艺,2007(8):25-26.

[5] 何耀华,荣辉.UG在车身造型设计中曲面及实体构建的应用研究[J] .武汉大学学报:工学版,2006,39(6):71-74.

[6] 徐家川,雷雨成,洪英武,等.汽车车身A级曲面光顺方法[J] .汽车技术,2008(2):17-20.

[7] 徐家川,李迪,李旭.汽车车身A级曲面的表示与次数选择[J] .汽车技术,2010(9):58-61.

[8] 施法中.计算机辅助几何设计与非均匀有理B样条[M] .北京:北京航空航天大学出版社,1994.

[9] 朱心雄.自由曲线曲面造型技术[M] .北京:科学出版社,2000.

猜你喜欢

交线逆向曲面
逆向而行
球面与简单多面体表面交线问题探究
平面体截交线边数和顶点数的计算模型研究
相交移动超曲面的亚纯映射的唯一性
圆环上的覆盖曲面不等式及其应用
基于曲面展开的自由曲面网格划分
柱锥面交线研究
确定有限多个曲面实交集的拓扑
逆向工程技术及应用
促进数学思维训练的好题