青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2235|回复: 0

[教程] 二次开发

[复制链接]
发表于 2010-1-16 22:05 | 显示全部楼层 |阅读模式
日志- ~7 q7 r/ }# o+ D, ^- u
分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表 : e0 k6 L9 d1 u* H
微机平台的ug二次开发技巧 7 v% P" C1 E+ i
编辑 | 删除 | 权限设置 | 更多▼ 设置置顶- `: Q+ E1 d4 u6 H1 k0 T5 V0 R; h, h

  \( {2 P1 t- V# m' ^/ a- l推荐日志2 \& K1 w, X4 W2 `0 n
, q5 ?# w" j. G) N2 J/ t: F
转到私密记事本0 C6 @: S5 D% B5 J, b
严冰    发表于2009年05月27日 16:22 阅读(6) 评论(0) 9 X& w2 h5 o$ D5 r9 ]
分类: 个人日记 权限: 公开
7 p/ P6 d# l0 ^6 F2 Q; { 0 _* l; N+ E5 C  S4 `8 C& i: _/ g0 L

: U7 E9 O) e% ~% r! n% o本文叙述如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6.0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。
, _' b9 a8 I3 i( @* j; y   UG/Open通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。其目的是为了计算机集成应用,实现数据共享。它具有开放的体系结构。
: J7 X1 `! E& F5 k$ o+ ^   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技术并使之成为应用可能。0 H* L# l) p' ^8 ~! D1 F
   UG/Open API是一个允许程序访问并影响UG对象模型的程序集,并同时提供一个UG所共容的编译和联接程序的方式。它支持C/C++语言,头文件(header files)支持ANSI C。在UG软件系统中相关的还有:UG/Open GRIP(/NC), UG/Open MenuScript, UG/Open IMAN ITK和Parasolid。
7 y& p- A; f0 V' I5 `; V. L   UG/Open API执行许可证:开发运行一个UG/Open API程序需有UG/Open开发许可证和执行许可证,用户通过UF_initialize()来访问并通过UF_terminate()来返还这些许可证。. ^& E, ^( z+ _6 g, m
   例程和UG/Open API头文件在用户应用平台ug安装目录下的ugopen目录里,Windows NT系统是%UGII_BASE_DIR%\ugopen,用户可以访问并利用这些程序和文件。$ m) M% T% K- B) w5 k4 p
   一、UG/Open API在Windows NT操作系统里的安装, f3 |7 \1 B$ N  D) @
   1.UG(V14.0)要求C编译器版本为Microsoft Visual C++V5.0以上,本文所述为VC++6.0版本。; y' D( N5 i9 p6 ~
   2.定义环境变量(environment variables),定义方法:开始-设置-控制面板-系统,在“系统特性”框里点击“环境”栏,在“用户变量”里即可设置。: J; a1 P: g" P' W  |7 `5 r
   必需的环境变量:UGII_USERFCN,该变量指向UG/Open API库函数所在的目录。5 L+ k" r1 ?& O8 L2 l
   其它的环境变量,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(命令表)。' O% c5 b+ a% \3 }" o; s0 X- U; `
   结论,在用户变量里定义:
3 R, ]: h3 {! b8 k2 U   UGII_USERFCN C:\ug\Eds140\Ugopen(也可在ugii_env文件中定义)1 t$ ^4 ~& e5 W2 O4 _
   EXCEEDHOME C:.\ug\exceed
8 I+ a, @  C. t! t: K: l   EXCEEDLIBS C:\ug\exceed\xdk
- J/ l3 }% ?8 w  l4 \   INCLUDE D:\App\VisualStudio\VC98\Include
, e. u. S# K* _) p' s* `   LIB C:\ug\Eds140\Ugopen\ugraf.lib;1 ^; K# |! k5 u7 j" M( n
   C:\ug\Eds140\Ugopen\uguser.lib;
+ ~" ]- o9 o' D8 t) A   D:\App\VisualStudio\VC98\Lib
# D5 m$ M! \3 L, T   PATH C:\ug\Eds140\Ugii\og1;C:\ug\exceed;
. O' J3 A5 a" q" @2 A   D:\App\VisualStudio\VC98\Bin;% H  z& V, X' ]; S1 ~( v# C
   C:\ug\Eds140\Ugii
9 u0 Y: B) h3 t& b( e% s5 K) `   2.在VC++里创建一个UG/Open API Project
9 E& \7 u1 u# L  u8 i$ B' h) d   (1)进入Microsoft Visual C++。4 M5 K' F8 A; z- X8 X
   (2)创建Project: File→New→Projects,对于一个Internal UG/Open API程序选Win32 D-Link Library(对于一个Extermal UG/Open API程序选Win32 Console Application);并输入Project name。
7 |/ |0 x$ d# }   (3)Configure(配置)Project Settings
+ w' D& N7 K! K. K# l: W   选Project→Settings→Debug,“Category”栏是General,在“Executable for debug session”栏内输入:C:\ug\eds140\Ugii\ugraf.exe(这是为调试Internal UG/Open API program而设置的参量);在“Program arguments :”栏内输入ogl auto。1 O' S; [9 `' N7 z4 T$ n, Q3 x
   选Project→Settings→C/C++,在“Category:”内选Code Generation;在“Use Run-Time library:”内选Multithreaded DLL。
( u8 m; U. ~) R6 h8 M. A- I+ n" @   选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)。9 \$ Q1 a. H8 w: l
   (4)Configure(配置)Tools Settings! c! h- m7 \3 B  U, e3 j9 M: M1 g
   选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。结论是依次输入:9 d2 ?1 X. p+ g% J0 ]% ]9 A% h
   C:\ug\Eds140\Ugopen6 H5 n5 F( d6 F. _1 b
   C:\ug\exceed\xdk\include
+ E3 b7 w' @3 m2 ~) H' }   D:\App\VisualStudio\VC98\Include
$ M; v# ?6 G1 D' Z   C:\ug\exceed\LIB
( `  _( R# D. j) Z& @   D:\App\VisualStudio\VC98\Mfc\include3 }& D0 \* h; W5 g: A
   D:\App\VisualStudio\VC98\Atl\include, G6 ]2 C0 f: F+ k& F# z, p# d
   C:\ug\Eds140\Ugii\ogl2 j0 g# q$ N' m
   C:\ug\Eds140\Ugii\xwi
( K0 {5 y$ \6 y! I( v   D:\App\VisualStudio\VintDev98\bin
% b# k3 E* n' ^! [! Q    选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。结论是依次输入:3 q5 l% Q7 S/ j: b; ^! G
   C:\ug\Eds140\Ugopen
. h6 V. O6 D) f+ K" X+ r   C:\ug\exceed\xdk\lib
7 X* }" z8 @9 Q% d, F   D:\App\VisualStudio\VintDev98\bin
. t8 C+ g: r# g$ s- i! G   C:\ug\exceed
' ~$ Z7 G8 r, t) }   D:\App\VisualStudio\VC98\Lib    D:\App\VisualStudio\VC98\Mfc\lib
0 G; l7 ]( v+ \7 r- U- A, M: @8 [   C:\ug\Eds140\Ugii: B5 P2 u9 O; j8 r
   C:\ug\exceed\LIB4 d( Q+ a1 I1 c( o
   (5)Add Files to Project' K& x/ E. a, R! ~
   为把源文件(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里。
7 u1 F8 ?4 ^; G4 D" [7 k    (6)Compile and Link:Compile- →Build- →Execute。5 r5 V5 c& w+ }# |
   注:为检验上述工作是否正确,可以调出并编译运行%UGII_BASE_DIR%\ugopen中的ucintr.c。
& j( R5 H: Z  u3 n8 A$ |; `( N4 M- C   3.UG/Open API程序3 }/ I- l, S4 }4 Z6 y/ ?, g
   (1)可执行文件(程序)类型# u* @* V0 V0 Y
   从UG/Open API里使用函数来编程可以有两种不同的模式(mode):Internal和External,这里模式是指产生的可执行代码的类型,即是一个共享库(Internal)或是一个独立的可执行代码(External)。
. H9 g+ F4 \9 ?- H   1)Internal UG/Open API的一般形式:; v" B& o! R; z% w2 w# \
   #include //Prototypes exist in this file.: Z6 |# S- l) r0 H- R
   //Additional include files as required.
  g  l. d- j1 F9 j" }( Q- ~* a; P   Void ufusr(char *param, int *retcod, int parm_len)
$ }4 E/ X- i3 ?6 s% I   { variable declarations! I2 O5 A0 ~7 s( Z2 P$ b% n- ^" H: q( r
   UF_initialize();4 F5 k5 n6 M% G, R
   Function body. H1 K' {9 l% z0 |1 G
   UF_terminate();6 l& p7 }7 i$ `. h
   }
3 f+ W  y. c5 ]) _1 g  y* j) E    Internal UG/Open API使用ufusr函数(主函数)作为程序运行的入口点,它可以看作是用户写的UG子程序/子函数。执行程序时,UG将程序装入内存并搜索ufusr, 程序从这里开始执行,执行完后由一个return语句返回UG。6 B& l- y" o- t7 i- W* ], a4 B
    2)Extermal UG/Open API的一般形式:3 t8 X8 q6 z/ X
   #include
; O8 W4 T# Q2 V2 Q% Y, [   //Additional include files as required.% v. G( p7 }! Q& A( ~
   Int main(int argc, char **argv)女% }0 q% M2 f1 }; T% T
   { variable declarations# E# ^5 h0 G% Z: l0 z2 z9 O
   UF_initialize();
& U% ^% Y; J% C7 X   Function body
* a5 J. p& h( D7 Z   UF_terminate();# a" C5 z1 T. B& G) w$ [
   }/ C& s& X* B3 D8 H/ S3 q" [
    输入主函数的参数(arguments)是标准的C参数:argc- argument count, argv-字符串指针。1 P9 o$ k, S8 \# h5 k
    (2)几点说明
" {* Q; q9 i/ q" C7 F    1)头文件(*.h file) 在程序中除了包含标准的ANSI C头文件外,还应包含所 使用的UG/Open API程序的头文件,在这些特定的头文件里描述了UG所称的“Types 和Symbols”,即用来定义结构体(structures)、枚举体(enums)、共用体(unions)和指针(pointers)的“类(type)”和用来定义常量(constants)的“串(string)”。4 |2 n" ~7 V; T8 m$ Y1 c1 z" W
    2)程序的运行 一般地,可以从在UG图形界面里来运行,另外地可以从UG/Open MenuScript、User Exits、User Tools和UG/Open GRIP里调用并运行。4 g" G# z& q8 u. d
    3)函数(Functions)UG/Open API提供的函数形式和ANSI/ISO C标准相一致,即<返回数据类型> <函数名> (变量表)$ S/ w. }2 N  B3 f0 x/ x
    (3)UG对象模型(UG Object Model): Q4 g# o; d$ ^
   UG使用许多方法为其对象建立模型,根据对象的不同用途及其相互关系,UG对象可以是面向设计(design-oriented)、面向工程图(drafting-oriented)、面向分析(analysis-oriented)或者面向制造(manufacturing-oriented)的对象。UG开发人员编程的过程实际上就是访问、修改、植入UG对象从而建立起UG对象模型的过程。
$ q. i& f, \/ [    每一个UG对象都是通过其唯一的标识符(identifier)(如tag)来引用,一个标示符的实际物理表示是一个无符号型整型变量(unsigned integer)。tag 在UG/Open API头文件uf_defs.h里被定义,它仅仅是把一个UG对象载入内存时的标示符。   8 n' p* P, C& ]
分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表 相关搜索词: UG  API  LIB  变量  eXceed  本文链接: 复制 签名档
& I! _' a" j$ B+ R8 A+ V0 C) d- ?在这个世界上,只有真正快乐的男人,才能带给女人真正的快乐。  2 e7 [' D$ T, t* H
评论列表想第一个看到日志抢沙发?/ z& n1 y5 X  D
腾讯公司温馨提示:当前已出现通过网络、电话和短信等途径假冒中奖网站、“400”“0898”开头电话、宣称低价购物、购房退税等手段诈骗,请您提高警惕,慎防遭骗。识别更多网络骗术,请点击:腾讯反骗术帮助中心。发表评论取消批量删除批量删除全选删除5 @" G! T! |) R" ]* n
4 i/ i" h  }- w' L2 m' o
7 J! C4 h9 B1 }2 [, V
使用签名档匿名评论发表评论
  R2 U9 w2 B& w7 |* p+ N系统正在进行升级维护中,暂不支持日志评论,敬请谅解!3 V) C7 a& ?+ ~+ Z1 T
点击这里发表评论,如果您要显示签名档,请点击“附加功能”并勾选“使用签名档”" j% X0 c; M3 E( |) q8 U  k
日志评论推出新附加功能!评论可以通知所有好友了。您还可以进行设置,保护个人隐私。
3 t) E5 q0 B! q; k# E附加功能   
2 Z6 |5 m. k5 N使用签名档       道具:请选择道具隐身草彩虹炫天使之爱        悄悄话 | (以小纸条形式发送)   查看今日免费发送数量
4 C2 s  X* d) n- S& S- P" i- r" T9 d2 Q9 @: s+ G6 w
通知所有好友(该评论可显示在所有好友的好友动态里)设置
1 [5 H" M; d5 |3 l$ s3 i6 K
0 V9 p3 y, Z* ^6 E6 a3 ]2 e5 h马上开通空间,体验权限日志、私密记事本等全新日志体验!提交6 N6 d% D, A( t
上一篇  下一篇  返回日志列表
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-4-23 16:16 , Processed in 0.095174 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表