在大规模定制的生产模式下,企业要想在竞争中处于领先地位,必须快速开发出新产品。产品的快速开发,必然要求重用那些成熟的零件设计结果,因而有必要建立零件设计可重用系统。首先利用成组技术原理建立零件信息输入及编码系统,为检索零件的几何相似性提出了二级检索矩阵及相似性系数的定义;其次以目前流行的CAD/CAE/CAM软件之一Unigraphics为开发平台,以轴类零件为研究对象,开发了面向轴类零件的可重用设计系统,并对系统实现的开发过程和关键技术进行了说明。通过对UG二次开发各模块的分析,研究在VC++6.0集成
4 相似零件检索算法
系统以用户所填的目标零件信息和零件分类索引库为依据,自动检索出相似的实例零件。其总体策略如下:
(1)系统根据用户所填的零件信息,自动从零件分类索引库中检索出当前零件所从属的实例类。
(2)目标零件与实例零件一一匹配比较,计算相似性系数S。在找到当前零件所从属的实例类后系统首先将目标零件的信息装入内存,然后依次将实例类中的各实例零件的信息装入内存,将目标零件的信息与所选实例类中各实例的零件信息逐一进行匹配和比较,自动计算S,同时将目标零件的特征和每个实例零件特征的匹配情况记录于实例零件信息形状二叉树的各个节点上。在比较匹配完成后将S大于给定相似性系数基准的实例的零件图号、相似性系数等相关信息按相似性系数的大小显示在Data Grid控件上,供用户选用。
5 零件设计可重用系统的实现
在模型创建的过程中,添加设计变量,通过设计变量表中的表达式,设置变量间的关联规则,通过对设计变量的修改来驱动生成新零件。在三维CAD环境中,建立产品实体模型。将每个特征相关的数据用变量表示,以便于变量的驱动和管理;对于相互关联的特征尺寸,在变量表的公式中表达,简化实体的尺寸要素,建立零件族的参数表。
利用VC++和UG/Open对UG软件进行二次开发,以实现零件设计可重用系统。UG/Open是一系列UG开发工具的总称,现在分别介绍如下:
(1)以UG/OpenAPI作为开发工具。这是一个允许程序访问并改变UG对象模型的程序集,它封装了近2000个UG操作的函数,可以方便地对UG的图形终端、文件管理系统和数据库进行操作,该程序使用C或C++编程语言。
(2)选用UG/Open Menu Script创建用户化菜单的功能工具。支持UG主菜单和快速弹出式菜单的设计和修改,可以改变UG菜单的布局,添加新的菜单项以执行用户应用开发程序,最后生成一个菜单脚本文件(*.men),供UG系统调用以触发应用程序。
(3)选用UG/Open UI Styler开发UG风格对话框。可以方便地添加各种控件,在生成对话框文件(*.dlg)的同时,生成一个C语言文件(*.c)及C语言头文件(*.h),并提供相关控件操作的函数框架,可以方便、高效地编程与UG系统集成进行交互操作。
(4)配置开发环境及工程路径。以VC++提供的MFC App Wizard建立工程项目,把UI Styler生成的*.c文件和*.h文件添加到工程里,同时在VC++编译连接的对象库中添加UG库文件,以保证正确编译。
VC++编程及设置部分介绍如下:
(1)基于Windows操作系统的UG软件开发可在VC++6.0环境下进行,在VC++环境中建立一个UG的二次开发工程,配置工程的各种设置,建立起UG软件和VC++的连接。再利用MFC App Wizard建立的系统架构下添加功能函数,通过编译生成动态链接库文件(*.dll),UG启动时会自动加载动态链接库文件供用户菜单调用,从而实现应用开发程序与UG平台的无缝集成。
(2)在MFC App Wizard建立的系统架构下,添加利用UG对话框生成的文件(*.h)及(*.c)。对话框提供了相关操作按钮的回调函数框架。UG外部开放程序允许用户在C/C++程序中,调用UGAPI函数及UG API提供的各种数据类型。在调用UG API函数之前应对应用程序进行一定的设置,包括UGAPI函数的库文件(*.lib)及所声明API函数和数据类型的头文件(*.h)。
(3)添加相应功能函数,与参数表中数据比较,以查询库中是否存在所需零件。程序代码为:
UF_FAM_ask_Member_column_data(*family_tag,0,&column_data);//获得行数
for(i=0;(i<column_data.value_count)&&(flag!=0);i++)//逐行比较
{
flag=0;//输入值与参数表中值相同,flag为0
UF_FAM_ask_member_row_data(*family_tag,i,&row_data);//获得参数数值
for(j=0;j<7;j++)//逐个比较,相同则返回flag=0,否则flag=l
{
Cmp[j]=strcmp(item[j].value.string,row_data.value.string,row_data.valued[j+1]);
if(Cmp[j]!=0)flag=1;
}
}
如果存在符合要求的零件,则获得该零件名以备打开或用于装配;否则,告知不存在零件,提示输入零件名,添加该零件入库。
以UF_FAM_ask_member_row_data()创建一组新的数据,将所输入参数赋予这组新值,用UF_FAM_add_member()函数添加新零件,同时用UF_PART_ask_part_name()获得该零件名,以备打开或装配用。
以UF_PART_set_display_part()函数将已经载入的零件设置为当前显示零件,即打开视图。或在装配时,选择“已载入部件”将零件添加到装配中。
6 结论
本文给出了零件实例表达的方法,相似性系数的计算公式,实例检索的策略和方法。利用相似性系数进行相似性比较,检索实例零件,将相似性进行量化,对零件的相似程度进行排序,根据零件各项信息的重要程度分配指标权重,快速准确地得到符合要求的实例零件,可应用范围广泛。
在特征参数化建模方法和理论基础上,介绍了基于UG系统的零件族,运用UG提供的二次开发工具包UG/Open和VC++的MFC App Wizard建立工程项目,进行相似零件的查询、显示、打开、修改等操作。二次开发提供了一个良好的人机界面,提高了零件的设计效率,在实际运用中效果较好。
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。