using std::ends; #else # include
char message[133];
UF_get_fail_message( errorCode, message );
/* Print out the message */ UF_UI_set_status( message );
// Construct a buffer to hold the text. ostrstream error_message;
// Initialize the buffer with the required text. error_message << endl
<< \ << message
<< endl << endl << ends; // Write the message to standard error cerr << error_message.str(); } }
在创建几何模型、遍历模型或执行其他一些基本操作时,必须首先创建或打开一个Unigraphics Part文件。
22.1.2 UG/Open API函数名称及数据类型
作为Unigraphics二次开发的一个重要模块,UG/Open API在函数名称和数据类型方面都有自己的一些独特风格,本章将分别予以介绍。
UG/Open API的函数名称一般采用标准名称约定,其格式为:
UF__
名称中各部分的说明如下。 (1)UF:表示 UG/Open API 函数。
(2):通常是模块功能和首字母的缩写,例如MODL和 DISP 是 Modeling 模块和Display功能的缩写。
(3)
在数据类型方面,除了标准的C语言数据类型外,UG/Open API还提供了一些自定义的数据类型,如tag_t类型、结构类型、联合类型与指针类型等。下面介绍几种常用的类型。
1.tag_t数据类型
UG/Open API使用最多的数据类型是tag_t,在UG/Open API的uf_def.h中对该类型的定义如下:
typedef unsigned int tag_t, *tag_p_t;
该类型把UG/Open API与对象模型联系起来。当UG的模型被加载到UG环境中后,tag_t相当于对象的唯一标识。大部分的UG/Open API函数参变量列表中都有一个tag_t 指针或tag_t 类。它类似于C语言中的指针,例如当要查询一个点对象的坐标时,送入查询函数中的tag_t应是点类型的几何对象,而不是线或面等其他几何对象的tag_t。此外,tag_p_t是指向tag_t数据类型的指针。
以部件对象为例,下面的代码首先获取部件的tag_t值,然后获取该句柄所引用部件对象的文件
478
名。
tag_t tPart;
tPart=UF_ASSEM_ask_work_part(); char sFile[256+1];
UF_PART_ask_part_name(tPart,sFile);
由于代码中加入了函数UF_ASSEM_ask_work_part(),因此调试程序时应加入头文件#include
UG/Open API 拥有大量用于创建及修改Unigraphics对象的函数和过程。UG/Open API的部分函数不提供错误信息,在创建对象时一般返回对象的标识(tag_t)。当返回的对象标识为NULL_TAG 时,表示创建对象时出现了错误。
2.结构类型(Structure type)
UG/Open API采用C语言的语法定义了一些常用的结构类型,将相互联系的不同类型的数据封装在一起使用。这些结构类型用后缀“_s”表示,下面给出一个使用结构类型的例子。
typedef struct UF_ASSEM_options_s {
int reason;
const char *item_id; int subitem_index; int count;
int item_attr; int indicator;
}UF_ASSEM_options_s,*UF_ASSEM_options_s_t;
3.联合类型(Union type)
有时需要将不同数据类型的变量放在同一段内存单元中,这种使不同变量占用同一段内存的结构类型称为“联合类型”。联合类型与结构类型的定义形式相似,但含义不同。联合类型变量所占的内存长度等于其内部最长数据成员的长度乘以变量个数,而结构类型变量所占的内存长度则是其各数据成员所占内存长度之和。UG/Open API采用C语言的语法定义了一些常用的联合类型,使用后缀“_u”表示,下面给出一个使用联合类型的例子。
union UF_ASSEM_options_u { char *assemchar; int integer; int *integers; double assem; double *assems; UF_UI_selection_p_t selection; }; typedef union UF_ASSEM_options_u UF_ASSEM_options_t; 第22章 UG NX 5.04.枚举类型(Enum type) 枚举类型将变量的值一一列举出来,变量的值只限于列举出来的值的范围。UG/Open API采用C语言的语法定义了一些常用的枚举类型,使用后缀“_e”表示。下面给出一个使用枚举类型的例 二次开发基础 479 一 册 通 UG NX 5.0
子。
enum UF_ASSEM_options_e { UF_ASSEM_ok, UF_ASSEM_cancel, UF_ASSEM_not_loaded, UF_ASSEM_suppressed, };
typedef enum UF_ASSEM_options_e UF_ASSEM_options_t;
22.1.3 UG/Open对象类型与操作
所有的UG NX 5.0对象类型都通过它们唯一的标识来引用,这些UG NX 5.0对象分类如下。 (1)部件对象(Part object)。
(2)UF对象(UF objects),指uf_object_types.h中说明的对象。 (3)表达式(Expressions)。
对于每一类对象,UG/Open API中都有明确的函数对它们进行操作,下面分别介绍。 1.部件对象
部件对象是UG NX 5.0最基本的操作对象之一,它包含了部件中大量的几何与非几何信息。每一个加载到UG NX 5.0环境中的part文件,都有一个关联的部件对象(part object)代表它,系统会为每一个部件对象分配一个标记符(tag)。UG/Open API提供的访问和操作部件文件的函数包括部件文件的创建、打开、关闭、保存和信息的查询等,这些函数主要封装在头文件uf_part.h中,包括:
UF_ATTR_ask_part_attrs() UF_OBJ_cycle_objs_in_part() UF_PART_close() UF_PART_reopen() UF_PART_ask_part_name() UF_PART_set_display_part() UF_PART_ask_part_history() UF_PART_ask_customer_area() UF_PART_ask_description() UF_PART_ask_status() UF_PART_set_customer_area() UF_PART_set_description() UF_PART_set_status() UF_PART_ask_compression_flags() UF_PART_set_compression_flags()
\\\\访问part的属性 \\\\在part中查询对象 \\\\关闭part \\\\再打开part
\\\\获取part的文件名 \\\\设置显示部件 \\\\获取部件的历史 \\\\查询用户定义的数据 \\\\查询part的描述信息 \\\\查询part的状态信息 \\\\设置用户定义的数据 \\\\设置part的描述信息 \\\\设置part的状态信息 \\\\查询part的压缩标记 \\\\设置part的压缩标记
下面给出一个例子来讲述Part文件的创建、打开、关闭和存盘等操作。 【例22-2】 Part文件的创建、打开和关闭操作。 操作步骤如下。
在例22-1中加入下面的头文件:
#include \#include \
480
把下面的代码添加到例22-1中黑体代码所在的位置,按快捷键F7,编译Example工程,
出现编译成功的信息。
UF_PART_load_status_t error_status ;
char part_name[133] = \int units = 1 ; // 单位采用米制 tag_t part;
UF_PART_new (part_name, units, &part); // 创建test.prt if ( part == NULL_TAG ) { uc1601(\创建Part错误\ UF_PART_close_all ( ); //退出之前关闭所有part errorCode = UF_terminate(); return; } else { uc1601(\创建成功\ uc1601(\被设为显示part并且被打开\ UF_PART_set_display_part (part ); // 显示test.prt UF_PART_open (part_name, &part, &error_status); }
UF_free_string_array(error_status.n_parts,error_status.file_names); UF_free (error_status.statuses );
启动UG NX 5.0软件,选择【文件】|【打开】命令,弹出【执行用户函数】对话框如
图22-7所示。
第22章 UG NX 5.0
图22-7 【执行用户函数】对话框
在
后单击
下拉列表框中选择文件夹“\\Example\\Debug”,选中文件“Example.dll”,然
按钮,弹出的消息对话框如图22-8所示,提示用户test创建成功。
481
二次开发基础