发布时间 : 星期三 文章基于UG二次开发的直齿、斜齿圆柱齿轮及锥齿轮的参数化建模更新完毕开始阅读d06167eb185f312b3169a45177232f60ddcce7ea
基于UG二次开发的直齿、斜齿圆柱齿轮及锥齿轮的参数化建模
图8-12 编译工程
打开“File View”选项卡,分别单击“spur_gear.files”、“Source Files”和“Header
Files” 前面的“+”,双击“spur_gear.cpp”,就能看见文件中的内容。
步骤六:将UG/Open UI Styler 模块生成的对话框文件spur_gear_template.c
和spur_gear.h分别重新命名为spur_gear_dialog.cpp和spur_gear_dialog.h,复制到工程所在的文件夹内。在VC++中选择菜单“工程”—“增加到工程”—“文件”,将上述两个文件加入工程中,结果如图8-13所示。注意应将spur_gear_dialog.cpp
中头文件的#include
“spur_gear_dialog.h”。
41
学士学位论文
图8-13 将对话框文件加入工程效果图
步骤七:在工程中编写程序。从前面的程序设计思路可知,该程序中主要
包括:入口函数程序、主程序、检测部件程序、获取表达式程序、传递对话框中数值程序。入口函数程序是将菜单中定义的按钮和程序连接起来,当点击对应的按钮时调用可执行程序,调用程序后执行主程序。在主程序中先检测部件是否是对应的部件,否时弹出提示信息,退出;是的话调用对话框,执行对话框中的程序,程序运行结束后退出。现就几个主要程序做简单介绍。 {
int resp; //设置变量 主程序,程序代码如下:
int errorCode = UF_initialize(); //程序初始化
if ( 0 == errorCode )
{
if(PRO_DESIGN_check_part()) //调用部件检查程序 {
uc1601(\当前显示模型不是直齿轮部件,不能进行参数化设计\;
42
基于UG二次开发的直齿、斜齿圆柱齿轮及锥齿轮的参数化建模
return UF_MB_CB_CONTINUE; //不是对应部件时弹出对话框
提示,并退出
}
LaunchProDesignDialog( &resp); //调用对话框 errorCode = UF_terminate(); } }
在主程序中有检测部件程序和调用对话框程序,调用对话框程序是系统自return UF_MB_CB_CONTINUE;
动生成的,只需要在上面加上函数名就可以了,而检测部件程序是需要自己编写的,主要程序代码如下:
变量声明
part_tag=UF_PART_ask_display_part();
if(part_tag==NULL_TAG)
return 1; //检测是否有部件显示,没有部件显示时返回1
UF_PART_ask_part_name(part_tag,part_fspec); //查询部件文件名 for(i=0;i<50;i++) { }
pdest=strrchr(part_fspec,ch);
len=strlen(pdest);
part_name[i]='\\0'; temp_name[i]='\\0';
strncpy(temp_name,pdest+1,len-1);
len=strlen(temp_name); //查询部件文件名长度 strncpy(part_name,temp_name,len-4); //去掉文件名中文件格式部分
strupr(part_name);
43
学士学位论文
if(strcmp(part_name,\比较读取的文件名与指定文件名
return 0;
else
return 1; //返回值
调用对话框后,单击对话框中的控件时要有相应的程序来响应它,对话框
中包括有确定、应用、取消三个控件。加上调用对话框时应读取表达式中的参数,要加一个构造函数。因此对话框程序主要包含有这四个程序,其中取消按钮的程序系统已自动生成,确定和应用这两个按钮程序所执行的功能大体是一样的,只是在执行程序后确定是退出对话框,而应用是返回到对话框。因此主要有两段程序,现简要介绍如下;
构造函数主要程序:
data.item_attr=UF_STYLER_VALUE; //指定获取控件的值
data.item_id=SPUR_GEAR_REAL_Z; //控件标识,可从对话框头文件中获得 UF_MODL_eval_exp(\根据表达式名称计算表达式的数值 UF_STYLER_set_value(dialog_id,&data);//给对话框中的相应控件赋值
应用和确定主要程序:
data.item_attr=UF_STYLER_VALUE; //指定获取控件的值
data.item_id=SPUR_GEAR_REAL_Z; //控件标识,可从对话框头文件中获得 UF_STYLER_ask_value(dialog_id,&data);//查询对话框控件中的值 PRO_DESIGN_edit_exp(\;//修改表达式中的值 UF_MODL_update(); //更新模型
程序中引用了PRO_DESIGN_edit_exp子程序,该程序主要代码如下: 变量声明
strcpy(exp,dim_name);//获取表达式参数 strcat(exp,\;
sprintf(temp,\;//获取控件中数值 strcat(exp,temp);
err=UF_MODL_edit_exp(exp); //修改表达式
44