UG二次开发与数据库应用基础与典型范例的目录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG二次开发与数据库应用基础与典型范例的目录相关的知识,希望对你有一定的参考价值。
参考技术A第1章 UG二次开发概述
1.1 uG简介
1.2 uG软件的二次开发
1.2.1 uG二次开发概述
1.2.2 uG二次开发工具
1.3 一个简单的例子
第2章 UG/OpenAPI基础知识
2.1 概述
2.2 uG/OpenAPI数据类型、函数及表达式
2.2.1 uG/OpenAPI数据类型
2.2.2 uG/OpenAPI函数
2.2.3 uG/OpenAPI表达式
2.3 uG/OpenAPI.的开发模式
2.4 菜单、工具条的制作
2.4.1 uG菜单文件及语法
2.4.2 uG工具条文件及语法
2.5 uIStyler对话框设计
2.5.1 uG对话框的建立
2.5.2控件属性的设置
2.5.3回调函数
2.5.4对话框界面
2.5.5控件的访问
2.6 uG/OpenAPI在矩形花键参数化建模中的应用实例
第3章 UG/OpeflGrip开发基础
3.1 概述
3.2 uG/OpenGdp数据类型、运算符及表达式
3.2.1 常量、变量与数组、子集
3.2.2 数据类型
3.2.3 运算符、内部函数及表达式
3.3 常用几何体的生成
3.3.1 点的生成及实例
3.3.2 直线的生成及实例
3.3.3圆的生成及实例
3.3.4 B样条曲线的生成及实例
3.3.5实体的生成及实例
3.3.6实体的运算及实例
3.4 控制语句
3.4.1 转移语句及实例
3.5.1变换及变换矩阵
3.5.2 变换矩阵的UG/OpenGrip买现
3.5.3变换的UG/OpenGrip实现及实例
3.6 人机交互
3.6.1 响应变量
3.6.2 MESSG语句
3.6.3 PARAM语句
3.6.4 TEXT语句
3.6.5 CHOOSE语句
3.6.6 POS语句
3.6.7 GPOS语句
3.7 uG/OpenGRip开发环境
3.8 uG/OpenGrip在法兰参数化建模中的应用实例
第4章 零件参数化系统的开发
4.1 参数化设计概述
4.2 uGCAD中的参数化设计方法
4.2.1 利用UG/OpenAPI进行参数化设计
4.2.2 利用UG/OpenGrip进行参数化设计
4.2.3利用UG/OpenAPI和UG/OpenGrip进行参数化设计
4.3 渐开线直齿轮参数化设计实例
4.3.1 uG应用开发环境设置
4.3.2 菜单设计
4.3.3 UIStyler对话框设计
4.3.4 使用Visualc++建立应用程序框架
4.3.5 用UG/OpenGrip编写齿轮参数化设计程序
4.3.6 编译、连接
4.3.7 运行过程
4.4 菜单中ACTIONS调用方式
4.4.1 调用对话框
4.4.2 调用应用程序
4.5 常用程序入口
4.5.1ufsta()
4.5.2 ufusr()
4.5.3 用户自定义入口
第5章 数据库技术在UG开发中的应用
5.1 概述
5.2 数据库基础知识
5.2.1 数据库、数据库管理系统和数据库系统.
5.2.2 数据模型
5.2.3 数据库的表结构设计
5.3 客户机/服务器(C/S)结构开发模式
5.3.1 客户机/服务器结构
5.3.2 ODBC数据库访问接口
5.4 Visualc++平台上基于ODBC的数据库系统开发
……
第6章 渐开线斜齿轮参数化设计系统开发实例
第7章 基于UG模型文件管理系统开发实例
第8章 齿轮仿真加工系统开发实例
ug二次开发怎么把不同数据写在一起
如果是大量的数据,可以采用KF,如果数据小,可以采用属性的方式。
与表达时候相关的部分函数:
UF_MODL_ask_exp。
UF_MODL_ask_exp_desc_of_feat。
UF_MODL_ask_exp_desc_of_frec。
UF_MODL_ask_exp_tag_string。
UF_MODL_ask_exp_tag_value。
UF_MODL_ask_exps_of_feature。
UF_MODL_ask_exps_of_part。
UF_MODL_create_exp。
UF_MODL_create_exp_tag。
软件简介:
其从18版本开始提供二次开发功能,即支持编程扩展系统功能实现用户特殊需求。
较为普遍的使用Open API系统,又被称为UFUN,支持C、C++语言。
新版NX支持NXOpen系统,支持.net、C++、Java语言。
NX4及以下支持.net 1.1,NX5以上支持.net2.0及以上。
美国UGS公司的Unigraphics(UG)软件是一套优秀的以机械产品为主的CAD/CAE/CAM一体化软件,应用范围非常广泛,在引入国内不到十年的时间内,就拥有了几百家用户,其发展势头非常强劲。
UG原来是由工作站上移植过来的,GRIP就是它原来的二次开发工具,(本人对GRIP并不熟悉,哪位朋友如果使用GRIP开发,可以介绍一下),目前WINDOWS下的开发工具为UG/OPEN和UG/OPEN++,故在此我们主要针对这两种开发方法介绍一下。
1、UG/OPEN 是一系列UG开发工具的总称。它们随UG一起发布,以开放性架构面向不同的软件平台提供灵活的开发支持。它使第三软件商和UG用户能在其提供的平台上开发出适合自己需要的CAD产品。
UG/Open 套件组成:API, Grip, Menus cript ,UIStyler。
API:
UG/Open API也称User Function,通过它可以在C程序和C++程序中以库函数的形式调用UG内部的近2000个操作。
Grip语言:
GRIP(Graphics Interactive Programming)是一种专用的图形交互编程语言,开发者可以用GRIP编程的方法自动实现在UG下进行的绝大部分操作。GRIP命令很像英语单词,语法与BASIC 和FORTRAN相似,有某些情况下对于一些高级操作,用GRIP编程的方法比用UG交互的方法更有效,在UG交互环境下可以实现的功能用GRIP几乎全都可以实现。UG提供了一个名叫UG Open GRIP的GRIP语言编辑器,用这个工具可以编辑、修改、编译、连接程序。
Menus cript:
此项功能使用户或第三方软件商通过文本编辑器编辑UG菜单文件,以生成用户化的菜单进而集成他们的特殊应用。UG/Open Menus cript支持UG主菜单和快速弹出式下拉菜单的修改,通过它可以改变UG菜单的布局、添加新的菜单项以执行用户二次开发程序、User Tools文件及操作系统命令等。UG/Open Menus cript的使用需专门授权。运用UG/OpenMenus cript可以完全改变UG软件的主界面,需谨慎使用以防出现混乱。
UIStyler:
是用户或第三方软件商开发UG对话框的可视化工具,它比User Tools具有更强的功能。使用这个工具可以避免复杂的图形用户接口GUI(Graphics User Interface)编程。其设计的对话框的方式与Visual C++很相似。即利用对话框中基本控件的组合生成不同的对话框,对话框中所有控件都是实时可见的。
UG/Open 的主要功能实现就是利用UG/OPEN API,实质上就是UG提供的访问UG内部对象或核心的一个函数库。
UG/Open API(Application Programming Interface, 应用编程接口),使用户可以使用标准的C语言编译器,以习惯的格式编写出面向UG的二次开发程序。此时可以充分地发挥C语言编译和运行效率高,功能强大的特点。实践证明,这些API函数也可以无缝地集成到C++程序中,并利用强大的Microsoft Visual C++ 集成环境进行编译。这样,我们就可以充分地发挥出VC强大的功能和极其丰富的资源,包括MFC类库,使用面向对象的软件工程方法,高效高质地进行软件的开发。同时,也保证了对企业已有的各种源代码资源(通常使用C语言编写)的利用。
UG/Open API 函数能在两种不同的环境下运行,根据编译链接情况的不同,UG/Open API 二次开发程序又具有两种形式:
a. 外部式(External):此时UG/Open API程序可以脱离UG环境,在操作系统下单独运行,或者作为UG的一个子进程独立运行。
特点:调用灵活,用途广泛。
无法利用UG的交互界面。
b. 内部式(Internal):此时UG/Open API程序在UG环境下运行,与程序相关的各种事务通过UG代理执行。这样做的一个好处是可执行程序更小,同时链接的速度也更快。另外,一旦程序被装入,它将驻留在内存中,下次使用时不需重新加载,这样也节省了时间。而且这种方式下用户可与计算机交互,开发的程序能与UG无缝集成。
特点:直接控制UG的行为。
和用户交互。
2、UG/Open++提供了一个面向对象的UG开发接口。使用这些接口可以通过C++类的层次关系访问UG的对象和功能。这个类层次结构提供了许多功能,例如,创建,读取,修改UG对象,以及控制UG软件的运行。此外,通过继承UG标准类,用户可以定义自己的新类,从而拓展了原来的类层次结构。
UG/Open++实质上是在UG/Open基础上,提供了C++开发接口。实际上,UG/Open++由两个库组成:Openpp库提供了UG对象和功能;Vmathpp库提供了一些通用的向量代数操作。 但目前看来UG/OPEN++提供的功能实现起来过于繁琐,许多功能还不完善,有待于进一步提高。
UG/Open++应用程序也可以分为内部应用程序和外部应用程序两种。内部应用程序事实上是一个UNIX的共享库或WINDOWS NT下的动态连接库。内部应用程序必须运行在UG软件中。外部应用程序是一个可以独立执行的文件,无须UG软件同时运行。
开发工具的安装:
1、UG本身提供了UG/Open API、UG/OPEN GRIP的GRIP语言编辑器和UIStyler可视化开发工具,而UG/Open Menus cript的使用通过文本编辑器就可完成。
2、UG/OPEN 是在Microsoft Visual C++ 集成环境下开发编译的,所以需要额外安装Microsoft Visual C++。
如果先安装VC,后安装UG,则在VC新建工程选项里会自动添加UG/OPEN AppWizard;否则,如果先安装UG,再安装VC则需手动将"
...UGS160UGOPEN"下的UgOpen.awx拷贝到"D:Microsoft Visual StudioCommonMSDev98BinIDE"下,在VC的IDE中添加UG/OPEN开发向导。
第一个UG/OPEN程序 "hello world"
第一步:
利用刚才教的方法,新建工程hello,进入如下界面。
第一个问题是要你确定建立程序的类型,是内部还是外挂式的,外挂式无法利用UG的交互界面;第二个问题是UG的版本;第三个是使用的语言,C或C++,USE/OPEN ++ CALLS意思是是否使用USE/OPEN++回调函数
第二步:
第一个问题确定激活应用程序的方法。
第二个是卸载程序的方法。
Finish,此时框架创建完成。生成hello.cpp和hellp.h两个文件,还有ufsta( char *param, int *returnCode, int rlen )、ufusr_ask_unload( void )函数,还有一个PrintErrorMessage( int errorCode )错误处理函数。其中ufsta( )是UG的入口函数,主要工作在此完成。
下面简单介绍一下程序
/*下面三个为UG/OPEN自己的头文件,是最基本的头文件,这个由向导自动添加,针对不同的开发,加入不同的头文件,也就是不同的API 函数库*/
#include
#include
#include
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
# include
using std::ostrstream;
using std::endl;
using std::ends;
#else
# include
#endif
#include
#include "hello.h"
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
/* Initialize the API environment */
int errorCode = UF_initialize(); /////初始化UG环境
if ( 0 == errorCode )
/* TODO: Add your application code here */
/*添加的UG OPEN API函数,也可在此添加自定义函数,然后在入口函数外定义,注意必须设定好VC中的开发环境,有关设定见附件*/
uc1601("hello world!",1);
/* Terminate the API environment */
errorCode = UF_terminate(); ////退出UG环境
/* Print out any error messages */
PrintErrorMessage( errorCode );
将程序编译好,利用UG FILE->Execute UG/OPEN->user function,运行刚才编译通过的DLL文件,就可看到结果了。
附件为开发环境设定和入门材料
涉及到UG开发问题的文件路径有以下这些,大家可以根据里面的内容好好熟悉一下:
1、ug open 库文件及一些不错的例子
UGS160\ugopen
2、ug open puls puls 库文件及例子
UGS160\ugopenpp
3、UG系统设定
UGS160\ugII
4、UG菜单和工具条
D:UGS160UGIImenus
5、存放开发程序
UGS160UGALLIANCE
6、UG OPEN开发文档,内有较详细的函数说明,是主要参考资料。
UGS160UGDOCHTML_FILES\ugopen_doc
7、UG OPEN++开发文档
UGS160UGDOCHTML_FILES\ugopen++
8、UISTYLER开发文档
UGS160UGDOCHTML_FILES\uistyler.chm
下面讲讲如何用UISTYLER制作界面,以及如何提取和保存相应的数据~
如图有如下界面~开发形式有些象VB或DEPHI,但比其烦琐不方便,相对VC而言则较简单~
如下图的dialog是UG自带的例子,在~UGS160UGOPEN下可找到~
关于控件的一些属性,在这里就不具体详谈了,大家可在UISTYLER开发文档 (UGS160UGDOCHTML_FILES\uistyler.chm )中找到详细说明~唯一要提一点的是,并不是所有的属性都是可以在程序中设定它的值的,也就是说有些属性的值只能读,不能写~
我们主要介绍UISTYLER的属性设定对话框~当选定如上图界面2区域中最上面的dialog-demo时,3区域为三个page~为方便起见,只介绍比较重要的地方~
第一个page中"prefix name "为后面生成的所有控件的前缀,"launch dialog from "为对话框的加载方式;"Navigation Buttons"为对话框的样式
第二个page控制能否进行选择、选择方式和选择范围;
第三个page为响应函数,其中constructor_cb为对话框的初始化函数,destructor_cb为对话框的卸载函数,有点类似C++中的构造函数和析构函数
当选定如上图界面2区域中的一个控件时,区域3随控件类型不同而变化~
attributes中的Identifier为唯一的标识符;Attachments控制控件与相邻的上、左、右控件的位置关系;Callbacks为响应函数或回调函数,(注意:如果控件动作需要生成新的dialog,则将Create dialog选上,也可在程序中修改~)
将所有需要动作的控件回调函数或属性设定好了后,特别是那些不能动态设定的完成后,保存,UG会生成*.dlg,*.c,*.h三个文件~其中后两个是我们编程所需要的~
*.h文件是对话框的声明文件
//////////////
声明格式为
#define 某类型控件变量 ("控件标识")
#define DEMO_SELECT_LABEL ("SELECT_LABEL")
#define DEMO_SEP_1 ("SEP_1")
、、、
、、、
////////下面为总控件数
#define DEMO_DIALOG_OBJECT_COUNT ( 18 )
//////下面为对话框的响应函数和回调函数声明
int DEMO_constructor_cb ( int dialog_id,
void * client_data,
UF_STYLER_item_value_type_p_t callback_data);
、、、、
、、、、
现在用VC中的UG/OPEN AppWizard建立一个工程Test;将*.c和*.h包含到工程中,其中*.c为对话框的模版文件,也可直接copy到Test.cpp下~
1、首先介绍一下*.c中的关键内容
/*
响应函数总数,添加或删除了函数时,注意要修改这个值
*/
#define DEMO_CB_COUNT ( 10 + 1 ) /* Add 1 for the terminator */
/*
函数声明,注意如果想让控件动作激活另一个dialog,则将第三个参数由"0"改为"1"
*/
static UF_STYLER_callback_info_t DEMO_cbs[DEMO_CB_COUNT] =
UF_STYLER_DIALOG_INDEX, UF_STYLER_CONSTRUCTOR_CB , 0, DEMO_constructor_cb,
UF_STYLER_DIALOG_INDEX, UF_STYLER_DESTRUCTOR_CB , 0, DEMO_destructor_cb,
UF_STYLER_DIALOG_INDEX, UF_STYLER_OK_CB , 0, DEMO_ok_callback,
UF_STYLER_DIALOG_INDEX, UF_STYLER_BACK_CB , 0, DEMO_back_cb,
DEMO_FILTER_TOGGLE , UF_STYLER_VALUE_CHANGED_CB, 0, DEMO_filter_toggle_callback,
DEMO_ADD_PUSH_BUTTON , UF_STYLER_ACTIVATE_CB , 0, DEMO_add_activate_cb,
DEMO_NEXT_ACTION , UF_STYLER_ACTIVATE_CB , 0, DEMO_next_cb,
DEMO_BUTTON_LAYOUT , UF_STYLER_ACTIVATE_CB , 0, DEMO_blo_6_act_cb,
DEMO_EDGES_RADIO_BOX , UF_STYLER_VALUE_CHANGED_CB, 0, DEMO_edges_radio_vc_cb,
DEMO_FIELDS_OPTIONS , UF_STYLER_ACTIVATE_CB , 0, DEMO_fields_options_act_cb,
UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0
;
/*
加载dialog的两种方式,剩下的就是具体的响应函数和回调函数的定义
*/
extern void ufsta (char *param, int *retcode, int rlen)
extern void (char *param, int *retcode, int rlen)
2、根据选择的工程方式,添加creat dialog的函数
例如,可用
extern void (char *param, int *retcode, int rlen) 函数中的内容完全覆盖
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )中的内容,当然return就不要了,还有其他的函数变量声明必须在入口函数前。
3、在消息响应函数中添加相应代码,这是主要工作了,要熟悉ug open API才行~
4、最后将工程编译,生成test.dll文件。将*.dlg拷贝到~UGS160UGALLIANCEsiteapplication下,然后打开UG,打开或新建文件后,用file->Execute UG/OPEN->user function调用test.dll,就可调入自己设定的对话框。
示例工程附件
UG16的版本,WIN2000的系统,VC6。0,不同版本可能要重新编译一下
1、控件属性的设定
UF_STYLER_item_value_type_t list_data; ////////声明控件变量类型
char * strings[] = "list item #1",
"list item #2",
"list item #3",
"list item #4";
///////////下面语句的含义,是对item_id控件的item_attr属性设定新数据,数据为string数组(以指针地址给出),4个字符串,控件所在dialog为dialog_id,最后用UF_STYLER_set_value ()设定。
list_data.item_id = DEMO_MULTI_LIST;
list_data.item_attr = UF_STYLER_SUBITEM_VALUES;
list_data.count = 4;
list_data.indicator = UF_STYLER_STRING_PTR_VALUE;
list_data.value.strings = strings;
if ( UF_CALL ( UF_STYLER_set_value ( dialog_id, &list_data ) ) )
return (UF_UI_CB_CONTINUE_DIALOG);
2、控件属性的读取
和上面类似,最后用UF_STYLER_ask_value()取出控件的某一属性值或状态
UF_STYLER_item_value_type_t sel_data;
/* Get the selection structure from the dialog.*/
sel_data.item_id = UF_STYLER_DIALOG_INDEX;
sel_data.item_attr = UF_STYLER_SELECTION;
if ( UF_CALL ( UF_STYLER_ask_value( dialog_id, &sel_data ) ) )
return (UF_UI_CB_CONTINUE_DIALOG);
nx2的一些安装上的文件与这有一点不同。
以上是关于UG二次开发与数据库应用基础与典型范例的目录的主要内容,如果未能解决你的问题,请参考以下文章
UG NX二次开发(C#)-曲线-用AssociativeLineBuilder创建智能直线
UG NX二次开发(C#)-曲线-用AssociativeLineBuilder创建智能直线