青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[教程] 二次开发

[复制链接]
发表于 2010-1-16 22:05 | 显示全部楼层 |阅读模式
日志
5 t) k% i1 Q) H分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表
" I& t. G+ ?( A, |" N微机平台的ug二次开发技巧 $ d9 E$ y0 F1 Z" F0 n
编辑 | 删除 | 权限设置 | 更多▼ 设置置顶/ V0 W, z7 B; `3 E5 O& v

; D& q1 _, S4 Y7 C+ W- H2 t推荐日志7 A) r9 D# Z  j" Q! {1 l

; ?/ f- L/ H. y3 T转到私密记事本
2 G; d5 q" T# r7 y' g 严冰    发表于2009年05月27日 16:22 阅读(6) 评论(0) $ h6 O" V2 {1 K! a5 E4 ~: l! v
分类: 个人日记 权限: 公开
. W0 h& h) N. T! W 9 k2 M. A; i. M5 J: K6 c4 A$ j1 C: N
( }8 v7 m: ^0 K3 D
本文叙述如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6.0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。
6 m+ R1 x! I* r2 x" O   UG/Open通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。其目的是为了计算机集成应用,实现数据共享。它具有开放的体系结构。
8 L5 V) F" u5 q4 V   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技术并使之成为应用可能。! E! n/ O' }$ Y
   UG/Open API是一个允许程序访问并影响UG对象模型的程序集,并同时提供一个UG所共容的编译和联接程序的方式。它支持C/C++语言,头文件(header files)支持ANSI C。在UG软件系统中相关的还有:UG/Open GRIP(/NC), UG/Open MenuScript, UG/Open IMAN ITK和Parasolid。
; H' M7 p: q" u) {   UG/Open API执行许可证:开发运行一个UG/Open API程序需有UG/Open开发许可证和执行许可证,用户通过UF_initialize()来访问并通过UF_terminate()来返还这些许可证。; M* ^5 J  @* E- A  y
   例程和UG/Open API头文件在用户应用平台ug安装目录下的ugopen目录里,Windows NT系统是%UGII_BASE_DIR%\ugopen,用户可以访问并利用这些程序和文件。/ ?6 Q$ h* c  `4 C/ L* `
   一、UG/Open API在Windows NT操作系统里的安装
  ~7 i& Z$ M( Y3 y) Z( [+ v   1.UG(V14.0)要求C编译器版本为Microsoft Visual C++V5.0以上,本文所述为VC++6.0版本。
; N7 @7 z2 ~% d" {/ L   2.定义环境变量(environment variables),定义方法:开始-设置-控制面板-系统,在“系统特性”框里点击“环境”栏,在“用户变量”里即可设置。
) L" Y3 |6 l& x% O$ [   必需的环境变量:UGII_USERFCN,该变量指向UG/Open API库函数所在的目录。
+ w0 Y% [3 p! j8 `8 @   其它的环境变量,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(命令表)。
9 A4 a7 g4 O7 s2 \: y1 @   结论,在用户变量里定义:+ p0 M- A- _; ]$ R8 H6 U8 ?
   UGII_USERFCN C:\ug\Eds140\Ugopen(也可在ugii_env文件中定义)
7 U; b' b5 L2 C+ a. I& K   EXCEEDHOME C:.\ug\exceed
# r' ?! L8 Y( q' d: x' F   EXCEEDLIBS C:\ug\exceed\xdk
# I) l7 o8 @6 C# @/ D" X7 ]- C   INCLUDE D:\App\VisualStudio\VC98\Include9 y, U" \' C$ Q% w8 r
   LIB C:\ug\Eds140\Ugopen\ugraf.lib;  w' P& t$ `: r' ?; F& Q. }* [  w
   C:\ug\Eds140\Ugopen\uguser.lib;
4 h4 o2 N8 F6 c   D:\App\VisualStudio\VC98\Lib( t( _  v$ ]/ n8 d" c2 r' E
   PATH C:\ug\Eds140\Ugii\og1;C:\ug\exceed;+ }2 n" L* E- [  x/ m
   D:\App\VisualStudio\VC98\Bin;# F; ^6 P7 A- ?3 g3 ~
   C:\ug\Eds140\Ugii
" ^/ A. \1 R) F8 Y: {( H0 q   2.在VC++里创建一个UG/Open API Project
- d9 ^$ r6 Q) @8 S   (1)进入Microsoft Visual C++。
2 u3 K. ?! q$ ]0 v   (2)创建Project: File→New→Projects,对于一个Internal UG/Open API程序选Win32 D-Link Library(对于一个Extermal UG/Open API程序选Win32 Console Application);并输入Project name。
4 L) X/ e0 `6 |4 ?+ Z/ j   (3)Configure(配置)Project Settings% V# N) E3 X; z& i
   选Project→Settings→Debug,“Category”栏是General,在“Executable for debug session”栏内输入:C:\ug\eds140\Ugii\ugraf.exe(这是为调试Internal UG/Open API program而设置的参量);在“Program arguments :”栏内输入ogl auto。
' u6 I$ f# B8 p2 @' R5 |8 f   选Project→Settings→C/C++,在“Category:”内选Code Generation;在“Use Run-Time library:”内选Multithreaded DLL。
4 p- B8 }  u8 Y2 b   选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)。6 ?2 [1 `8 z9 [# n2 }" b0 `
   (4)Configure(配置)Tools Settings6 L8 [) {: v  _
   选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 {; x6 h% f& H: b; f4 n8 m+ N2 R
   C:\ug\Eds140\Ugopen2 c+ [. _5 `' R  ~/ H. Z
   C:\ug\exceed\xdk\include
, S& J+ x5 D, b$ G6 s- f) ]8 W! F0 W   D:\App\VisualStudio\VC98\Include
* ~. _& R. b0 g4 M) x' |3 R+ r   C:\ug\exceed\LIB
9 H5 B/ L9 A6 x/ N   D:\App\VisualStudio\VC98\Mfc\include
; y+ O  Q# Z8 M8 k' O+ f   D:\App\VisualStudio\VC98\Atl\include
5 K: a0 F, s1 Q* R5 F" ^   C:\ug\Eds140\Ugii\ogl
9 T7 |! @0 e: o7 u   C:\ug\Eds140\Ugii\xwi
  x% g; j5 \1 S) F3 _1 z   D:\App\VisualStudio\VintDev98\bin; W) M6 y! L2 U
    选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。结论是依次输入:
& L$ o2 r- g1 k6 Q1 u   C:\ug\Eds140\Ugopen( h! z7 L7 a/ f- }
   C:\ug\exceed\xdk\lib* i9 \% g2 i/ E9 W: j
   D:\App\VisualStudio\VintDev98\bin
- v" J, k1 E8 p3 g. O$ [3 }   C:\ug\exceed
/ p( ]& ~4 D1 {, [9 H% B: f7 a" d   D:\App\VisualStudio\VC98\Lib    D:\App\VisualStudio\VC98\Mfc\lib
! b! c0 t2 F9 H0 j! K1 C   C:\ug\Eds140\Ugii
1 q4 T" y0 M/ `" g( b   C:\ug\exceed\LIB
7 p5 S$ l2 Q/ q  u% l   (5)Add Files to Project9 p1 C% Y, W. }! b6 q
   为把源文件(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里。' F1 R& H' ^  H  J( j/ a- l4 }- c
    (6)Compile and Link:Compile- →Build- →Execute。
/ |/ B( J" T: p$ _' J2 P   注:为检验上述工作是否正确,可以调出并编译运行%UGII_BASE_DIR%\ugopen中的ucintr.c。
% k7 U3 S! C4 ~0 P   3.UG/Open API程序7 F7 u- q! O7 M8 j+ s* Y1 H. F# F; j6 }" P
   (1)可执行文件(程序)类型
' ^; e" I& s3 A+ Y  G. v- ?   从UG/Open API里使用函数来编程可以有两种不同的模式(mode):Internal和External,这里模式是指产生的可执行代码的类型,即是一个共享库(Internal)或是一个独立的可执行代码(External)。9 l5 B* F  ^% X$ U. f' D
   1)Internal UG/Open API的一般形式:/ w4 g; [1 P: F& o, P
   #include //Prototypes exist in this file.6 h# o$ @% D( _4 I9 X6 v& F+ }1 p
   //Additional include files as required.. Z' i  k- ?# N* G+ ?
   Void ufusr(char *param, int *retcod, int parm_len)
7 h5 p3 \# B% r" C0 y& N$ {   { variable declarations' B  u/ [. C8 h
   UF_initialize();
% p+ |, m6 S- m0 k   Function body
6 d8 l4 Y; K$ W4 m   UF_terminate();
( g7 n  B* `( V+ r$ n) b% Z   }
8 J! F, B) @/ y! X: }) e    Internal UG/Open API使用ufusr函数(主函数)作为程序运行的入口点,它可以看作是用户写的UG子程序/子函数。执行程序时,UG将程序装入内存并搜索ufusr, 程序从这里开始执行,执行完后由一个return语句返回UG。4 H! {- k" M4 ~5 b8 H, `
    2)Extermal UG/Open API的一般形式:9 E1 n- r! q3 }6 w2 N/ R
   #include ' e9 v' |  C- c; e" S2 q8 q, Z; m
   //Additional include files as required.
# Y# I0 O+ L4 R( h3 \- J) }   Int main(int argc, char **argv)女
5 Z/ ]1 A" I$ V, ~. q) T) J* A" n   { variable declarations. H5 D+ R% \  L3 Q; ?) M9 c' q& T
   UF_initialize();; y& |9 u1 c. w7 `) L1 q
   Function body) c4 m8 _2 z, h
   UF_terminate();
6 f; {; e; i. I. c! H* M. U   }
2 d- ~/ ~9 S- X  b  u0 p" n, y8 U4 n    输入主函数的参数(arguments)是标准的C参数:argc- argument count, argv-字符串指针。
7 h8 L* I. {% y: U" E; r* P    (2)几点说明: t7 h: R2 R. }' c1 N& k: v
    1)头文件(*.h file) 在程序中除了包含标准的ANSI C头文件外,还应包含所 使用的UG/Open API程序的头文件,在这些特定的头文件里描述了UG所称的“Types 和Symbols”,即用来定义结构体(structures)、枚举体(enums)、共用体(unions)和指针(pointers)的“类(type)”和用来定义常量(constants)的“串(string)”。( |5 N' Z' ~$ y' x0 N8 }' [2 F4 Q
    2)程序的运行 一般地,可以从在UG图形界面里来运行,另外地可以从UG/Open MenuScript、User Exits、User Tools和UG/Open GRIP里调用并运行。) z0 `, T- m, ?. n8 I
    3)函数(Functions)UG/Open API提供的函数形式和ANSI/ISO C标准相一致,即<返回数据类型> <函数名> (变量表)- ]+ q/ s0 Z, n
    (3)UG对象模型(UG Object Model)  m: n- k- }4 y
   UG使用许多方法为其对象建立模型,根据对象的不同用途及其相互关系,UG对象可以是面向设计(design-oriented)、面向工程图(drafting-oriented)、面向分析(analysis-oriented)或者面向制造(manufacturing-oriented)的对象。UG开发人员编程的过程实际上就是访问、修改、植入UG对象从而建立起UG对象模型的过程。, V& [5 o; D2 h8 l1 a  P+ a
    每一个UG对象都是通过其唯一的标识符(identifier)(如tag)来引用,一个标示符的实际物理表示是一个无符号型整型变量(unsigned integer)。tag 在UG/Open API头文件uf_defs.h里被定义,它仅仅是把一个UG对象载入内存时的标示符。   ! _7 y( H; l# T. v( y1 P; d5 M
分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表 相关搜索词: UG  API  LIB  变量  eXceed  本文链接: 复制 签名档1 M; R$ W* O; L1 c
在这个世界上,只有真正快乐的男人,才能带给女人真正的快乐。  ' y6 b: y5 w, A/ O$ P( v
评论列表想第一个看到日志抢沙发?9 Q5 v  q( F4 y1 b9 \3 v+ B2 |
腾讯公司温馨提示:当前已出现通过网络、电话和短信等途径假冒中奖网站、“400”“0898”开头电话、宣称低价购物、购房退税等手段诈骗,请您提高警惕,慎防遭骗。识别更多网络骗术,请点击:腾讯反骗术帮助中心。发表评论取消批量删除批量删除全选删除1 l% ?  [0 {1 X5 n
. z3 U/ \' v2 e  a3 I

0 E! {8 x% S+ i* W9 j+ r5 B+ C/ l: [使用签名档匿名评论发表评论
8 T1 |+ b! a! ~0 t  X# U3 ?& s系统正在进行升级维护中,暂不支持日志评论,敬请谅解!' P3 p# q# [. i. R2 B1 U
点击这里发表评论,如果您要显示签名档,请点击“附加功能”并勾选“使用签名档”
" w4 a+ f, `1 ?/ V# Z2 f2 _日志评论推出新附加功能!评论可以通知所有好友了。您还可以进行设置,保护个人隐私。
8 z5 }7 s# P9 |% ]/ g附加功能   : {$ Z9 \! ]6 _" F$ {$ R! q5 r
使用签名档       道具:请选择道具隐身草彩虹炫天使之爱        悄悄话 | (以小纸条形式发送)   查看今日免费发送数量
4 A5 Q% ?( w0 A. `# A
4 e4 B, g1 v. L, a通知所有好友(该评论可显示在所有好友的好友动态里)设置* ?6 V, S' Y8 ^! `- U

: x2 a7 T' Y9 F马上开通空间,体验权限日志、私密记事本等全新日志体验!提交! q6 ]+ Y% M3 j4 o' z
上一篇  下一篇  返回日志列表
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-23 03:10 , Processed in 0.130854 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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