第3章 编程基础 (UGNX二次开发实用教程)

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>,应用或模块的名称缩写。例如modl和disp分别是 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种:I(Input)、O(Output)或OF(Output Free),说明见表3-1。

1

例如:函数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。

1 2

3.2 UG/Open API的数据类型

除了C语言标准的数据类型外,UG/Open API还提供了一些自定义的数据类型,如tag_t类型、结构类型(structure type)、枚举类型(enum type)、联合类型(union type)与指针类型(pointer type)等,它们统一用后缀“_t”表示,且这些数据类型的指针用反缀“_p_t”命名表示。数据类型约定如表3-3所示:

1

3.2.1 tag_t类型

UG/Open API 使用最多的数据类型是tag_t ,在UG/Open API的uf_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封装了对话框控件的基本属性,如reason、item_id和value等。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为例,下面给出其详细定义:

union UF_STYLER_value_u{

char *string; char **strings; int integer;

int *integers; double real; double *reals;

UF_UI_selection_p_t selection;

UF_STYLER_notification_p_t notify;

UF_UI_attachment_t attach;

UF_UI_option_toggle_t option_toggle;

};

typedef union UF_STYLER_value_u UF_STYLER_value_t;

联合体UF_STYLER_value_u封装了对话框对话框控件的属性值,如string、integer和real等。UG/Open API使用typedef关键词将该联合类 型 定 义 为 新 类 型 UF_STYLER_value_t , 它 是 UF_STYLER_item_value_type_t中的数据成员value的类型,例如:

UF_STYLER_item_value_type_t data;

double rValue;

sel_data.item_id = REAL_BUTTOM_DIAMETER;

UF_STYLER_ask_value ( dialog_id, &sel_data );

rValue = data.value.real;

为您推荐

返回顶部
首页
电子图书
视频教程
搜索
会员