1 前言 目前CAD技术占主导地位的是参数化建模技术和变量化建模技术。变量化技术既保持了参数化技术的原有优点,同时又克服了它的许多不足之处。采用参数化技术和变量化技术的代表性软件分别是Pro/E和UG。UG软件起源于美国麦道飞机公司,1991年并入EDS公司,2000年左右成功收购I-Deas软件,并综合了上述两款优秀的CAD软件的优势之后推出全新UGII软件,UGII在实体模型构造上采用复合建模技术,能够无缝地集成CSG建模、基于约束的特征建模和基于曲面拼合的建模等多种建模方法到同一个建模框架内。 特征造型是参数化造型理论的深化与拓展。特征不仅包含参数信息,还包含各种物理信息及加工信息。特征是设计者对设计对象的功能、形状、结构、制造、装配、检验、管理与使用信息及其关系等具有确切工程含义的高层次抽象描述[1]。特征包含丰富的工程语义,它是在更高层次上对几何形体的集成描述。特征建模是指通过特征及其集合来定义、描述零件模型的过程[2]。特征模型用逻辑上相互关联、互相影响的语义网络对特征事例及其关系进行描述和表达,它与底层的几何元素点、边、面来表示几何实体的方法的区别是:特征模型采用高层次的具有功能意义的实体,如孔、槽等,其操作对象不是原始的几何元素,而是产品的功能要素、技术信息和管理信息。 相比较CAE、VR系统而言,CAD系统具有最强的几何建模能力,目前获取CAE、VR系统下的产品模型的主要手段是把在三维建模CAD软件(如UG、Pro/E、Catia等)中建立的CAD模型进行相应的模型转换[3]。出于计算速度和显示速度等多方面的考虑,CAE系统需要对进行计算的模型进行简化而VR系统则需要建立复杂样机模型的LOD(Level-of-Detail)模型,目前采用的模型简化的方法大都采用手工进行的方式,效率低下,LOD模型的获取则主要是通过多边形面片模型简化算法来获取,然而由于模型小面片化以后就失去了与原有参数曲面之间的拓扑关系,同时多边形面片简化算法实现方式各不相同,都有各自的特点及适用范围,简化的准确性在很大程度上依赖于初始多边形网格的几何结构和拓扑结构,以及最终想要得到的结果,因此具有较大的先天缺陷和局限性。 本文提出的基于特征抑制的CAD模型自动简化技术把模型简化工作提前到CAD建模阶段,用于在CAD领域内批量自动完成CAD模型的简化工作,从而减少模型中细小参数曲面的数量。CAD模型自动简化后可再通过专用或中性文件格式转换输出得到需要的模型格式。 2 算法思想及实现 UGII采用了特征建模的模型构建方法,在模型建模树中保存了产品建模过程中的每一步特征生成步骤,图1是某个产品在UG NX中的建模树,这为基于特征抑止的CAD模型简化方法提供了可能。该方法的核心思想是:首先定义模型简化规则并获取产品建模过程和建模数据,通过规则匹配、误差控制等操作提取出模型中可简化建模特征,通过模型的边界表示结构判断建模特征可否抑制,最后抑制所有可简化特征并更新模型。 具体步骤包括:通过CAD二次开发技术(本文采用UG OPEN API)获取UG CAD模型的建模过程及相关参数;构建UG CAD模型简化规则并加以实现而形成简化规则函数库;通过规则匹配和简化误差计算来提取模型中所有可简化特征;通过模型的边界表示结构判断建模特征是否可以被抑制,如果可以则执行相应简化函数,最后更新模型并完成模型简化。
图1 UG产品模型建模树
2.1 UG的建模形状特征 UGII软件采用中采用基于特征的层次建模方式,从而提供了产品定义的高层描述,这样用户在产品设计的时候就可以在更高的抽象层次上进行,设计人员可以直接对产品的形状特征(如孔、螺纹等)进行操作,而可以不采用底层的基于点、线、面、体、布尔运算等复杂操作来完成产品的设计开发过程。UGII的建模形状特征(不考虑自由曲面建模)如图2所示。
图2 UGII的建模特征
2.2 简化误差控制 CAD模型的简化应该根据CAD模型建模尺寸和简化误差控制范围来确定。基于特征抑止的CAD模型简化方法不是对某类建模特征不加控制的一律删除,而是根据具体情况计算每类特征的控制参数阀值,从而抑止参数小于该阀值的对应特征,而保留那些参数大于该阀值的相应特征。
图3 倒圆角特征删除后的表面距离偏差
本文采用表面距离误差作为简化误差控制的全局参数,所谓表面距离误差,就是模型简化以后简化区域形成的新参数曲面到简化前对应的参数曲面之间的最大距离。例如对于两个垂直平面的交线进行倒圆角特征如图3所示,倒角半径为R,把该倒圆角特征删除以后的表面距离误差 。对于任意表面距离容差x(x>0)当被倒角的两条边的夹角为任意θ时,半径值满足式2-1的倒圆角特征可以被删除。
对于每一类建模特征,都有多个控制参数用于控制该类特征,例如,对于倒角特征来说,有图4所示的多种建模方法和多个控制参数[5]。简化误差控制参数阀值对每类可简化特征的各种具体的建模方法计算相应的控制参数阀值。
图4 倒角特征的三种建模方法及其控制参数
2.3 简化规则构造及实现 通过对机械类产品UG模型的理解和分析并结合UGII中建模特征,总结出以下模型简化规则,可以看到,这些可简化特征基本都属于UG主建模特征中的细节特征。 抑制倒角(对应于Chamfer建模特征)Ø
抑制倒圆角(对应于Blend建模特征)Ø
抑制螺纹(对应于Thread建模特征)Ø
抑制退刀槽(对应于Groove建模特征)Ø
抑制小孔(对应于Hole建模特征)Ø
抑制凸台(对应于Pad、Boss建模特征)Ø
抑制凹槽(对应于Pocket、Slot建模特征)Ø 简化规则的实现采用函数对应的方式,一条简化规则对应于一个简化函数。这样的构造方法有利于简化规则库的扩展和更改,一旦重新加入另一条简化规则,就可以很容易的对现有模块进行扩充而加以实现。 简化函数采用UG OPEN API函数以及C语言构造,简化函数的实现中的最重要的问题是UG模型中对象的提取与匹配,UG模型中包含的对象包括几何实体对象和非实体对象。几何实体对象包括实体、面、线、点等。非几何对象包含坐标系对象、对象尺寸、颜色、线型、属性对象等等。每个UG对象都可以通过唯一的对象标识(tag)来引用。如下的代码段用于获取一个UG CAD文件中所有的建模特征标识以及特征名称: tag_t part1;//打开零件模型的标识
UF_PART_load_status_t error_status;
int type=UF_feature_type;//需要遍历的对象类型
tag_t feature=NULL_TAG;//定义特征标识
tag_t * fea_tags=0;//定义特征标识指针
int I_count=0,feature_count;//用于获取模型中的特征数量
UF_PART_open(partname,&part1,&error_status);//打开模型文件
UF_OBJ_cycle_objs_in_part(part1,type,&feature);
while(feature!=NULL_TAG)
{ I _count++;
UF_OBJ_cycle_objs_in_part(part1,type,&feature); }
feature_count=I_count;//得到模型中的所有建模特征的数量
fea_tags =new tag_t[feature_count]; //为指针分配空间
char* fea_names[500];//定义指针,假定文件中特征数量不大于500个
{for(int i=0;i< feature_count;i++)
fea_names=new char[133]; //为指针分配空间 }
{ feature=NULL_TAG;
for (int i=0;i< feature_count;i++)
{
UF_OBJ_cycle_objs_in_part(part1,type,&feature); //获取文件中每一个特征的标识
fea_tags=feature; //把特征标识存入数组
UF_MODL_ask_feat_name(feature,&feature_name);//获取文件中每一个特征的名称
strcpy(fea_names,feature_name);//把特征名称存入数组
}
} 图5的程序框图用于删除UG CAD模型中的倒角半径小于误差控制阀值的所有倒圆角特征。
图5 抑制倒圆角特征算法程序框图
2.4 特征间的父子关系 UG模型中的几何对象是有序的,它们一一对应于涉及零件形体改变的每一步操作,系统根据对象间的依赖关系给出对象间的父子关系,所有特征节点都是依赖于其父特征节点作为其定位或其它操作的依据,一定删除某个父节点特征,那么该特征所属的所有子节点特征就会失去参考依据,从而引起模型更新的错误或该节点所有子特征信息的丢失,图6是一个倒圆角特征在某个模型中的父子依赖关系示例,该特征依赖于一个立方体特征,一旦删除该立方体特征,该倒圆角特征就会丢失。 在进行特征抑止的时候应充分考虑特征间的父子关系,如果某个可被抑止的特征是作为其它不可抑止特征的父特征存在的时候,那么该特征应该从可抑止特征列表中移除,如下函数用于获取某个建模特征的父子依存关系: extern int UF_MODL_ask_feat_relatives (
tag_t feature_tag,
int * num_parents,
tag_t ** parent_array,
int * num_children,
tag_t ** children_array ); 3 结论 在实际应用中,经常需要把CAD模型转换输出作为VR模型的输入来源,我们采用VC6和UG OPEN API开发了一个CAD模型简化模块,该模块采用MFC对话框进行界面设计,图7是其运行主界面,该模块在UG内部环境下(Internal)运行,运行时输入UG CAD文件所在文件夹及其它设置,系统自动对该文件夹下所有UG CAD文件进行模型简化,从而大大提高工作效率。 图8中a)是对每条边倒圆角半径为2的10*10*10mm3的立方体直接进行三角剖分的效果,共有108个三角形组成。b)是该立方体进行模型简化以后(倒圆角特征被抑制了)的三角剖分效果,仅需12个三角形就完成了描述。对上述两图的三角剖分的表面距离容差、曲线距离容差均为1mm。图9是对一个盖子模型的处理结果比较,表面距离容差为2mm。 CAD模型的简化可以大大减少模型中的细节特征,减少模型中参数曲面和公共边界曲线的数量,由于这些细小特征所在的区域通常是模型离散和三角剖分以后三角形密度比较集中的区域,因此,本文提出的方法可以大大减少最终模型的三角形面片数量。 本方法实用性强、操作方便,可以大大减少模型简化的工作量,并可以把简化误差严格控制在用户的指定范围内,目前已经在多个项目中取得了较好的使用效果,相信本技术会得到越来越广泛的应用。
|