基于CAA的多截面曲面优化算法研究∗

2020-07-13 12:48王秋娇谢志祥
计算机与数字工程 2020年5期
关键词:流程图插件曲面

王秋娇 谢志祥

(1.西南交通大学希望学院基础部 成都 610400)(2.航空工业航宇救生装备有限公司 襄阳 441000)

1 引言

CATIA是法国达索公司研发的一款高端CAD设计软件,在汽车、航空、船舶、水利水电等领域有非常广泛的应用[1~4],是全球应用最广泛的软件之一。作为一款通用性的软件,CATIA原生命令选项较多,设计灵活,能满足不同领域的不同应用场景。但是,当在某些场景下,需要快速设计的时候,繁多的选项反而限制了设计速度。为此,CATIA提供了模块化的图形接口工具CAA(Component Ap⁃plication Architecture),其包含了众多的基于C++程序语言的API,供客户定制化使用。文献[5~10]等分别在不同的领域研究应用了CATIA二次开发,以提高设计效率。文献[11~13]研究应用了CATIA V6平台下的API。

2 多截面曲面及其API

2.1 多截面曲面

多截面(Lofting)曲面也称放样曲面,是指根据多个不同的截面轮廓以及引导线做出的适应性的曲面,相邻截面间平滑过渡,在汽车、飞机、工艺品等造型设计中有很广泛的应用。每个截面(Sec⁃tion)控制最终模型的横截面,闭合点(Closing Point)控制纵轮廓线,脊线(Spine)对整体形状进行引导优化。如图1(a)所示,当选择矩形截面1、圆形截面2以及正六边形截面3来创建多截面时,CATIA自动在每个截面轮廓上预生成闭合点,这些闭合点一般为曲线的极值点。

由图可见,使用CATIA现有的算法,每个截面默认生成的闭合点并不处在截面的相同方位,截面1和截面2的闭合点处在偏右侧方位,而截面3的闭合点处在偏左的方位。若执行确定命令,则生成失败,CATIA生成的预览图形如图1(b)所示。图1(c)为手动调整了截面3的闭合点位置后的预览图,由图可知,若不设置脊线,CATIA会生成一条默认的脊线来引导整体走向。

2.2 现有API算法的缺陷

文献[14~17]研究了与曲面相关的API,并依据各自所处的场景特点开发出快速建模工具,但尚未有学者在多截面曲面的API使用和优化方面公开研究成果。

CATIA多截面曲面对应的API为

可以对多截面曲面模型进行复杂的处理,如设置截面顺序、设置或替换闭合点、设置引导线等。

虽然CATIA API提供了对截面设置闭合点的方法,并且可以通过相关接口很方便地设置点在曲线上的位置,但很难保证不同截面闭合点的对应位置关系。比如,对于图1所示的场景,为了与闭合点1和闭合点2的位置对应,以保证造型的平滑,一般要求闭合点3在图1(c)所示的位置附近,而不在图1(a)、1(b)所示的位置或其他位置,但现有API无法保证这一点。

为解决该问题,本文借助CATIA现有API设计了一种对多截面曲面进行平滑的算法,并以插件的形式验证了该算法的可行性和高效性。事实上,该算法既适用于多截面的曲面特征,也适用于实体特征,这里以曲面为例。

3 算法设计

3.1 算法约定

为更准确地叙述核心算法,在使用该算法之前,本文给出以下约定:

1)截面已经通过API或手动创建出来,并且是闭合曲线;

图1 多截面曲面的创建过程

2)多截面以一条非闭合曲线作为脊线,该曲线通过所有截面曲线的内部,并且不与任何截面所在的平面平行;

3)算法所述API均基于CATIA V6平台。

3.2 算法描述

本文算法核心为任意取一个输入截面,在其曲线上任意位置作一个点,作为该截面的闭合点。然后从该闭合点出发,以投影的方式,创建该点在其他输入截面上对应位置的投影点。以下为具体步骤,为便于阐述算法步骤,具体步骤中对某些一般量作了特殊化处理,如以第一个截面的极值点作为投影原始点等。

首先,通过CATIA相关API获取模型结构树中已经定义好的截面曲线,通过函数:

创建一个多截面特征对象,可以通过函数:

来设置脊线。

然后,使用函数

在截面1(本文按顺序对第n个截面称为“截面n”,n=1,2,3,…)上创建极值点A,作为截面1的闭合点。此时,如果直接创建点A在其他截面上的投影点,可能无法获取理想的投影点,如图2所示,点A在截面Sb中的理想投影点为点B0,但由于点B1距离点A更近,所以,若直接创建点A在截面Sb中的投影点,则投影的结果为点B1。

为此,对于任意相邻两个截面Sa与Sb,在其之间的脊线上等距创建n个过渡点,即将截面Sa与截面Sb之间的曲线等分为n+1份,过每个点分别创建脊线的垂直平面,在每个垂直平面上创建大小合适的过渡圆C1,C2,C3,…Cn。使用函数:

创建截面Sa的极值点A在圆C1上的投影点P1,创建P1在圆C2上的投影点P2,以此类推,创建点Pn-1在圆Cn上的投影点Pn,然后创建点Pn在截面b上的投影点B,作为截面b的闭合点。

如图2所示,依据上述步骤,可根据点A依次创建投影点P1,P2,P3以及投影点B。当截面均为规则曲线时,点B与理想投影点B0重合;否则与点B0接近,过渡点的数量越多,最终取得的投影点与理想闭合点B1越接近。但随着过渡点数量的增多,程序所用的时间也越长,因此,过渡点的数量需要在精度和效率上作出一定的考量。

图2 创建投影闭合点过程

最后,使用函数:

对步骤1中创建的多截面特征设置闭合点为点A,B,C,…。

3.3 算法流程图

抽象的算法流程图如图3所示,其中图3(a)为总流程图,图3(b)为创建截面投影点的流程图。

图3 算法流程

4 实验与分析

以CATIA V6插件的形式实现了该算法,交互界面如图4所示。

对于图1(a)所示的场景,使用CATIA原生API无法一次性创建成功,需要手动修改闭合点参数或创建新的闭合点。并且通过观测并多次尝试修改参数来确定每个闭合点的位置,不仅操作繁琐,影响设计效率,而且所设置的闭合点的位置参数随机性大,设计质量也很难达到最佳。

图4 插件交互界面

如图5所示,使用本文所述的优化算法,当过渡圆的数量为1时,依然生成失败,闭合点的位置参数没有被正确地传递。当过渡圆的数量为4时,闭合点位置的方位通过过渡圆被传递到截面3,使得曲面创建成功,但具体的位置参数却没有被精确地传递,所以创建的结果依然有较大的扭曲变形。当过渡圆的数量为9时,闭合点位置的方位和具体参数均被较好地传递到截面3,创建结果较为理想。

图5 不同过渡圆数量n的创建结果

5 结语

分析了CATIA多截面曲面算法在自动生成闭合点方面的算法缺陷问题,在现有API的基础上,提出一种通过过渡截面传递闭合点参数的算法,以达到光顺最终模型的效果。以CATIA V6插件的形式实现了该算法,设计师可以控制过渡闭合点的迭代次数,在效率与精度之间灵活处理。经实验验证,该算法可快速准确地根据输入元素创建比较光顺的曲面模型,既可以以插件形式单独使用,也可以作为系统性二次开发设计中的一部分,可大大提高设计和开发效率。

猜你喜欢
流程图插件曲面
云的识别指南
基于CTK插件框架的太赫兹人体安检系统软件设计
参数方程曲面积分的计算
参数方程曲面积分的计算
基于OSGi的军用指挥软件插件机制研究
一种程序源代码的标准化流程图转化方法∗
第二型曲面积分的中值定理
关于第二类曲面积分的几个阐述
基于jQUerY的自定义插件开发
美国社交网站的周末大战