信息化 频道

基于UG二次开发的火箭弹参数化模型实现

3.2、定制用户菜单
     在UG default菜单条的help菜单之前添加标签为“火箭弹参数化建模”的下拉菜单,级联菜单是标签为“内部模式演示”的按钮。其效果图如图2所示:

图2 用户菜单

3.3 定制参数对话框
     创建Bottom类型的对话框,模型颜色采用了调色板(Color Tool)控件,除了尾翼片数为整型外,其它六个关键参数均是浮点型。效果图及对话框的默认值如图3所示:

图3 参数输入对话框

3.4 编制内部模式程序
     以ufsta ()做为入口函数,以UF_MB_add_actions ()做为菜单注册函数,即采用“菜单激发应用”的方式来响应菜单命令。按函数执行先后,给出程序中所用到的主要函数并对其实现的功能做出简要解释如下:
    UF_initialize() //初始化UG应用环境
    UF_STYLER_ask_value() //取得对话框输入的响应的变量数值
    UF_CURVE_create_spline_thru_pts() //绘制圆弧段的母线(NURBS样条曲线)
    UF_MODL_create_revolved () //母线旋转得到圆弧段实体模型
    UF_MODL_set_body_density() //设置圆弧段等效密度
    UF_MODL_create_extruded1() //以圆弧段底面为基准面拉伸得到弹体圆柱段
    UF_MODL_set_body_density() //设置圆柱段等效密度
    UF_CURVE_create_line() //创建尾翼的截面线
    UF_CURVE_create_arc_thru_3pts() //创建尾翼的截面线
    UF_MODL_create_extruded1() //界面线拉伸得到尾翼实体模型
    UF_MODL_create_fixed_dplane () //创建trim尾翼所用基准面
    UF_MODL_trim_body() //trim尾翼模型得到前缘后掠角
    UF_MODL_set_body_density() //设置尾翼等效密度
    UF_MODL_create_circular_iset() //对尾翼做环形阵列
    UF_WEIGHT_sum_props() //求取弹整体质量属性参数(总质量、质心、转动惯量等)
    UF_terminate () //结束UG应用环境


     在内部程序编译成功后,启动UG主界面。鼠标单击3.2中定制的“内部模式演示”按钮,弹出3.3中定制的参数输入对话框,按设计者要求更改所指定的参数数值后点击ok按钮即可生成火箭弹全弹模型。整个操作过程简单友好,设计者几乎可以不用了解UG软件本身就能轻松完成。下面给出两个内部程序实现的火箭弹参数化模型的例子如图4、5所示,各输入参数的设置情况参见和模型联系的输入对话框。

图4 内部程序例子2-1

图5 内部程序例子2-2

3.5 编制外部模式程序
     新建一个C/C++源文件,将内部程序拷入。将入口函数改为C/C++的标准函数main(),去掉菜单激活函数和求取对话框数值的函数。将变量的值改为从指定的数据文件中读取。功能实现函数几乎不做任何改变,重新编译得到外部模式程序。外部程序的执行情况如图6示,生成的模型可参考图4、5。其中density是整个弹体的等效密度(单位: kg/m3),mass是弹体总质量(单位: kg),mcenterx、mcentery、mcenterz分别是质心的x、y、z坐标(以工作坐标系为基准)(单位: m),minertiax为极转动惯量(单位: kg﹒m2),minertiay、minertiaz均为赤道转动惯量(单位: kg﹒m2)。

图6 外部程序执行情况

4 结论
    (1)UG/Open API功能强大,界面友好,是进行UG二次开发的有力工具。
    (2)通过二次开发,提高了构建特定对象三维模型的效率,提升了CAD软件系统的易用性。
    (3)综合运用UG/Open API、UG/Open MenuScript、UG/Open UIStyler和VC++的相关库函数,有助于减少二次开发的时间。
    (4)通过uc1601()或UF_UI_write_listing_window()输出程序的中间结果,可以快速定位出现异常的程序位置,借助UF_get_fail_message()得到的错误信息,可以提高程序的调试效率。(E-works)

0
相关文章