UG二次开发中C++、KF、GRIP 3种语言的对比

您所在的位置:网站首页 kf是什么地方 UG二次开发中C++、KF、GRIP 3种语言的对比

UG二次开发中C++、KF、GRIP 3种语言的对比

2024-07-09 08:53| 来源: 网络整理| 查看: 265

李晨蕊,郝 博

(1.沈阳理工大学 机械工程学院,辽宁 沈阳 110159;2.辽宁机电职业技术学院,辽宁 丹东 118009)

UG二次开发中C++、KF、GRIP 3种语言的对比

李晨蕊1,郝 博2

(1.沈阳理工大学 机械工程学院,辽宁 沈阳 110159;2.辽宁机电职业技术学院,辽宁 丹东 118009)

为提高UG二次开发效率,改善UG二次开发界面风格,以C++、KF、GRIP 3种语言为开发方式,结合UG/Open MenuScript和UG/Open UIStyler两种开发工具,对UG进行二次开发.通过实例对比,总结出了3种开发语言的优缺点.

UG二次开发;C++;KF;GRIP;开发方式

C++语言在20世纪80年代早期被开发出来,是一种基于C语言的面向对象语言[1],发展至今已成为市场上使用最广泛、通用性最强、近于完善的高级语言.C++保留了C语言原有的优点,还增加了面向对象机制.

知识融合(Knowledge Fusion,KF)是一种新的设计思想和工具,是在基于特征的参数化建模技术和知识工程技术的基础上发展起来的[2-3].KF语言凭借自身开发优点,能够直接访问电子表格、数据库等外部数据资源,具有联合其他分析和优化软件的能力,并且能够与其他UG二次开发工具(如UG/Open MenuScript、UG/Open UIStyler等)进行集成与开发.

GRIP语言是UG软件自身携带的一种早期开发语言,是UGS公司提供的一个用于UG二次开发的软件工具.利用GRIP程序可以完成UG的各种交互操作.在UG1.0到4.0版本的界面中,许多功能是通过GRIP语言开发的[4].

1 3种语言在UG二次开发中的特点比较

1.1UG二次开发中C++语言的特点

C++语言开发支持多种程序设计风格,其许多特性以库的形式存在,以保证语言简洁和开发运行高效.与C语言相比,C++语言引入了面向对象的概念,使得UG二次开发的人机交互界面更简洁.

借助UG自带的2 000多种API函数,结合高级语言C++以及编程软件Visual Studio,可以对UG进行二次开发.但需要注意的是,市场上Visual Studio和UG的版本很多,并不是所有的软件版本都能互相兼容.UG7.0默认支持VS2009;UG7.5、8.0、8.5默认支持VS2010;UG9.0、10.0默认支持VS2012.

1.2UG二次开发中KF语言的特点

KF语言是解释性、声明性和需求驱动性的语言,并且具有面向对象和层次化的特点.KF语言能够与NX交互系统同步.

在NX界面打开后缀名为dfa的文件,在KF导航器中使用系统提供的类和函数能够为其添加知识约束功能.这些知识约束功能被定义储存在三维模型中,可以通过脚本文件的修改实现参数的传递,并在模型的参数改变后进行推理计算,也可以使用KF语言编写程序文件,创建更加复杂的产品参数化设计系统.

1.3UG二次开发中GRIP语言的特点

GRIP语言是UG自带开发性语言,能够与UG紧密结合,具有完整的语法规则.其程序结构和内部函数可与其他语言相互调用.GRIP语言是面向工程师的语言,但是只有经过UG自带的NX Open grip编译,链接后生成可执行的程序性文件,才可以在UG窗口运行.

UG/Open GRIP功能强大,是UG内嵌语言,主要实现图形绘制和装配、工程图生成,并对一些外部文件实现管理功能,可以完成UG的各种交互操作[5].通过人机交互界面,它几乎能够实现用户的所有要求.

2 3种语言在UG二次开发中的应用

2.1C++语言在UG二次开发中的应用

C++语言在UG二次开发中应用离不开C++语言的基础知识.在此基础上,结合2 000多个API函数就可以开发出想要的UG界面.开发时首先要创建NX Open Wizard,在创建过程中要注意Visual Studio和UG的版本配置问题.在Visual Studio环境中创建程序,链接UG NX,进行编译和调试,生成后缀名为dll的文件(必须启动UG Gateway才能运行)[6],在UG界面NX Open中运行后缀名为dll的文件,实现UG界面的二次开发.在该过程中,通常会使用UG/Open MenuScript和UG/Open UIStyler,两种辅助开发工具,让开发更容易,并且可得到更加优美的UG界面.UG二次开发(用C++语言)总体开发流程如图1所示.

图1 UG二次开发(用C++语言)总体开发流程

2.2KF语言在UG二次开发中的应用

研究KF语言编程应熟悉KF语言的语法元素,如类(Class)、属性(Attribute)、表达式(Expression)、信息传递(Information Passing)、需求顺序(Demand Order)、需求值(Demand Value)和参数框架(Reference Frames)[7].图2所示为语法元素的声明.

图2 语法元素的声明

运用带有记事本功能的软件编写KF程序,保存为后缀名为dfa的脚本文件.打开NX创建新文件,在所有应用模块选项选择“知识融合”,并从知识融合工具条中选择“DFA管理器(DFA Manager)”,指定知识融合搜索路径,执行程序.UG二次开发(用KF语言)总体开发流程如图3所示.

图3 UG二次开发(用KF语言)总体开发流程

2.3GRIP语言在UG二次开发中的应用

一个GRIP源程序由一系列的GRIP语句组成.一般说来,一个GRIP源程序可分为5个部分,每个部分都使用一组GRIP命令.它具体由申明语句部分、初始化语句部分、交互语句部分、过程处理语句部分和结束语句部分组成(图4).

图4 GRIP源程序的组成

进行GRIP源程序编译、链接、生成时,可执行GRIP程序,但需要正确使用GRIP的高级开发环境(GRADE).其具体方法如下:首先打开高级开发环境界面,然后设置GRIP文件所在文件夹的安装目录,接着编写(或修改)源程序(可打开带有记事本功能的软件进行编写或修改);最后对编写完成的程序进行编译、链接,生成可执行的后缀名为grx的文件. UG二次开发(用GRIP语言)总体开发流程如图5所示.

图5 UG二次开发(用GRIP语言)总体开发流程

3 应用3种语言的实例创建

以一个长50 mm、宽40 mm、高30 mm的块模型为实例.它附有6个直径为10 mm的通孔.该模型实例的二维草图和基于MBD模型的三维标注如图6所示.

图6 模型实例

本文运用C++、KF、GRIP 3种开发语言,结合UG中UG/Open MenuScript和UG/Open UIStyler两种开发工具,创建了同种实例模型.其菜单和对话框的创建如图7所示.

3.1基于C++语言的UG二次开发实例创建

结合UG API函数,用C++编程软件Visual Studio编写的主要程序如下:

UF_FEATURE_SIGN sign;

UF_FEATURE_SIGN sign1;

图7 针对块模型的菜单和对话框创建

static void do_ugopen_api(float abc[],float orig1[],float orig2[])

{

int method=0; double block_orig[3]={orig1[0],orig1[1],orig1[2]};

double cyl_orig[3]={orig2[0],orig2[1],orig2[2]}; char *block_len[3];char bb[4][20];

char *cyl_height; char *cyl_diam;char cc[3][20]; double direction[3]={0,0,m};

char *number_in_x;char *distance_x;char *number_in_y;

char *distance_y;char dd[5][20]; tag_t blk_obj;tag_t cyl_obj_id;uf_list_p_t feature_list;

tag_t feature_obj_id;

......

UF_CALL(UF_MODL_create_block1(sign,block_orig,block_len,&blk_obj));

.......

UF_CALL(UF_MODL_create_cyl1(sign1,cyl_orig,cyl_height,cyl_diam,direction,&cyl_obj_id));

......

UF_CALL(UF_MODL_create_list(&feature_list));

UF_CALL(UF_MODL_put_list_item(feature_list, cyl_obj_id));

UF_CALL(UF_MODL_create_linear_iset(method,number_in_x,distance_x,number_in_y,distance_y,feature_list, &feature_obj_id));return;

}

3.2基于KF语言的UG二次开发实例创建

在实例中,需要设置KF的搜索路径来保存新建的DFA文件,并使用KF提供的集成编辑器(Integrated Class Editor,ICE)创建KF实例.利用记事本编写KF程序的主要代码如下:

#! NX/KF 4.0

DefClass: %model1.prt (ug_base_part);

(Child) new_ug_block: {

Class, ug_block;

length, 50;

Width, 40;

Height, 30;

Origin, Point(0,0,0);

X_Axis, Vector(1,0,0);

Y_Axis, Vector(0,1,0);

};

(Child) new_ug_cylinder1: {

Class, ug_cylinder;

Diameter, 10;

Height, 30;

Origin, Point(1,1,0);

Direction, Vector(0,0,1);

Operation, Subtract;

Target, {new_ug_block:};

};

.......

3.3基于GRIP语言的UG二次开发实例创建

利用记事本编写GRIP程序的主要代码如下:

$生成实体

$目的:演示实体创建过程

ENTITY/BLOCK,CYL1,CYL2,CYL3,CYL4,CYL5,CYL6,PIM1,PIM2,PIM3,PIM4,PIM5,PIM6

$生成长方体

BLOCK = SOLBLK/ORIGIN,0,0,0,SIZE,50,40,30

$生成圆柱

CYL1 = SOLBLK/ORIGIN,10,10,0,HEIGHT,30,DIAMTR,10

CYL2 = SOLBLK/ORIGIN,10,30,0,HEIGHT,30,DIAMTR,10

CYL3 = SOLBLK/ORIGIN,25,10,0,HEIGHT,30,DIAMTR,10

CYL4 = SOLBLK/ORIGIN,25,30,0,HEIGHT,30,DIAMTR,10

CYL5 = SOLBLK/ORIGIN,40,10,0,HEIGHT,30,DIAMTR,10

CYL6 = SOLBLK/ORIGIN,40,30,0,HEIGHT,30,DIAMTR,10

$生成实体(减运算)

PIM1 = SUBTRA/BLOCK,WITH,CYL1

PIM2 = SUBTRA/PIM1,WITH,CYL2

PIM3 = SUBTRA/PIM2,WITH,CYL3

PIM4 = SUBTRA/PIM3,WITH,CYL4

PIM5 = SUBTRA/PIM4,WITH,CYL5

PIM6 = SUBTRA/PIM5,WITH,CYL6

HALT

3.4综合分析

(1)通常认为,C++是用途最广的开发语言之一,且C++语言是一种最早应用的工程类语言,比较完善.通过实例创建可看出,C++语言的逻辑性很强,结构比较完整.但是,在开发过程中,由于该语言本身过度复杂,甚至有的开发人员难以理解语言的意思,受C++编译系统自身复杂性的影响,编写难度大,因此复杂C++程序的正确性难以保证,即使能够编写,编译器也可能存在许多问题.目前,各软件的外部接口不是特别完善,对C++编程软件的接口要求比较高,在配置方面还存在一些技术性问题.

(2)KF语言无需在编译、链接、源代码文件修改后更新设计,只要重载即可.KF语言的规则创建不需要考虑编程的先后顺序,只要在规则中赋予依赖关系即可.如果对象被交互地修改建模尺寸,KF语言描述会自动地反映此变化.但是,目前市场上基于KF语言开发的相关文献较少,KF语言的普及程度比较低,只限于专业人士之间的沟通.从实例中可以看出,虽然KF语言简单易懂,但是逻辑性相比C++语言来说较弱.在编译、运行方面, NX软件对KF语言的处理还不够完善,好多问题只能由开发者凭借自身技术能力去处理,而不能通过计算机辅助解决.

(3)GRIP语言通俗易懂,与一般通用语言一样,具有完整的语法规则和程序结构,并且作为UG自带的开发性语言,和UG兼容性比较好,无需利用外部接口技术.GRIP语言本身相对简单,逻辑性强.但是它只适合早期UG1.0-4.0的简单开发界面,对于现阶段各种风格界面来说,GRIP语言开发能力相比C++语言尚有欠缺.相比基于知识工程的KF语言,虽然GRIP语言发展较为完善,但有时候却不能实现开发者的设计意图.

(4)通过实例分析,KF语言和GRIP语言对于简单功能模块的开发较为合适.如果开发具有一定风格且具有一定难度系数的UG界面,选择C++语言作为开发方式更能满足开发者的需求.

4 结束语

基于一定语言的UG二次开发在目前市场上有很多方式,除了本文所比较的C++、KF、GRIP外,还有JAVA、.net、Python、SNAP等语言.本文结合模型实例对3种典型的UG开发语言进行对比,总结出了C++语言、KF语言、GRIP语言在UG二次开发中的优缺点.设计者和开发商可以根据产品的开发环境和自身条件,选择较为合适的开发方式.

[1] 董志鹏,侯艳书. Visual C++编程从基础到应用[M]. 北京: 清华大学出版社,2014:5-6.

[2] 刘建钊,花 锋.知识融合程序设计与开发[M]. 北京: 电子工业出版社,2015:1-2.

[3] Chen Z.Knowledge an acquisition assisted by CLIPS programming[J].Engineering Application of Artificial Intelligence,1999,12:379-387.

[4] 王庆林.UG/Open GRIP实用编程基础[M].北京:清华大学出版社,2002:1-2.

[5] 秦 闯,刘战强,叶洪涛,等.基于UG二次开发技术的CAD/CAE/CAM软件集成方法研究[J].机床与液压,2015,43(9):141-144.

[6] 何 丽,孙文磊,王宏伟.UG二次开发技术在WEB零件库系统开发中的应用研究[J].机床与液压,2011,39(20):9-11,105.

[7] 朱文华,杜素芬. 知识融合程序设计与应用[M]. 上海: 上海交通大学出版社,2011:10.

ComparisonofC++,KFandGRIPinSecondaryDevelopmentofUG

LI Chen-rui1, HAO Bo2

(1.School of Mechanical Engineering,Shenyang Ligong University,Shenyang 110159,China;2. Liaoning Jidian Polytechnic,Dandong 118009,China)

In order to improve the cycle speed and the interface style in the Secondary Development of UG, it is very important to choose the right development language. This paper summarizes the advantages and disadvantages of languages of C++, KF and GRIP by introducing the development methods with the languages of C++, KF and GRIP combining with the two development tools of UG / Open MenuScript and UG / Open UIStyler and respective second development of UGcompares and the case study with the practice of the development process, that is, designers and developers can choose a suitable development mode according to their own needs.

secondary development of UG;C++;KF;GRIP;development mode

2017-04-10

国家自然科学基金资助项目(61672360)

李晨蕊(1992-),女,河北张家口人,硕士研究生,研究方向为数字化、网络化设计与制造技术.

1006-3269(2017)03-0038-05

TP391.7

A

10.3969/j.issn.1006-3269.2017.03.009

猜你喜欢 二次开发实例编程 编程,是一种态度少先队活动(2021年2期)2021-03-29元征X-431实测:奔驰发动机编程汽车维修与保养(2021年8期)2021-02-16编程小能手学生天地(2020年17期)2020-08-25浅谈基于Revit平台的二次开发甘肃科技(2020年20期)2020-04-13纺织机上诞生的编程数学大王·低年级(2020年3期)2020-03-12浅谈Mastercam后处理器的二次开发模具制造(2019年3期)2019-06-06西门子Easy Screen对倒棱机床界面二次开发制造技术与机床(2017年11期)2017-12-18ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用汽车零部件(2014年5期)2014-11-11完形填空Ⅱ高中生学习·高三版(2014年3期)2014-04-29完形填空Ⅰ高中生学习·高三版(2014年3期)2014-04-29

成组技术与生产现代化2017年3期

成组技术与生产现代化的其它文章无游梁式抽油机EMB执行器的Adams仿真及性能试验小型无人机弹射系统的动力学研究新型对开式自动吊卡的结构优化设计3 kW逆变电源的主电路设计多种直线运动规律实验模拟及特性检测平台面向全生命周期的公共自行车管理系统设计和实现


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3