大型软件UG二次开发.ppt
大型软件UG二次开发,主讲:于红英,1.1 UG/OPEN API 简介及约定,UG/OPEN API 是UG与外部应用程序的接口,它是UG提供的一系列函数和过程的集合。通过C语言编程来调用这些函数或过程,能够实现:,对UG模型文件及相应模型进行操作,包括建立UG模型、查询模型对象、建立并遍历装配体、创建工程图等;,在UG主界面中创建交互式程序界面,创建并管理用户定义对象等,第一章 UG/OPEN API 概述,函数和过程在$UGII_BASE_DIR/ugopen 目录下的头文件中定义。,uf.hUG/OPEN API 的公共类型和函数定义。uf assem.h与装配有关的类型和函数定义。uf_attr.h关于PART和对象属性的类型及函数定义。uf_bound.h关于边界的类型和函数定义。uf_brep.h关于边界表示的类型和函数定义。uf_cam.h使用UF_CAM模块的相关类型和函数定义。uf_disp.h与显示相关的函数及类型定义。uf_cfi.h文件操作的函数说明。,uf_clear.h间隙分析的相关函数和定义。uf clone.h装配件与PDM系统之间的接口。uf_csys.h坐标系的操作函数与类型说明。uf_curve.h曲线和点的操作函数及相关信息说明。uf_dbc_mld.h关于铸模的函数说明。uf_defs.hUF的对象ID链表的定义。uf_dirpath.h目录及路径操作函数的说明。uf_dpud.hCAM编程的驱动设置及查询的函数和类型定义。uf_draw.h制图时的截面线、图等的创建及查询函数和类型的定义。uf_drf.h制图的符号、标注、尺寸等函数的定义。,uf_drpos.h CAM编程的相关函数及类型说明。uf_eplib_types.h支持程序库的一些类型定义。uf_error.h错误处理的函数及数据结构说明。uf_eval.h曲线及边的分析评估函数及类型说明。uf_exit.h用户出口的函数说明。uf_facet.h面片化的相关函数及数据结构说明。uf_fam.h关于零件族的操作函数及数据结构说明。uf_fltr.h关于区域和过滤器的函数说明。uf_gdt.h有关几何尺寸公差的查询函数和数据结构。uf_gexp.h有关几何表达式的函数及数据结构说明。,uf_group.h与群组有关的操作函数说明。uf_help.h实现帮助功能的相关函数及数据结构声明。uf_layer.h与层有关的函数声明。uf_layout.h与布局有关的函数声明。uf_lib.h与用于查找对象的库的接口声明。uf_mb.h查询及设置Menuscript中的对象(如按钮等)的属性等相关函数及数结构声明。uf_mech.h与运动学分析有关(运动单元和运动副定义)的函数声明。uf_mold.h与模型创建、查询有关的函数声明和数据类型定义。uf_mold_features.h与特征建模相关的函数声明和数据类型定义。,uf_mold_general.h普通建模函数及数据结构声明。uf_mold_smd.h与钣金建模等有关的函数及数据类型声明。uf_motion.h对传动机构进行干涉分析、测量、轨迹跟踪等函数声明。uf_mtx.h关于矩阵操作的函数声明。uf_ncgroup.h访问CAM UF_NCGROUPS对象的相关函数和结构声明。uf_obj.h有关Unigraphics对象及属性的访问函数定义。uf_object._types.h有关 Unigraphics对象及属性结构的定义。,uf_part.h与部件文件操作有关的函数及数据类型声明。uf_path.h有关刀轨的函数声明。uf_patt.h有关 Unigraphics的模式及着色状态的函数声明。uf_plist.h对Part List(COM表)的操作函数及结构声明。uf_plot.h与绘图(出图)有关的函数声明。uf_ps.h提供直接访问 Parasolid的函数功能。uf_rlist.h有关Route(管路)List的函数声明。uf_route.h有关(管路)Route的函数声明。uf_rule.h提供有关设计规范及违规操作数据记录等功能的函数声明。,uf_sket.h有关草图的函数及结构声明。uf_smd.hUGOPEN与钣金模块的公共接口声明。uf_so.hUGOPEN与敏捷对象(smart Object)的公共接口,通过敏捷对象能够得到其父对象的相关关信息。uf_std.h提供 Unigraphics与有关标准(如CGM)的接口函数声明。uf_styler.h有关UIStyler的操作函数声明。uf_trns.h提供对坐标、矩阵、位置及对象的转换功能(移动、选择、镜像、缩放)的函数声明。uf_udobj.h关于用户定义对象的函数及结构声明。uf_ugmgr.hUG/Manager的相应函数声明。,uf_udop.h关于用户定义操作的函数及结构声明。uf_ugfont.h关于Unigraphics的部件文件中字形表的操作函数及结构声明。uf_ui.h用户界面功能的相应函数及结构声明。uf_undo.h关于Undo操作的相应函数及结构声明。uf_vec.h向量操作的函数声明。uf_view.h视图的操作、查询等函数声明。uf_ wave.hWAVE功能的相应函数声明。uf_web.hWeb功能的相应函数声明。uf_weight.h用于重量重心管理的函数声明。uf_weld.h关于焊接的相应函数声明。uf_xs.h与电子表格相关的函数声明。,版本说明,Unigraphics 16版下连接的函数库是:libufn.lib及libinternal.lib。,Unigraphics 17、18及NX版下连接的函数库是:libufun.lib及libugopenint.lib。,2.初始化及终止,所有的 UGIOPEN API使用,必须及时进行初始化和终止,以确保获取或释放UG/OPEN API的执行许可权限。,利用函数UF_initialize()进行初始化,利用函数UF_terminate()终止执行许可权限。,3.函数应用的特殊要求,在创建几何模型、遍历模型或执行其他的一些基本操作时,必须首先创建或打开一个Unigraphics的模型文件。,对象标识类tag_t是UG/OPEN API编程时最常用的变量类型,它类似于C语言中的指针。UG/OPEN API中关于 tag_t类的子类很多。对于函数或过程中的tag_t类型,应根据具体要求使用合适的于类。,例如:当要查询一个点对象的坐标时,送入查询函数中的tag_t应是点类型几何对象的tag_t,而不是线或面等其他几何对象的tag_t。,4.对象创建,UG/OPEN API拥有大量的用于创建和修改UG对象的函数和过程。UG/OPEN API 的大部分函数不提供错误信息,在创建对象时一般返回对象标识(tag_t)。当返回的对象标识=NULL_TAG时,表示创建对象时出现了错误。,5.变量声明,UGOPEN API支持所有的 C语言数据类型。对象的标识(实体标识)应声明tag_t类型。,6.错误号,在没有特别说明时,每一个函数或过程都返回一个int类型的错误号。当它不为0时,表示出错,可以调用函数UF_get_fail_message得到相应的错误信息。,1.2 UG/OPEN API 的应用范围,用户化定制CAD环境:提供用户化CAD规范;提供用户化标准件库;定制用户化CAD界面等。,2.开发在UG软件平台上的用户专用软件,3.开发UG软件与其它CAD软件的接口,1.3 程序的运行模式及执行方式,运行模式:,(1)Internal,只能在UG界面环境下运行。具有如下特点:,1)执行代码小,连接快2)程序一旦被加载到内存中,只能通过UG/OPEN API的卸载功能才能从UG的运行环境中卸它;3)运行结果在UG界面中可见;4)入口函数是ufusr或ufsta。,2.程序的执行方式,(1)FileExecuteUser Function(2)通过定制用户菜单(3)通过用户工具图标,(1)External,只能在操作系统下运行,不在UG环境中作为UG的子进程运行。,第二章 UG/OPEN API 的约定及编程初步,函数名称及参数约定,UG/OPEN API 的数据类型,Unigraphics对象类型及操作,2.1 函数名称及参数约定,函数名称约定,标准名称约定,格式:UF_ area _ name,原有的名称约定,格式:uc xxxx 和uf xxxx,2.参数约定,返回数据类型函数名(变量列表),函数原型:,变量有:I、O或OFInput、Output或Output Free)等,例如:函数UF_PART_open()函数名称:UF_PART_open语法格式:int UF_PART_open(Char*part_name,tag_t*part,UF_PART_load_status_t*error_status),注意:error_status结构中包含错误代码和部件文件名称,使用结束后应使用函数UF_free_string_array()和UF_free()释放内存。,2.2 UG/OPEN API 的数据类型,UG/OPEN API 数据结构命名约定,UG/OPEN API 数据结构的命名约定除了下述后缀的约定下,类似于函数的命名约定:,_t数据类型 _p_t数据类型的指针 _s结构标识 _u_t联合类型_u_p_t联合类型的指针 _f_t函数指针,typedef struct UF_ASSEM_options_s int load_options;int parts_list;int update;int emphasize;int emphasize_color;int failure_actfon;int maintain_work_part;int load_latest:int load_components;int load_fully int load_substitution;UF_ASSEM_options_t,*UF_ASSEM_options_p_t;,2.tag_t 数据类型,Typedef unsigned int tag_t,tag_p_t,作用:把UG/OPEN API与对象模型联系起来。当UG的模型被加载到UG环境中后,tag_t相当于对象的唯一标识,大部分的UG/OPEN API 函数的 变量列表中都有一个tag_t指针或tag_t类。,2.3 UG对象类型及操作,部件对象,(1)在部件中查询对象 UF_OBJ_cycle_objs_in_part()(2)访问部件的属性:UF_ATTR_ask_part_attrs()(3)关闭和再打开部件 UF_PART_close()和 UF_PART_reopen()(4)获取部件的文件名 UF_PART_ask_part_name(),2.UF对象,UF_OBJ_set_color()UF_OBJ_set_line_width()UF_OBJ_set_layer(),3.表达式对象,UF_MODL_ask_exp()UF_MODL_eval_exp()UF_MODL_edit_exp()UF_update(),第三章 用户界面接口,对话框界面及相关概念,UG信息窗口,对象选择功能,文件选择对话框,信息输入及提示功能,3.1 对话框界面及相关概念,术语和概念,UG/OPEN Dialogs通过UG/OPEN API提供的函数生成的对话框,如uc1616(),UF_UI_select_single()等,UIStyler Dialogs使用UIStyler工具创建的对话框。,Custom Dialogs开发者使用Motif创建的Xwindow环境上的对话框。,Callback当交互事件发生时,UG自动执行由用户编写的C子过程。,2.调用对话框界面,(1)通过MenuScript在UG的主菜单上附加一个下拉菜单来调用对话框(2)从一个UIStyler对话框调用对话框(3)通过菜单FileExecute UG/OPEN APIUser Function调用对话框,3.取消对话框,(1)UF_UI_cancel_uf_dialog()(2)UF_UI_dismiss_dialog_area_2(),3.2 UG信息窗口,UF_UI_open_listing_window()UF_UI_is_listing_window_open()UF_UI_write_listing_window()UF_UI_save_listing_window()UF_UI_close_listing_window(),3.3 文件选择对话框,UF_UI_create_part()UF_UI_open_part(),extern int UF_UI_create_part(const UF_UI_err_p_t error_fn,char*file_name,int*units,tag_t*part,int*response);,extern int UF_UI_open_part(const UF_UI_err_p_t error_fn,char*file_name,logical*use_disp_file,tag_t*part,int*response,UF_PART_load_status_t*error_status);,3.4 信息输入及提示功能,uc1600()获取用户的字符输入。uc1607()显示键盘输入界面并获取整数输入。uc1608()显示键盘输入菜单界面并获取整型或实型输入。uc1609()显示键盘输入对话框并获取实型数。uc1601()信息提示。,第四章 UIStyler对话框使用,UIStyler的使用,UIStyler控件介绍,UIStyler常用数据类型和函数,4.1 UIStyler的使用,UIStyler启动,2.UIStyler控件种类,UG/Open UIStyler-Dialog Item Reference,基本对话框,4.2 UIStyler控件介绍,2.对话框基本属性,3.对话框选择属性,4.对话框基本回调函数,4.3 常用数据类型和函数,1.UF_STYLER_item_value_type_s,UF_STYLER_item_value_type_s int reason;const char*item_id;int subitem_index;int count;int item_attr;int indicator;UF_STYLER_value_t value;,2.UF_STYLER_ask_value,UF_STYLER_ask_value(int dialog_id,UF_STYLER_value_type_p_t value),3.UF_STYLER_set_value,UF_STYLER_set_value(int dialog_id,UF_STYLER_value_type_p_t value),第五章 MenuScript应用,菜单脚本文件及其语法,MenuScript函数,MenuScript应用实例,5.1 菜单脚本文件及其语法,系统环境设置,设置UGII_USER_DIR所指向的目录,在该目录中建立两个文件夹startup和application,菜单脚本文件放在startup目录下,该文件以“.men”为扩展名。,2.菜单脚本文件的语法,VERSION EDIT BEFORE UG_FILE CASCADE_BUTTON LABEL TEST END_OF_BEFORE MENU END_OF_MENU CASCADE_BUTTON(或BUTTON)LABEL ACTIONS(对话框,注册的C语言回调函数)SEPARATOR,5.2 MenuScript函数,static UF_MB_cb_status_t new_part(UF_MB_widget_twidget,UF_MB_data_tclient_data,UF_MB_activated_button_p_tcall_button);static UF_MB_action_t actionTable=Create_New_Part,new_part,NULL,NULL,NULL,NULL;,extern C DllExport void ufsta(char*param,int*returnCode,int rlen)int error_code=UF_initialize();int status=UF_MB_add_actions(actionTable),UF_MB_cb_status_t new_part(),第六章 API、UIStyler及MenuScript联合开发,5.3 MenuScript应用实例,