|
日志
( {% U' L+ v# ~3 B7 K" G8 m分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表
. m4 f( S& N3 ^) u) p/ Y微机平台的ug二次开发技巧 5 A b) ]" G" Q; U M# T4 h& y/ A
编辑 | 删除 | 权限设置 | 更多▼ 设置置顶+ R2 z0 U( T) M+ y
& n. A' ^: x% r0 s# N" M推荐日志
! f9 ~" X8 R$ C7 E& R. b e % F2 w h" y7 ?5 D7 q% |0 @: p
转到私密记事本9 i# u# h! t) k
严冰 发表于2009年05月27日 16:22 阅读(6) 评论(0)
O$ [! P0 f* }* Y分类: 个人日记 权限: 公开 ( o; f+ I4 `+ H) B
& h* w- Z& Q2 [, K8 u
% i2 I% a6 o5 C) r- V1 B本文叙述如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6.0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。7 } |4 W3 j) `: v- F
UG/Open通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。其目的是为了计算机集成应用,实现数据共享。它具有开放的体系结构。: [- F* R" F W" ]( W5 l
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技术并使之成为应用可能。7 g8 V w4 `& e+ g+ N+ U
UG/Open API是一个允许程序访问并影响UG对象模型的程序集,并同时提供一个UG所共容的编译和联接程序的方式。它支持C/C++语言,头文件(header files)支持ANSI C。在UG软件系统中相关的还有:UG/Open GRIP(/NC), UG/Open MenuScript, UG/Open IMAN ITK和Parasolid。
# f$ y, A2 D5 c: ?, g UG/Open API执行许可证:开发运行一个UG/Open API程序需有UG/Open开发许可证和执行许可证,用户通过UF_initialize()来访问并通过UF_terminate()来返还这些许可证。
1 G/ ?/ L) z \( `: r, i 例程和UG/Open API头文件在用户应用平台ug安装目录下的ugopen目录里,Windows NT系统是%UGII_BASE_DIR%\ugopen,用户可以访问并利用这些程序和文件。
% ]( A6 N* z# P7 \ 一、UG/Open API在Windows NT操作系统里的安装
& |1 A2 f& v! D3 H 1.UG(V14.0)要求C编译器版本为Microsoft Visual C++V5.0以上,本文所述为VC++6.0版本。
+ V* J- Z" n% Y w4 y- x \ 2.定义环境变量(environment variables),定义方法:开始-设置-控制面板-系统,在“系统特性”框里点击“环境”栏,在“用户变量”里即可设置。7 y4 u, h, v* X. M5 ]2 @
必需的环境变量:UGII_USERFCN,该变量指向UG/Open API库函数所在的目录。* e, k" N/ o% o: S) N5 y
其它的环境变量,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(命令表)。3 T8 z, o! K9 C- G5 A) @
结论,在用户变量里定义:. e' t1 d# B9 r3 j1 h7 [
UGII_USERFCN C:\ug\Eds140\Ugopen(也可在ugii_env文件中定义)
, h! A$ U% [8 \7 t# }* M$ [. ] EXCEEDHOME C:.\ug\exceed
4 w, r5 Y& P% S1 [ EXCEEDLIBS C:\ug\exceed\xdk
9 p2 H3 X$ {7 ~5 r [2 u INCLUDE D:\App\VisualStudio\VC98\Include
$ p6 n7 Q4 _, m& G1 g" A ^ LIB C:\ug\Eds140\Ugopen\ugraf.lib;( O- p" i2 o- o' a" W
C:\ug\Eds140\Ugopen\uguser.lib;6 n6 `( W/ {- d$ l' a7 L3 R
D:\App\VisualStudio\VC98\Lib: y- G3 z, D: P5 }
PATH C:\ug\Eds140\Ugii\og1;C:\ug\exceed;2 d6 D- k- r) I8 i% q
D:\App\VisualStudio\VC98\Bin;% N. p, }! Y" E( D
C:\ug\Eds140\Ugii
|! `6 c; I2 ^! @% |5 x1 z/ s& J 2.在VC++里创建一个UG/Open API Project7 q) T7 M+ T- p' e. Z$ ~
(1)进入Microsoft Visual C++。. }2 f; y3 t3 X# i$ h! q) X ?
(2)创建Project: File→New→Projects,对于一个Internal UG/Open API程序选Win32 D-Link Library(对于一个Extermal UG/Open API程序选Win32 Console Application);并输入Project name。$ @1 C, N4 w- _( G" Y
(3)Configure(配置)Project Settings
5 q. K! d1 N& d s 选Project→Settings→Debug,“Category”栏是General,在“Executable for debug session”栏内输入:C:\ug\eds140\Ugii\ugraf.exe(这是为调试Internal UG/Open API program而设置的参量);在“Program arguments :”栏内输入ogl auto。
$ K0 |( ~$ o& X9 s5 n 选Project→Settings→C/C++,在“Category:”内选Code Generation;在“Use Run-Time library:”内选Multithreaded DLL。1 J @+ Y$ d+ k2 I- K! T3 T8 |& }
选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)。8 ?8 i4 l) {3 x6 b, I! s
(4)Configure(配置)Tools Settings
0 R% r" s1 W' x" a3 _* h1 ?& t- } 选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。结论是依次输入:) f& z. U/ i8 H1 m
C:\ug\Eds140\Ugopen& L: ^+ }8 j z* L! b; k6 e9 S9 [
C:\ug\exceed\xdk\include9 }& h5 r! p+ ]( c
D:\App\VisualStudio\VC98\Include4 x6 N9 u# G( N& H5 D8 F& X* u
C:\ug\exceed\LIB
* p3 w) B) r2 a9 p+ D# f D:\App\VisualStudio\VC98\Mfc\include* T6 p8 d8 E6 m8 C0 H ]
D:\App\VisualStudio\VC98\Atl\include
4 d+ ?: R' R7 L/ \3 @. ~ C:\ug\Eds140\Ugii\ogl! s8 @2 l* _$ l! r- o
C:\ug\Eds140\Ugii\xwi& c; Z# {& w2 ^5 ]# S$ J
D:\App\VisualStudio\VintDev98\bin
l& [+ J: ?, d+ d6 W: Y 选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。结论是依次输入:
& `/ x! D. y# z% Z) u" A# G C:\ug\Eds140\Ugopen; ^& _: L7 Z8 L! R) {, |* T
C:\ug\exceed\xdk\lib
, p- p8 K6 L+ x9 z' f, v+ _1 n D:\App\VisualStudio\VintDev98\bin
7 J$ `$ @, M7 ~7 |4 O4 u. U C:\ug\exceed- c2 I ~0 U, r9 I( S, \; G; l% [
D:\App\VisualStudio\VC98\Lib D:\App\VisualStudio\VC98\Mfc\lib3 K2 W" i7 ?5 d
C:\ug\Eds140\Ugii
* p* A) g9 V7 j* q- O1 G2 w1 O C:\ug\exceed\LIB
; V9 @2 `7 a Y& \ (5)Add Files to Project
E# \: {" `2 o- d/ }) I 为把源文件(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里。
4 W6 A. W r0 l- C (6)Compile and Link:Compile- →Build- →Execute。3 I6 m# w, ~" T( t* @; Y6 [
注:为检验上述工作是否正确,可以调出并编译运行%UGII_BASE_DIR%\ugopen中的ucintr.c。6 n, F- d/ X+ e
3.UG/Open API程序
& ~- w8 p1 @* q9 d (1)可执行文件(程序)类型
5 k3 ?7 j- f& U" |" L5 ~( E) \, o 从UG/Open API里使用函数来编程可以有两种不同的模式(mode):Internal和External,这里模式是指产生的可执行代码的类型,即是一个共享库(Internal)或是一个独立的可执行代码(External)。
/ e! u9 d3 v! o* B- L 1)Internal UG/Open API的一般形式: u: y4 j8 T$ X# g5 t( i8 v
#include //Prototypes exist in this file.
# g6 x Q8 N0 t( L7 t- } //Additional include files as required." g3 ~3 k2 F' D9 ?3 D' l/ d4 v
Void ufusr(char *param, int *retcod, int parm_len)% O& d1 x; ]( ]& ?# s/ I
{ variable declarations, D% [; d, y$ X+ M j
UF_initialize();
, S) m' c1 @* r3 V* X Function body3 T. Z0 A! Q) k! |2 S" Q
UF_terminate();
2 z% @" M( v4 M" E, X/ H }
; ~5 v$ E' y& I1 o- j, I/ I2 o Internal UG/Open API使用ufusr函数(主函数)作为程序运行的入口点,它可以看作是用户写的UG子程序/子函数。执行程序时,UG将程序装入内存并搜索ufusr, 程序从这里开始执行,执行完后由一个return语句返回UG。
- D* L) J- Z) s B( o' D 2)Extermal UG/Open API的一般形式:
$ k. n. F; O& X #include 5 F; Z; |- P' K& p: H# k4 E! d8 a1 p
//Additional include files as required.
+ @8 V1 u+ Z7 s* _ Int main(int argc, char **argv)女
6 @% y! e( p3 Q" w- C( e4 z { variable declarations+ @3 [6 a' C0 N
UF_initialize();; R" e/ t8 l2 H
Function body
u: @) [4 X8 m. f2 p( { UF_terminate();# S4 P/ R& `5 o. M/ u
}
6 K0 ]7 z# j) D$ t9 ?' B& D 输入主函数的参数(arguments)是标准的C参数:argc- argument count, argv-字符串指针。
9 l9 k' [8 k% x' b! T: e3 @, J8 m8 h (2)几点说明
: I( N9 W# R% L/ L, B0 R 1)头文件(*.h file) 在程序中除了包含标准的ANSI C头文件外,还应包含所 使用的UG/Open API程序的头文件,在这些特定的头文件里描述了UG所称的“Types 和Symbols”,即用来定义结构体(structures)、枚举体(enums)、共用体(unions)和指针(pointers)的“类(type)”和用来定义常量(constants)的“串(string)”。, a) K- [# y! f* @) I6 Z* n
2)程序的运行 一般地,可以从在UG图形界面里来运行,另外地可以从UG/Open MenuScript、User Exits、User Tools和UG/Open GRIP里调用并运行。
8 Y- r" l5 Z1 c* `# @! V k, ? 3)函数(Functions)UG/Open API提供的函数形式和ANSI/ISO C标准相一致,即<返回数据类型> <函数名> (变量表)+ ^2 n! @0 g9 C7 k! j
(3)UG对象模型(UG Object Model)( Y5 s* \, s& N, A& r
UG使用许多方法为其对象建立模型,根据对象的不同用途及其相互关系,UG对象可以是面向设计(design-oriented)、面向工程图(drafting-oriented)、面向分析(analysis-oriented)或者面向制造(manufacturing-oriented)的对象。UG开发人员编程的过程实际上就是访问、修改、植入UG对象从而建立起UG对象模型的过程。7 V' K& X7 a2 `9 c- @+ U3 C
每一个UG对象都是通过其唯一的标识符(identifier)(如tag)来引用,一个标示符的实际物理表示是一个无符号型整型变量(unsigned integer)。tag 在UG/Open API头文件uf_defs.h里被定义,它仅仅是把一个UG对象载入内存时的标示符。
( g ?# s: A' P1 \* |5 i3 M2 S分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表 相关搜索词: UG API LIB 变量 eXceed 本文链接: 复制 签名档
/ Q: Y2 @, `7 ^6 M+ |在这个世界上,只有真正快乐的男人,才能带给女人真正的快乐。
+ o9 m- n& z# y评论列表想第一个看到日志抢沙发?
- e+ s8 i' u' J& K6 W$ d% _6 [2 O腾讯公司温馨提示:当前已出现通过网络、电话和短信等途径假冒中奖网站、“400”“0898”开头电话、宣称低价购物、购房退税等手段诈骗,请您提高警惕,慎防遭骗。识别更多网络骗术,请点击:腾讯反骗术帮助中心。发表评论取消批量删除批量删除全选删除: P% t5 l8 u6 Y/ O
p0 r/ K: S7 h4 q% f7 H
$ `* L/ p. Y6 @- G" s( Q7 d使用签名档匿名评论发表评论( Y2 R( v' @5 p3 E) ~
系统正在进行升级维护中,暂不支持日志评论,敬请谅解!
2 H( }; \! w* {5 S/ w- _点击这里发表评论,如果您要显示签名档,请点击“附加功能”并勾选“使用签名档”& h& k- b0 i& n$ K( o
日志评论推出新附加功能!评论可以通知所有好友了。您还可以进行设置,保护个人隐私。
1 |/ {% C+ b. Z6 q& x附加功能 $ G# C# S1 N1 x$ g& C
使用签名档 道具:请选择道具隐身草彩虹炫天使之爱 悄悄话 | (以小纸条形式发送) 查看今日免费发送数量
3 X! I( r- Q# k! X; W3 z/ o% n& a( M- O: {* P% s, [6 v# I
通知所有好友(该评论可显示在所有好友的好友动态里)设置
, ~. x) ]9 j, ?- b$ u4 T: M% W0 S1 W1 L% ^: R0 h6 i; _, m
马上开通空间,体验权限日志、私密记事本等全新日志体验!提交$ o+ c5 s* j" \4 P8 B F# `! X
上一篇 下一篇 返回日志列表 |
|