




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
22 UG NX 5.0 二次开发基础 内容提要 UG/Open API 基础概念和语法知识 UG/Open API 常用对话框及其应用 提示消息的发布与获取 Open/API(用户 函数)是一个程序集合,使得程序员能够访问和操作 NX 对象模型。除此之外, Open/API 还提供了工具用来编辑和连接与 UG NX 5.0 风格一致的程序。UG/Open 二次开发模块是 UG NX 5.0 软件的二次开发 工具集,可用于各种二次开发工作。利用该模块可对 UG NX 5.0 系统进 行用户化剪裁和开发,满足用 户的开发需求。使用 UG NX 5.0 的二次开发时,用户需要具有一定的 C 语言基 础。 UG/Open 包括以下几个部分。 (1)UG/Open API 开发工具:提供 UG NX 5.0 软件直接编程接口,支持 C、C+、Fortran 和 Java 等主要高级语言。 (2)UG/Open UIStyle 开发工具:是一个可 视化编辑器,用于创建类似于 UG NX 5.0 的交互界面。 利用该工具,用户可为 UG/Open 应用程序开发独立于硬件平台的交互界面。 (3)UG/Open Menuscript 开发 工具:对 UG NX 5.0 软件操作界面进行用户化开发,使得用户无须 编程即可对 UG NX 5.0 标准菜单进行添加、重组、剪裁或在 UG NX 5.0 中集成自己开发的软件功能。 (4)UG/Open GRIP 开发工具:是一个类似于 APT 的 UG NX 5.0 内部开发语言,用户可利用该工 具生成 NC 自动化或自动建模等特殊应用。 22.1 UG/Open API 语法基础 由于 UGOpen API 是 UG NX 5.0 中最常用的二次开发工具,因此国内外有大量的 UG NX 5.0 用户投入了大量的精力对 UGOpen API 的编程进行研究,而且已经掌握了大量的编程技巧,并开 发了许多实际的应用。本书在编写过程中,参考了他们的许多经验。 CHAPTER 第 22 章 UG NX 5.0 二次开发基 础 473 22.1.1 概述 作为 UG NX 5.0 与外部应用程序之间的接口, UGOpen API 是一系列函数的集合。通过 UGOpen API 的编程,用户几乎能够实现所有的 UG NX 5.0 功能。开发者可以通过用 C+语言编 程来调用这些函数,从而实现用户的需求。 (1)对 UG part 文件及相应模型进行操作,包括建立 UG NX 5.0 模型、查询模型对象、建立 并遍历装配体及创建工程图等。 (2)在 UG NX 5.0 中创建交互式程序界面。 (3)创建并管理用户定义对象等。 应用函数时应注意,所有的 UG/Open API 应用必须及时进行初始化和终止,以确保获取或释 放 UG/Open API 的执行许可权限。 初始化函数是 UF_initialize,开始调用 UG/Open API 的函数时应先调用 UF_initialize 来获取执 行许可权限。一般来说,变量声明完成后,第一个调用的 UG/Open API 函数就是 UF_initialize。 终止函数是 UF_terminate,不再需要调用 UG/Open API 的函数时,必须先调用 UF_terminate 来 释放执行许可。 UG/Open API 程序能在两种不同的环境(依赖于程序的连接方式)下运行,即 Internal 环境 (也叫“Internal 开发模式” )和 External 模式。其中 Internal 环境下的程序只能在 UG NX 5.0 的界 面环境(session)下运行,在运行这些程序时它们被加载到 UG NX 5.0 的运行空间中(UG NX 5.0 分配的内存) 。External 模式开发的程序能在各种操作系统(Windowns NT/2000/XP 及 UNIX)下运 行,不在 UG NX 5.0 环境中或作为 UG NX 5.0 的子进程运行。尽管没有图形显示,但 UG/Open API 提供了函数用于打印机或绘图仪输出,也可以输出成 CGM 文件或其他数据文件。 下面在 Visual C中创建一个基于 UG/Open API AppWizard 的项目,来说明初始化函数和终 止函数的应用。 【例 22-1】 UG/Open API 中初始化函数和终止函数的应用。 操作步骤如下。 检查 Visual C的安装目录 Microsoft Visual Studiocommonmsdev98Template 下是否有 文件 ugopen.awx 及 ugopen.hlp,若有,进入步骤 2;否则从 UG 安装目录$UG_BASE_DIR/ugopen 下 将这两个文件复制并粘贴到目录 Microsoft Visual Studiocommonmsdev98Template 下。 启动 Visual C+,选择【File】【New】命令, 弹出【New】对话框,如图 22-1 所示。 图 22-1 【New】对话框 一 册 通 UG NX 5.0 474 选择 选项卡,在 选项卡下面的列表框中 选择【UG/Open APPWizard V18】,在 文本框中输入项目名称“Example” ,单击 按钮。在 弹出的对话框中按图 22-2 所 示设置选项。 图 22-2 设置选项 1 单击 按钮,在弹出的对话框中设置选项,如图 22-3 所示。 图 22-3 设置选项 2 单击 按钮,系 统弹出【New Project Information】窗口, 如图 22-4 所示。窗口中列 出了用户选择的所有信息。确 认无误后单击 按钮 ,系统将在指定的目录下创建一个 UG NX 5.0 二次开发框架。 第 22 章 UG NX 5.0 二次开发基 础 475 图 22-4 【New Project Information】对话框 按快捷键 F7,编译 Example 工程,一般会出 现编译 成功的信息,如 图 22-5 所示。 图 22-5 编译成功的界面 打开【FileView 】选项卡,单击【Examplefiles】前的 + 。然后 单击【Source Files】前面的 , 双击【Example.cpp 】,文件的内容如图 24-6 所示。 下面给出“Example.h”和“Example.cpp”两个文件的内容,在“Example.cpp”文件中可以找 到函数: extern “C“ DllExport void ufusr( char *parm, int *returnCode, int rlen ) 其函数体中包含着 UG/Open API 中的初始化函数 UF_initialize 和终止函数 UF_terminate。在进 行应用开发时,只需要把相应的代码(代码中的黑体部分)添加到相应的位置,即可完成应用开发。 一 册 通 UG NX 5.0 476 图 22-6 打开 Example.cpp 文件 Example.h 文体内容如下: /* * * Example.h * * Description: * Example header file. * */ static void PrintErrorMessage( int errorCode ); Example.cpp 文件内容如下: / / / Example.cpp / / Description: / Contains Unigraphics entry points for the application. / / / Include files #include #include #include #if ! defined ( _hp9000s800 ) using std:endl; using std:ends; #else # include #endif #include #include “Example.h“ /- / Activation Methods /- / Explicit Activation / This entry point is used to activate the application explicitly, asin / “File-Execute UG/Open-User Function.“ extern “C“ DllExport void ufusr( char *parm, int *returnCode, int rlen ) /* Initialize the API environment */ int errorCode = UF_initialize(); if ( 0 = errorCode ) /* TODO: Add your application code here */ /* Terminate the API environment */ errorCode = UF_terminate(); /* Print out any error messages */ PrintErrorMessage( errorCode ); /- / Utilities /- / Unload Handler / This function specifies when to unload your application from Unigraphics. / If your application registers a callback (from a MenuScript item ora / User Defined Object for example), this function MUST return / “UF_UNLOAD_UG_TERMINATE“. extern “C“ int ufusr_ask_unload( void ) return( UF_UNLOAD_UG_TERMINATE ); /* PrintErrorMessage * * Prints error messages to standard error and the Unigraphics status * line. */ static void PrintErrorMessage( int errorCode ) if ( 0 != errorCode ) 一 册 通 UG NX 5.0 478 /* Retrieve the associated error message */ char message133; 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 _ 名称中各部分的说明如下。 (1)UF:表示 UG/Open API 函数。 (2):通常是模块功能和首字母的缩写,例如 MODL 和 DISP 是 Modeling 模块和 Display 功能的缩写。 (3):被下画线分开的动词和名词,例如 UF_MODL_create_block1 是 UG/Open API Modeling 模块中创建立方体的函数,UF_DISP_set_highlight 是高亮显示对象的函数。 在数据类型方面,除了标准的 C 语言数据类型外,UG/Open API 还提供了一些自定义的数据类 型,如 tag_t 类型、结构类型、联合类型与指针类型等。下面介绍几种常用的类型。 1tag_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 类。 第 22 章 UG NX 5.0 二次开发基 础 479 它类似于 C 语言中的指针,例如当要查询一个点对象的坐标时,送入查询函数中的 tag_t 应是点类 型的几何对象,而不是线或面等其他几何对象的 tag_t。此外,tag_p_t 是指向 tag_t 数据类型的指针。 以部件对象为例,下面的代码首先获取部件的 tag_ t 值,然后获取该句柄所引用部件对象的文 件名。 tag_t tPart; tPart=UF_ASSEM_ask_work_part(); char sFile256+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; 一 册 通 UG NX 5.0 480 4枚举类型(Enum type) 枚举类型将变量的值一一列举出来,变量的值只限于列举出来的值的范围。UG/Open API 采用 C 语言的语法定义了一些常用的枚举类型,使用后缀“_e ”表示。下面给出一个使用枚举类型的例 子。 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() 访问 part 的属性 UF_OBJ_cycle_objs_in_part() 在 part 中查询对象 UF_PART_close() 关闭 part UF_PART_reopen() 再打开 part UF_PART_ask_part_name() 获取 part 的文件名 UF_PART_set_display_part() 设置显示部件 UF_PART_ask_part_history() 获取部件的历史 UF_PART_ask_customer_area() 查询用户定义的数据 UF_PART_ask_description() 查询 part 的描述信息 UF_PART_ask_status() 查询 part 的状态信息 UF_PART_set_customer_area() 设置用户定义的数据 UF_PART_set_description() 设置 part 的描述信息 UF_PART_set_status() 设置 part 的状态信息 UF_PART_ask_compression_flags() 查询 part 的压缩标记 UF_PART_set_compression_flags() 设置 part 的压缩标记 下面给出一个例子来讲述 Part 文件的创建、打开、关闭和存盘等操作。 【例 22-2】 Part 文件的创建、打开和关闭操作。 操作步骤如下。 第 22 章 UG NX 5.0 二次开发基 础 481 在例 22-1 中加入下面的头文件: #include “uf_part.h“ #include “uf_obj.h“ 把下面的代码添加到例 22-1 中黑体代码所在的位置,按快捷键 F7,编译 Example 工程, 出现编译成功的信息。 UF_PART_load_status_t error_status ; char part_name133 = “I: ExampleDebugtest.prt“; int units = 1 ; / 单位采用米制 tag_t part; UF_PART_new (part_name, units, / 创建 test.prt if ( part = NULL_TAG ) uc1601(“创建 Part 错误“, 1); UF_PART_close_all ( ); /退出之前关闭所有 part errorCode = UF_terminate(); return; else uc1601(“test 创建成功“,1); uc1601(“test 被设为显示 part 并且被打开“, 1); UF_PART_set_display_part (part ); / 显示 test.prt UF_PART_open (part_name, UF_free_string_array(error_status.n_parts,error_status.file_names); UF_free (error_status.statuses ); 启动 UG NX 5.0 软件,选择【文件】【打开】命令,弹出【执行用户函数】对话框如图 22-7 所示。 图 22-7 【执行用户函数】对话框 一 册 通 UG NX 5.0 482 在 下拉列表框中选择文件夹“ExampleDebug ”,选中文件“ Example.dll”,然后 单击 按 钮,弹出的消息 对话框如图 22-8 所示,提示用户 test 创建成功。 图 22-8 运行“Example.dll”文件后弹出的【消息】对话框 单击 按钮, 弹 出【消息】对话框如图 22-9 所示,提示用户 test 被设置为显示并且被 打开。 图 22-9 提示用户打开“test.part”文件的【消息】对话框 第 22 章 UG NX 5.0 二次开发基 础 483 继续单击 按钮, Part 文件“test.part”被打开,如图 22-10 所示。接下来可以创建模 型,单击 按 钮后打开文件夹“I:ExampleDebug ”,即可发现文件“test.part”。 图 22-10 新建零件界面 2UF 对象 UG NX 5.0 中的大部分公共对象都是头文件 uf_object_types.h 和 uf_obj.h 中定义的对象。所有 这些对象都有明确的函数与它们对应,只有特定的对象子类和可显示的 UF 对象有另外的函数与它 们对应。 UF 对象的可用方法如下。 (1)指定、查询及删除单个对象的名称,例如: UF_OBJ_set_name() 指定对象名 UF_OBJ_ask_name() 查询对象名 UF_OBJ_delete_name() 删除对象名 (2)查询遍历对象,例如: UF_OBJ_cycle_objs_in_part() 在 part 中遍历对象 UF_OBJ_cycle_all() 在当前工作 part 中遍历对象 UF_OBJ_cycle_by_name() 通过对象名称查询对象 因为 UG NX 5.0 中对象存 储方式的独特,所以函数 UF_OBJ_cycle_objs_in_part()比函数 UF_OBJ_cycle_all()、UF_OBJ_cycle_by_name()和 UF_LAYER_cycle_by_layer()更为有效。因此 建议使用 UF_OBJ_cycle_objs_in_part()而不是 UF_OBJ_cycle_all()、 UF_OBJ_cycle_by_name() 或 UF_LAYER_cycle_by_layer()。 一 册 通 UG NX 5.0 484 3表达式 表达式提供 UG NX 5.0 中的参数化建模的机制,它能控制特征,特征也随表达式的变化而改变。 一个表达式可在多个特征中使用,这样它的变化将能改变多个特征。表达式的一般形式是: name = value name 为表达式名称,value 为表达式的值。表达式可以是数字或条件等式。表达式名可以用于 表达式值中,其首字符必须是字母,其他字符可以是数字、字母或下画线等。表达式名是大小写敏 感的。一个 part 文件中的表达式名应唯一。下面是一些表达式值的例子: “Length = 1.5 + 2 * sin (angle)“ “position = if(width Free(pidl); pMalloc-Release(); 启动 UG NX 5.0 软件,选择【文件】【执行】【NX 打开】命令,弹出如图 22-17 所示的 对话框。选择生成的动态库文件 “Example.dll”,单击 按钮,弹出如图 22-19 所示的文件夹选 择对话框。 一 册 通 UG NX 5.0 492 图 22-19 执行“Example.dll”文件生成的文件夹选择对话框 在调试上面的程序时应加入下面的头文件: #include #include 22.2.3 选择菜单列表对话框 UG/Open API 的选择菜单对话框有两种,即单选菜单列表对话框和多选菜单列表对话框,分别 通过子过程 uc1603 和 uc1605 实现,下面将具体介绍。 uc1603 用于显示一个选择菜单对话框,该菜单可以包含 14 个菜单选项,并可以通过变量参数 设定默认的选择项。若变量参数为 0,则不设定默认选项,同时【确定】按钮变灰。菜单选项的返 回值介于 5 和 18 之间,即使用者选择菜单项 1,那么返回值是 5,使用者选择菜单项 14,那么返 回值是 18。下面是返回值的说明。 (1)1:回退。 (2)2:取消。 (3)518:选中了的菜单项。 (4)19:不允许状态,不能启动对话框。 uc1605 解决多项选择菜单的问题,与 uc1603 不同,该子过程没有默认的选择项,数组变量的 每一个元数的初值是 0。下面介绍返回值及参数。 (1)1:回退。 (2)2:取消。 (3)3:接收。 (4)4:有多个选项被选择。 (5)8:不允许状态,不能启动对话框。 【例 22-7】 创建单选菜单列表对话框和多选菜单列表对话框。 操作步骤如下。 第 22 章 UG NX 5.0 二次开发基 础 493 把下面的代码添加到例 22-1 中黑体字代码所在的位置,按快捷键 F7,编译 Example 工程, 出现编译成功的信息。 char SingleMenuStr=“单选菜单列表对话框“; int OkDefault=1; char MenuOptions38=“选项 1“,“选项 2“,“选项 3“; int NumOfOption=3; uc1603(SingleMenuStr,OkDefault,MenuOptions,NumOfOption); 启动 UG NX 5.0,选择【文件】【执行】【NX 打开 】命令,弹出如图 22-17 所示对话框。 选择生成的动态库文件“Example.dll”,单击 按钮,出现如图 22-20 所示的单选菜单列表对话 框。 图 22-20 执行“Example.dll”文件生成的单选菜单列表对话框 把下面的代码添加到例 22-1 中黑体字代码所在的位置,执行与上面相同的操作,即可得 到如图 22-21 所示的多选菜单 列表对话框。 char SingleMenuStr=“多选菜单列表对话框“; int *ItemMenu; char MenuOptions38=“选项 1“,“选项 2“,“选项 3“; int NumOfOption=3; uc1605(SingleMenuStr,0,MenuOptions,NumOfOption,ItemMenu); 一 册 通 UG NX 5.0 494 图 22-21 执行“Example.dll”文件生成的多选菜单列表对话框 22.2.4 对象选择对话框 UG/Open API 提供了专门的接口 “UF_UI”模块,让开发人员开发的应用能够从 Unigraphics 图形界面选取几何对象。常用的对象选择对话框有两种:单对象选择对话框与按类选择对话框。 UF_UI 模块中的函数主要实现两种功能:一种是通过有过滤功能的函数,把开发者定义的可选对象 选出来;一种是弹出对话框,让用户在可选对象中选择一个或多个对象。这些函数都在头文件 uf_ui.h 中定义。下面介绍这两个常用的对话框。注意,调用这两种对话框之前 UG 环境中必须有工 作部件存在。 1按类选择对话框 按类选择对话框通过函数 UF_UI_select_with_class_dialog 创建,并且能够一次选择同类的多个 对象。如果返回值是 UF_UI_OK,则被选择的对象保持高亮状态,当然也有可能没有选中任何对象。 若返回值是 UF_UI_BACK 或 UF_UI_CANCEL,所有被选的对象都不会高亮显示。默认的可选对象 是所有的可选标准类型,开发人员还可以通过函数 UF_UI_set_sel_procs 来指定特殊的过滤过程及 选择回调。函数 UF_UI_add_to_sel_list 用于事先指定已选对象。 【例 22-8】 创建按类选择对话框。 操作步骤如下。 把下面的代码添加到例 22-1 的 extern “C“ DllExport void ufusr( char *parm, int *returnCode, int rlen )函数中: /定义初始化进程函数 #define UF_CALL(X) (Report( _FILE_, _LINE_, #X, (X) int Report( char *file, int line, char *call, int irc) return (irc); static int init_proc(UF_UI_selection_p_t select,void* user_data) 第 22 章 UG NX 5.0 二次开发基 础 495 int num_type=2; UF_UI_mask_t mask_triples=UF_line_type,0,0,UF_solid_type,0, UF_UI_SEL _FEATURE_ ANY_EDGE; if(UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIF IC,num_type,mask_triples)=0) return (UF_UI_SEL_SUCCESS); else return (UF_UI_SEL_FAILURE); 把下面的代码添加到例 22-1 中黑体字代码所在的位置,按快捷键 F7,编译 Example 工程, 出现编译成功的信息。 /按类选择对话框 char TypeDialogBox=“按类选择对话框“; char DialogBoxTitle=“按类选择对话框 “; int Scope=UF_UI_SEL_SCOPE_NO_CHANGE; int Response; int Count; tag_t* atObject; UF_CALL(UF_UI_select_with_class_dialog(TypeDialogBox,DialogBoxTitle,Scope,init_p roc,NULL, 启动 UG NX 5.0,选择【文件】【新建】命令,创建新部件,弹出如图 22-11 所示对话框, 在 文本框中输入“ part”,单击 按钮,出 现 如图 22-12 所示的界面。 选择【文件】【执行】【NX 打开】命令, 弹出如图 22-17 所示对话框。 选择生成的动态 库文件“Example.dll ”,单击 按钮,弹出按钮 。单击 出现如图 22-22 所示的按类选择 对话框。 在上面的函数中首先定义了一个初始化进程函数 init_proc,在该函数体中使用函数 UF_UI_set_sel_mask 设置被选对象的类型(可以是多种类型) ,然后将初始化进程函数名作为对象 选择对话框函数的第 4 个参数。 2单对象选择对话框 单对象选择对话框通过函数 UF_UI_select_with_single_dialog 创建,并可通过鼠标选择或用键 盘输入对象名来选择对象,被选中的对象高亮显示。下面给出单个对象选择对话框的实例代码,在 此之前,需要将上例的程序初始化进程函数 init_proc 加入进来,编译成功后的显示结果如图 22-5 所示。 一 册 通 UG NX 5.0 496 图 22-22 执行“Example.dll”文件生成的按类选择对话框 【例 22-9】 创建单个对象选择对话框。 操作步骤如下。 把下面的代码添加到例 22-1 中黑体字代码所在的位置,按快捷键 F7,编译 Example 工程, 出现编译成功的信息。 char TypeDialogBox=“单个对象选择对话框“; char DialogBoxTitle=“单个对象选择对话框 “; int Scope=UF_UI_SEL_SCOPE_NO_CHANGE; int Response; tag_t tObject; tag_t tView; double tCursor3; UF_CALL(UF_UI_select_with_single_dialog(TypeDialogBox,DialogBoxTitle,Scope,init_proc,NUL L, 启动 UG NX 5.0,选择【文件】【新建】命令, 创建新部件,弹出如图 22-11 所示的对话框。 在【名称】文本框中输入“part”, 单击【确定】按钮,出现如图 22-12 所示的界面。 选择【文件】【执行】【NX 打开】命令, 弹出如图 22-17 所示对话框。 选择生成的动态 库文件“Example.dll ”,单击 按钮,生成如 图 22-23 所示的单个对象选择对话框。 22.3 消息的发布与获取 在 UG NX 5.0 的操作进程中常常需要向用户发布一些信息,如错误警告、数据结果、提示信息 和状态报告等,或者获取一些信息,如字符串和数字等。开发人员可以通过消息对话框、UG NX 5.0 信息窗口、提示行和状态行等发布消息,通过用户输入获取消息并等候应答。 第 22 章 UG NX 5.0 二次开发基 础 497 图 22-23 执行“Example.dll”文件生成的单个对象选择对话框 22.3.1 信息窗口 UG NX 5.0 信息窗口支持在 UG NX 5.0 环境中显示一个文本框的操作,用户可以在文本框中输 入文本,也可以将文本保存到文本文件中。UG NX 5.0 信息窗口主要用于向用户提供一些具体的操 作或查询信息,如显示分析结果,报告工作进程和提供警告信息等,有关 UG NX 5.0 信息窗口的函 数在头文件 uf_ui.h 中定义。UG NX 5.0 信息窗口对应的 UF 函数和操作功能如下: 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() /关闭信息窗口 UF_UI_exit_listing_window() /退出信息窗口 【例 22-10】 创建 UG NX 5.0 信息窗口操作。 操作步骤如下。 把下面的代码添加到例 22-1 中黑体字代码所在的位置,按快捷键 F7,编译 Example 工程, 出现编译成功的信息。 UF_UI_open_listing_window(); UF_UI_write_listing_window(“information 2n“); uc1601(“Pause 1“,1); UF_UI_close_listing_window(); uc1601(“Pause 2“,1); logical OpenWin; UF_UI_is_listing_window_open( if(!OpenWin) UF_UI_open_listing_window(); 一 册 通 UG NX 5.0 498 uc1601(“Pause 3“,1); UF_UI_write_listing_window(“information 3n“); uc1601(“Pause 4“,1); UF_UI_save_listing_window(“c:information.txtn“); UF_UI_exit_listing_window(); uc1601(“Pause 5“,1); UF_UI_open_listing_window(); 启动 UG NX 5.0,选择【文件】【执行】【NX 打开 】命令,弹出如图 22-17 所示对 话 框 。 选 择 生 成 的 动 态 库 文 件 “Example.dll”,单 击 按 钮 ,生 成 如 图 22-24 所 示 的 信 息 窗 口 。 图 22-24 执行“Example.dll”文件生成的信息窗口 22.3.2 提示行与状态行 打开 UG NX 5.0 界面时,会发现在界面的最下方存在两个特殊的显示区域,即提示行与状态行。 提示行位于左下方,用于引导用户下一步的操作进程,具有一定的操作导航能力;状态行位于右下 方,反映当前的操作结果或反馈状态。提示行与状态行的使用在一定程度上降低了操作的难度,使 得用户界面更加友好。提示行通过函数 UF_UI_set_prompt 进行设置,一般用于某个具体操作之前。 状态行通过函数 UF_UI_exit_status 进行设置,一般在操作的进程中和进程结束后显示信息。 22.3.3 获取用户输入 UG/Open API 的用户界面接口通过大量的子过程显示提示信息、接收信息及菜单,并等候用户 应答。这些子过程是 uc1600uc1613,这些提示信息被显示在 UG NX 5.0 主界面的暗示行,一般 说来,暗示行允许显示 80 个字符,但还依赖于所使用的字体。下面简单介绍部分函数的功能及其 使用方法。 (1)函数 uc1600():用于获取用户的字符串输入。 (2)函数 uc1607():显示键盘输入界面并获取整数输入,返回值及参数说明如下。 1:回退。 2:取消。 第 22 章 UG NX 5.0 二次开发基 础 499 3:接收(无用户输入时) 。 4:接收(有用户输入时) 。 8:不允许状态,不能启动对话框。 (3)函数 uc1608():显示键盘输入菜单界面并获取整型或实型输入,返回值及参数说明等同 于函数 uc1607()。 (4)函数 uc1609():显示键盘输入对话框并获取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年陇南地区武都区三上数学期末学业质量监测模拟试题含解析
- 2025-2026学年辽宁省葫芦岛市绥中县数学三年级第一学期期末预测试题含解析
- 2025-2026学年甘孜藏族自治州道孚县数学三年级第一学期期末达标检测模拟试题含解析
- 2025-2026学年保定市安新县三上数学期末学业水平测试模拟试题含解析
- 2024年江苏省扬州市江都区大桥片数学三年级第一学期期末检测试题含解析
- 七年级英语下册 Units 7-12 复习课件
- 八年级生物上册-动物行为的生理基础-苏教版课件
- 2025年卫生资格考试切实可行的备考措施试题及答案
- 自考行政管理2025年细致准备试题及答案归纳
- 时间安排与卫生资格考试试题及答案
- 国外关于学前教育的政策法规
- 基于单片机的恒压供水系统设计(附原理图、程序清单及外文翻译)
- 宾馆饭店消防安全培训课件
- 2022杭州新教科版六年级科学下册第四单元《物质的变化》全部教案(共7课)
- 客房物品摆放标准
- 弘扬新时代科学家精神(课件)-小学爱国主义教育主题班会通用版
- 当代社会问题课件
- 小学语文教师基本功大赛试卷及答案
- 某切眼掘进工作面开口施工的安全技术措施
- 古代职业-三教九流
- 某医院安全生产三项制度(安全生产责任制、制度、操作规程)汇编
评论
0/150
提交评论