数控中国论坛

 

 

如果您绑定了QQ,请点击登陆

发送抖动,快速登陆

斯沃数控仿真软件

数控机床网上市场
搜索
数控中国论坛 数控论坛 『UGS技术、教程、资料交流区』 微机平台的UG二次开发技巧
查看: 480|回复: 0
go

微机平台的UG二次开发技巧

Rank: 7Rank: 7Rank: 7

快速分享:收藏到QQ书签转播到腾讯微博分享到QQ空间分享到新浪微博分享到白社会分享到豆瓣分享到网易微博添加到百度搜藏
发表于 2007-4-22 10:04 |显示全部帖子
<!--插入广告JS代码--><SPAN class=text2 style="LINE-HEIGHT: 25px">&nbsp;&nbsp;&nbsp;本文叙述如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6.0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。<BR>&nbsp;&nbsp;&nbsp;UG/Open通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。其目的是为了计算机集成应用,实现数据共享。它具有开放的体系结构。<BR>&nbsp;&nbsp;&nbsp;UG/Open提供了一种能够完成下列工作的应用软件和工具:1)通过UG/Open API或UG/Open GRIP提供了与UG对象模型(UG Object Model)的接口;2)生成和管理用户自定义对象(User Defined Objects或Custom Objects),包括管理它们与UG对象的相关性;3)提供反映第三方应用软件的UG图形界面本地化方法;4)利用相关产品如IMAN ITK和Parasolid;5)利用和集成新的UG/Open技术并使之成为应用可能。<BR>&nbsp;&nbsp;&nbsp;UG/Open API是一个允许程序访问并影响UG对象模型的程序集,并同时提供一个UG所共容的编译和联接程序的方式。它支持C/C++语言,头文件(header files)支持ANSI C。在UG软件系统中相关的还有:UG/Open GRIP(/NC), UG/Open MenuScript, UG/Open IMAN ITK和Parasolid。<BR>&nbsp;&nbsp;&nbsp;UG/Open API执行许可证:开发运行一个UG/Open API程序需有UG/Open开发许可证和执行许可证,用户通过UF_initialize()来访问并通过UF_terminate()来返还这些许可证。<BR>&nbsp;&nbsp;&nbsp;例程和UG/Open API头文件在用户应用平台UG安装目录下的ugopen目录里,Windows NT系统是%UGII_BASE_DIR%\ugopen,用户可以访问并利用这些程序和文件。<BR>&nbsp;&nbsp;&nbsp;一、UG/Open API在Windows NT操作系统里的安装<BR>&nbsp;&nbsp;&nbsp;1.UG(V14.0)要求C编译器版本为Microsoft Visual C++V5.0以上,本文所述为VC++6.0版本。<BR>&nbsp;&nbsp;&nbsp;2.定义环境变量(environment variables),定义方法:开始-设置-控制面板-系统,在“系统特性”框里点击“环境”栏,在“用户变量”里即可设置。<BR>&nbsp;&nbsp;&nbsp;必需的环境变量:UGII_USERFCN,该变量指向UG/Open API库函数所在的目录。<BR>&nbsp;&nbsp;&nbsp;其它的环境变量,1)变量:EXCEEDHOME,若欲使用包含UG/Open API Motif程序的prototypes的uf_ui_xt.h头文件时必须定义;2)变量:EXCEEDLIBS, 在uflink连接时指定应包含哪个eXceed/NT-XDK库函数时需定义;3)变量:INCLUDE,使C预处理器查找头文件(.h files);4)变量:LIB,它使C连接器查找对象库函数并输入库函数;5)变量:PATH,它使系统查找可执行文件、DLLs(Dynamic Link Library,动态连接库函数)和Scripts(命令表)。<BR>&nbsp;&nbsp;&nbsp;结论,在用户变量里定义:<BR>&nbsp;&nbsp;&nbsp;UGII_USERFCN C:\ug\Eds140\Ugopen(也可在ugii_env文件中定义)<BR>&nbsp;&nbsp;&nbsp;EXCEEDHOME C:.\ug\exceed<BR>&nbsp;&nbsp;&nbsp;EXCEEDLIBS C:\ug\exceed\xdk<BR>&nbsp;&nbsp;&nbsp;INCLUDE D:\App\VisualStudio\VC98\Include<BR>&nbsp;&nbsp;&nbsp;LIB C:\ug\Eds140\Ugopen\ugraf.lib;<BR>&nbsp;&nbsp;&nbsp;C:\ug\Eds140\Ugopen\uguser.lib;<BR>&nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VC98\Lib<BR>&nbsp;&nbsp;&nbspATH C:\ug\Eds140\Ugii\og1;C:\ug\exceed;<BR>&nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VC98\Bin;<BR>&nbsp;&nbsp;&nbsp;C:\ug\Eds140\Ugii<BR>&nbsp;&nbsp;&nbsp;2.在VC++里创建一个UG/Open API Project<BR>&nbsp;&nbsp;&nbsp;(1)进入Microsoft Visual C++。<BR>&nbsp;&nbsp;&nbsp;(2)创建Project: File→New→Projects,对于一个Internal UG/Open API程序选Win32 D-Link Library(对于一个Extermal UG/Open API程序选Win32 Console Application);并输入Project name。<BR>&nbsp;&nbsp;&nbsp;(3)Configure(配置)Project Settings<BR>&nbsp;&nbsp;&nbsp;选Project→Settings→Debug,“Category”栏是General,在“Executable for debug session”栏内输入:C:\ug\eds140\Ugii\ugraf.exe(这是为调试Internal UG/Open API program而设置的参量);在“Program arguments :”栏内输入ogl auto。<BR>&nbsp;&nbsp;&nbsp;选Project→Settings→C/C++,在“Category:”内选Code Generation;在“Use Run-Time library:”内选Multithreaded DLL。<BR>&nbsp;&nbsp;&nbsp;选Project→Settings→Link,“Category”栏是“general”;在“Output file name:”文本框内若无缺省输出文件名就指明;在“Object/library modules:”栏末加上ugraf.lib Xt.lib Xlibcon.lib Xlib.lib(程序为Internal UG/Open API with direct X/Motif references时)。(若程序为External UG/Open API 则加上Uguser.lib;若为Internal UG/Open API without direct X/Motif references则加上ugraf.lib)。<BR>&nbsp;&nbsp;&nbsp;(4)Configure(配置)Tools Settings<BR>&nbsp;&nbsp;&nbsp;选Tools→Options- →Directories,在“show directories for:”内选Include files,在“Divectories:”内输入C:\ug\eds140\ugopen;若是Internal UG/Open API project,因要使用UG附带的支撑软件Hummingbird Exceed的include files,故再输入C:\ug\exceed\xdk\include。结论是依次输入:<BR>&nbsp;&nbsp;&nbsp;C:\ug\Eds140\Ugopen<BR>&nbsp;&nbsp;&nbsp;C:\ug\exceed\xdk\include<BR>&nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VC98\Include<BR>&nbsp;&nbsp;&nbsp;C:\ug\exceed\LIB<BR>&nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VC98\Mfc\include<BR>&nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VC98\Atl\include<BR>&nbsp;&nbsp;&nbsp;C:\ug\Eds140\Ugii\ogl<BR>&nbsp;&nbsp;&nbsp;C:\ug\Eds140\Ugii\xwi<BR>&nbsp;&nbsp;&nbsp;<FONT color=#0000ff>D:\App\VisualStudio\VintDev98\bin</FONT></A><BR>&nbsp;&nbsp;&nbsp; 选Tools→Options- →Directories,在“show directories for:”内选Library files,在“Directories:”内输入C:\ug\eds140\ugopen,若是Internal UG/Open API project,因要使用UG附带的支撑软件Hummingbird Exceed 的库函数,故再输入C:\ug\exceed\xdk\lib。结论是依次输入:<BR>&nbsp;&nbsp;&nbsp;C:\ug\Eds140\Ugopen<BR>&nbsp;&nbsp;&nbsp;C:\ug\exceed\xdk\lib<BR>&nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VintDev98\bin<BR>&nbsp;&nbsp;&nbsp;C:\ug\exceed<BR>&nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VC98\Lib &nbsp;&nbsp;&nbsp;D:\App\VisualStudio\VC98\Mfc\lib<BR>&nbsp;&nbsp;&nbsp;C:\ug\Eds140\Ugii<BR>&nbsp;&nbsp;&nbsp;C:\ug\exceed\LIB<BR>&nbsp;&nbsp;&nbsp;(5)Add Files to Project<BR>&nbsp;&nbsp;&nbsp;为把源文件(source file)加到Project里,选Project→Add To Project→New,选文件类型(如C++ Source File),输入File Name,这样就可以编写源文件;或者选File→New,选文件类型(如C++ Source File),输入File Name,编写完源文件后,选Project→Add To Project→Files将该文件或其它已存的源文件加到Project里。<BR>&nbsp;&nbsp;&nbsp; (6)Compile and Link:Compile- →Build- →Execute。<BR>&nbsp;&nbsp;&nbsp;注:为检验上述工作是否正确,可以调出并编译运行%UGII_BASE_DIR%\ugopen中的ucintr.c。<BR>&nbsp;&nbsp;&nbsp;3.UG/Open API程序<BR>&nbsp;&nbsp;&nbsp;(1)可执行文件(程序)类型<BR>&nbsp;&nbsp;&nbsp;从UG/Open API里使用函数来编程可以有两种不同的模式(mode):Internal和External,这里模式是指产生的可执行代码的类型,即是一个共享库(Internal)或是一个独立的可执行代码(External)。<BR>&nbsp;&nbsp;&nbsp;1)Internal UG/Open API的一般形式:<BR>&nbsp;&nbsp;&nbsp;#include <UF.H>//Prototypes exist in this file.<BR>&nbsp;&nbsp;&nbsp;//Additional include files as required.<BR>&nbsp;&nbsp;&nbsp;Void ufusr(char *param, int *retcod, int parm_len)<BR>&nbsp;&nbsp;&nbsp;{ variable declarations<BR>&nbsp;&nbsp;&nbsp;UF_initialize();<BR>&nbsp;&nbsp;&nbsp;Function body<BR>&nbsp;&nbsp;&nbsp;UF_terminate();<BR>&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp; Internal UG/Open API使用ufusr函数(主函数)作为程序运行的入口点,它可以看作是用户写的UG子程序/子函数。执行程序时,UG将程序装入内存并搜索ufusr, 程序从这里开始执行,执行完后由一个return语句返回UG。<BR>&nbsp;&nbsp;&nbsp; 2)Extermal UG/Open API的一般形式:<BR>&nbsp;&nbsp;&nbsp;#include <UF.H><BR>&nbsp;&nbsp;&nbsp;//Additional include files as required.<BR>&nbsp;&nbsp;&nbsp;Int main(int argc, char **argv)女<BR>&nbsp;&nbsp;&nbsp;{ variable declarations<BR>&nbsp;&nbsp;&nbsp;UF_initialize();<BR>&nbsp;&nbsp;&nbsp;Function body<BR>&nbsp;&nbsp;&nbsp;UF_terminate();<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp; 输入主函数的参数(arguments)是标准的C参数:argc- argument count, argv-字符串指针。<BR>&nbsp;&nbsp;&nbsp; (2)几点说明<BR>&nbsp;&nbsp;&nbsp; 1)头文件(*.h file) 在程序中除了包含标准的ANSI C头文件外,还应包含所 使用的UG/Open API程序的头文件,在这些特定的头文件里描述了UG所称的“Types 和Symbols”,即用来定义结构体(structures)、枚举体(enums)、共用体(unions)和指针(pointers)的“类(type)”和用来定义常量(constants)的“串(string)”。<BR>&nbsp;&nbsp;&nbsp; 2)程序的运行 一般地,可以从在UG图形界面里来运行,另外地可以从UG/Open MenuScript、User Exits、User Tools和UG/Open GRIP里调用并运行。<BR>&nbsp;&nbsp;&nbsp; 3)函数(Functions)UG/Open API提供的函数形式和ANSI/ISO C标准相一致,即&lt;返回数据类型&gt; &lt;函数名&gt; (变量表)<BR>&nbsp;&nbsp;&nbsp; (3)UG对象模型(UG Object Model)<BR>&nbsp;&nbsp;&nbsp;UG使用许多方法为其对象建立模型,根据对象的不同用途及其相互关系,UG对象可以是面向设计(design-oriented)、面向工程图(drafting-oriented)、面向分析(analysis-oriented)或者面向制造(manufacturing-oriented)的对象。UG开发人员编程的过程实际上就是访问、修改、植入UG对象从而建立起UG对象模型的过程。<BR>&nbsp;&nbsp;&nbsp; 每一个UG对象都是通过其唯一的标识符(identifier)(如tag)来引用,一个标示符的实际物理表示是一个无符号型整型变量(unsigned integer)。tag 在UG/Open API头文件uf_defs.h里被定义,它仅仅是把一个UG对象载入内存时的标示符。<BR></SPAN><!--分页开始-->      <!--分页结束-->

帖子永久地址: 

站长推荐 关闭


订阅论坛邮件列表,随时留意论坛最新资料、最热讨论、最新活动

论坛会每天通过整理,把论坛的最新资料、最热门讨论话题、最新的活动和求助、招聘、供求信息,通过邮件列表的方式发送到会员订阅的EMAIL里,推荐使用QQ邮箱! 凡是订阅论坛邮件列表的会员,请回帖留下你的EMAIL,我们将给你10个学习卷的奖励!!! 第一期已经发布,请各位订阅的会员留意!留个截图做纪念吧


查看
上海友越电气

Archiver|数控中国 ( 浙ICP备05040642号 )

GMT+8, 2012-2-8 22:56

Powered by Discuz! X1.5 | Theme By Ming@DSU Team

© 2001-2010 Comsenz Inc.