3 编程基础
3.1 UG/Open API函数
3.1.1函数名称的约定
UG/Open API 共有两类名称约定。一个是标准的UG/Open API的函数名称约定;另一个是以前版本原有的名称约定。
1、标准名称约定
格式:UF_<area>_<name>
说明:
UF_user funciton的简写,表示该函数为UG/Open API函数;
<area>,应用或模块的名称缩写。例如modldisp分别是Modeling模块和Display功能的名称缩写;
<name>,表示其实现功能的语言描述,一般由下划线分开的动词和名词(或词组)组成。常用的动词有:ask(查询)、create(创建)、edit(编辑)、set(设置)、delete(删除)等。
例如:
UF_MODL_create_block1()为创建立方体的函数;
UF_DISP_set_highlight()是高亮显示对象的函数;
2)非标准名称约定
格式:uc<xxxx> uf<xxxx>
说明:代表UG/Open API C程序,<xxxx>通常是四位数或三位数接一个字母。
例如:uc1601是一个提示信息函数。
3.1.2 函数参数的约定
UG/Open API提供的函数遵守ANSI/ISO C的标准,并以下列格式在头文件中提供函数原型:
<返回数据类型><函数名>(变量列表)
返回数据类型通常是C数据类型或UG/Open API自定义数据类型。参数的输入输出方式有3种:IInput)、OOutput)或OFOutput Free),说明见表3-1
3-1 参数输入方式说明
 
I
表示参数为输入方式,参数在使用前必须赋值
O
表示参数为输出方式,使用前无须赋值
OF
表示参数为输出方式,且使用后需要释放内存。UG/Open API提供的常用释放内存函数有UF_free()UF_free_string()UF_STYLER_free_value()等,至于选择哪种释放函数需视具体情况而定。
例如:函数UF_PART_open()
名称:UF_PART_open
使用环境: internal & external
语法格式:
int UF_PART_open(
char *part_name,
tag_t *part,
UF_PART_load_status_t *error_status
);
描述:加载一个UG部件文件到UG的界面环境中,并把它设为工作和当前显示部件,该函数的描述见表3-2
3-2 函数UF_PART_open()参数描述
参数
输入\输出
类型
描述
part_name
输入
char *
要打开的部件文件名
part
输出
tag_t *
打开部件的标识,当打开部件文件失败时为NULL_TAG
error_status
 
输出
UF_PART_load_status_t *
当加载部件失败时该结构中将包含错误代码和部件文件名称,使用结束后应使用函数UF_free_string_arry()UF_free()释放内存
return
输出
int
返回代号:
0时表示正常;
0时表示错误代号
3.2 UG/Open API的数据类型
除了C语言标准的数据类型外,UG/Open API还提供了一些自定义的数据类型,如tag_t类型、结构类型(structure type)、枚举类型(enum type)、联合类型(union type)与指针类型(pointer type)等,它们统一用后缀“_t表示,且这些数据类型的指针用反缀“_p_t”命名表示。数据类型约定如表3-3所示:
3-3 数据类型约定
后缀
 
_t
数据类型(data type)
_p_t
数据类型的指针(pointer to data type)
_s
结构标识(structure tag)
_u_t
联合类型(union type)
_u_p_t
联合类型的指针(pointer to a union type)
_f_t
函数指针(pointer to a function)
3.2.1 tag_t类型
UG/Open API 使用最多的数据类型是tag_t ,在UG/Open APIuf_defs.h中定义如下:
字符串函数库typedef unsigned int  tag_t ,*tag_p_t;
UG环境中,tag_t UG对象的句柄,即UG对象模型的唯一标识。它是一种不重复的无符号整型数值,主要用于标识应用程序中的对象,如部件、草图、曲线、属性和表达式等。UG应用程序只能访问句柄,而不能直接访问句柄所指示的实际对象。程序一般通过调用API函数获取句柄,并且在其他API函数中使用这个句柄,以引用它指示的对象。在此过程中,句柄的实际值对程序来说是无关紧要的。此外,tag_p_t是指向tag_t数据类型的指针。
以部件对象为例,下面的代码首先获取工作部件的tag_t值,然后获取该句柄所引用部件对象的文件名。
tag_t tWorkPart;
tWorkPart = UF_ASSEM_ask_work_part();
3.2.2 结构类型
UG/Open API采用C语言的语法定义了一些常用的结构类型,将相应联系的不同类型数据封装在一起使用,这些结构类型用后缀“_s”表示,例如:
struct 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;
}
typedef struct UF_STYLER_item_value_type_s UF_STYLER_item_value_type_t, *UF_STYLER_item_value_type_p_t;
结构体UF_STYLER_item_value_type_s封装了对话框控件的基本属性,如reasonitem_idvalue等。UG/Open API使用关键词typedef将该结构类型定义为新类型UF_STYLER_item_value_type_t,用户可以使用它定义结构变量,然后引用结构体内的数据成员,例如:
UF_STYLER_item_value_type_t data;
UF_STYLER_ask_value(dialog_id, &data);
UF_STYLER_free_value( &data );
3.2.3 枚举类型
枚举类型将变量的值一一列举出来,变量的值只限于列举出来的值的范围。UG/Open API采用C语言的语法定义了一些常用的枚举类型,使用后缀“_e”表示。以枚举类型UF_ASSEM_load_status_e为例,下面给出其详细定义:
enum UF_ASSEM_load_status_e{
UF_ASSEM_ok,
UF_ASSEM_suppressed,
UF_ASSEM_not_loaded,
UF_ASSEM_instance_suppressed
};
typedef enum UF_ASSEM_load_status_e UF_ASSEM_load_status_t;
枚举类型UF_ASSEM_load_status_e表示部件在装配体中的状态。UG/Open API使用typedef关键词将该枚举类型定义为新类型UF_ASSEM_load_status_t,例如:
char sPartPath[] = E:\\Example\\part.prt;
tag_t tPart = NULL_TAG;
UF_PART_load_status_t error_status;
UF_PART_open(sPartPath, &tPart, &error_status);
3.2.4 联合类型
有时需要将不同数据类型的变量放在同一段内存单元中,这种使不同变量占用同一段内存的结构类型称为联合类型。联合类型与结构类型的定义形式相似,但含义不同。联合类型变量所占的内存长度等于其内部最长数据成员的长度,而结构类型变量所占的内存长度则是其各数据成员所占内存长度之和。
UG/Open API采用C语言的语法定义了一些常用的联合类型,使用后缀“_u”表示。以联合类型UF_STYLER_value_u为例,下面给出其详细定义:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。