青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[教程] 二次开发

[复制链接]
发表于 2010-1-16 22:05 | 显示全部楼层 |阅读模式
日志
" f  h1 z9 B2 N2 x% d6 d分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表
. a& c; @7 b$ t# J& Y( W' `微机平台的ug二次开发技巧
8 A; a. r% n2 V8 h2 h  M7 U% Z! {编辑 | 删除 | 权限设置 | 更多▼ 设置置顶4 Z! d7 d% n# N! l) {9 U
* \* S, V- ^1 z8 {* Z
推荐日志
" G7 [7 {9 ^6 P0 x2 @( m
3 L/ k7 l0 Z" \9 H转到私密记事本
: o- g9 _( a! h% D$ m 严冰    发表于2009年05月27日 16:22 阅读(6) 评论(0) , N. Z' ?& J9 J! W) h- |) G
分类: 个人日记 权限: 公开
2 {( ]6 U0 o; g$ ^, ?% E. m( N ( J. t: H% t" s0 c  M# m

+ _2 O+ l& W7 r  ?+ K5 V! @) l本文叙述如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6.0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。
/ ^1 i3 J1 E5 K1 m! ~   UG/Open通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。其目的是为了计算机集成应用,实现数据共享。它具有开放的体系结构。
# x$ k+ R7 @  `3 A2 E   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技术并使之成为应用可能。5 o! y4 A" l7 h) a/ \4 x" }& F6 T
   UG/Open API是一个允许程序访问并影响UG对象模型的程序集,并同时提供一个UG所共容的编译和联接程序的方式。它支持C/C++语言,头文件(header files)支持ANSI C。在UG软件系统中相关的还有:UG/Open GRIP(/NC), UG/Open MenuScript, UG/Open IMAN ITK和Parasolid。: Z/ F6 S- [1 v6 z1 c
   UG/Open API执行许可证:开发运行一个UG/Open API程序需有UG/Open开发许可证和执行许可证,用户通过UF_initialize()来访问并通过UF_terminate()来返还这些许可证。* `/ g! E: U- A9 w9 e" `
   例程和UG/Open API头文件在用户应用平台ug安装目录下的ugopen目录里,Windows NT系统是%UGII_BASE_DIR%\ugopen,用户可以访问并利用这些程序和文件。5 e3 O; o/ J3 @+ F* n$ G- V% a
   一、UG/Open API在Windows NT操作系统里的安装
: u0 T2 B! C; b   1.UG(V14.0)要求C编译器版本为Microsoft Visual C++V5.0以上,本文所述为VC++6.0版本。
( E! B% x- H# d: M3 _5 k$ b* H   2.定义环境变量(environment variables),定义方法:开始-设置-控制面板-系统,在“系统特性”框里点击“环境”栏,在“用户变量”里即可设置。
. m; H" m# g( S1 I6 w, H   必需的环境变量:UGII_USERFCN,该变量指向UG/Open API库函数所在的目录。
) O- D/ i+ M' H( j   其它的环境变量,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(命令表)。
8 k- X0 a. |: D+ k8 y+ v   结论,在用户变量里定义:2 g' L1 e- y, U" m% z/ A/ a9 a! D  m
   UGII_USERFCN C:\ug\Eds140\Ugopen(也可在ugii_env文件中定义)
' m% F5 f7 Q0 x- j$ J: F8 Q! D( n   EXCEEDHOME C:.\ug\exceed
4 J1 [$ u; c( \( m/ s" h( v   EXCEEDLIBS C:\ug\exceed\xdk
2 k( {- o6 t$ N) W. u  C$ G   INCLUDE D:\App\VisualStudio\VC98\Include
9 y4 f' R1 Q0 _3 X   LIB C:\ug\Eds140\Ugopen\ugraf.lib;* `# T2 s; v5 m( U$ Z' A! N2 v7 b  G
   C:\ug\Eds140\Ugopen\uguser.lib;
7 v  v: f) H8 r2 L+ m   D:\App\VisualStudio\VC98\Lib% K* [8 c* {. ~2 F, g7 N6 V
   PATH C:\ug\Eds140\Ugii\og1;C:\ug\exceed;
4 V& S  p4 ?5 l, \% {8 O   D:\App\VisualStudio\VC98\Bin;& B& t2 g( w: X7 }2 @5 G; h% v
   C:\ug\Eds140\Ugii
0 B3 Q3 V' A2 a, W% F7 }   2.在VC++里创建一个UG/Open API Project7 j* z+ E$ D% D" ~7 d2 T0 F; _' u
   (1)进入Microsoft Visual C++。
4 J# i! Z( i. ~" p' U! ~4 y# y   (2)创建Project: File→New→Projects,对于一个Internal UG/Open API程序选Win32 D-Link Library(对于一个Extermal UG/Open API程序选Win32 Console Application);并输入Project name。8 J$ e3 ]4 \% f4 @" B8 o
   (3)Configure(配置)Project Settings
; z2 l- E; {! t% V3 E+ F+ U9 _8 p$ 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。  L. k0 ?1 r4 j9 \
   选Project→Settings→C/C++,在“Category:”内选Code Generation;在“Use Run-Time library:”内选Multithreaded DLL。6 z% E, e' Y$ F  i" x
   选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)。
- g1 h( I2 K- V, @   (4)Configure(配置)Tools Settings7 Z- h. w6 T: {: F4 _
   选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。结论是依次输入:
6 E0 |- j3 c( l4 g   C:\ug\Eds140\Ugopen; C4 v* H- _' T+ ^
   C:\ug\exceed\xdk\include
: r% \8 T% y  U# _) }- V8 G" Y0 m   D:\App\VisualStudio\VC98\Include
" @0 ?" r& h7 Q: S5 ], M   C:\ug\exceed\LIB
  H% s. v! h( Z# y. |' r9 T   D:\App\VisualStudio\VC98\Mfc\include
+ |/ f# l4 C2 h. q1 \% K/ B   D:\App\VisualStudio\VC98\Atl\include3 k/ u8 h8 b5 _
   C:\ug\Eds140\Ugii\ogl" y; j3 _; C8 _' n6 [* e
   C:\ug\Eds140\Ugii\xwi
1 ~9 k( M& n) x8 c  \   D:\App\VisualStudio\VintDev98\bin
' L$ ]" B- |1 E. X( y( @# j6 R    选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。结论是依次输入:( C- o* _; v: @. B$ Y
   C:\ug\Eds140\Ugopen
' w+ _4 v4 F6 n3 J$ F   C:\ug\exceed\xdk\lib: l7 l" \2 a! s, p! |* p7 n
   D:\App\VisualStudio\VintDev98\bin! k  W+ K5 C$ h& m/ ^6 K  O
   C:\ug\exceed: |' y) F; m4 i$ |( ]+ ?
   D:\App\VisualStudio\VC98\Lib    D:\App\VisualStudio\VC98\Mfc\lib. S7 d7 {# g% @* Q: T
   C:\ug\Eds140\Ugii& F/ `) z) }+ Q& {& J  o( |7 G' e
   C:\ug\exceed\LIB
8 X4 D& X6 X3 G9 P4 d) W8 |5 x   (5)Add Files to Project
2 t% ]" C1 a- s2 a5 X   为把源文件(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里。2 F& J+ X4 J9 N
    (6)Compile and Link:Compile- →Build- →Execute。
( N! ?/ l0 d& O" p. ?* _0 L. W   注:为检验上述工作是否正确,可以调出并编译运行%UGII_BASE_DIR%\ugopen中的ucintr.c。
! \8 C8 e5 e1 z$ E0 V4 p; J   3.UG/Open API程序  V. R1 A  P0 j% p1 c
   (1)可执行文件(程序)类型
7 b) o. O2 h) {8 l6 a, R   从UG/Open API里使用函数来编程可以有两种不同的模式(mode):Internal和External,这里模式是指产生的可执行代码的类型,即是一个共享库(Internal)或是一个独立的可执行代码(External)。
+ v% v/ P" I5 A5 Q* D  U   1)Internal UG/Open API的一般形式:' ]+ V# _( d4 \4 p$ A6 p
   #include //Prototypes exist in this file.
  N5 g: V! c7 v' I0 K   //Additional include files as required.. H1 M: g( h6 V( ?* X2 Q
   Void ufusr(char *param, int *retcod, int parm_len)' v, k/ H6 f, i% B9 q
   { variable declarations& m, U+ Z5 v. J& ?' M" d
   UF_initialize();9 q4 n. z+ V2 J6 n" P& w  f
   Function body9 ~- }/ o: \, c
   UF_terminate();
4 f7 G; r. w# J& K- ~) k   }
9 R$ p" T. t8 x* K! G: j    Internal UG/Open API使用ufusr函数(主函数)作为程序运行的入口点,它可以看作是用户写的UG子程序/子函数。执行程序时,UG将程序装入内存并搜索ufusr, 程序从这里开始执行,执行完后由一个return语句返回UG。
* W; a, ?) n" X: a5 n1 Y    2)Extermal UG/Open API的一般形式:
5 L/ {1 U. C' a1 ~   #include ) ~- E& X% {  q2 [& l
   //Additional include files as required.0 l& Q/ Q1 z0 P! f
   Int main(int argc, char **argv)女' F; I6 I$ m5 N9 t2 c6 y
   { variable declarations7 {6 O9 n+ v3 z& n
   UF_initialize();
! V0 V% ?8 L! m( \/ p5 E   Function body
2 l7 ~1 m& @0 O5 D" C' q. _   UF_terminate();  i* F0 t$ r8 M7 A9 |) m
   }
- p# P& q2 ~; J6 v- [' L. c* f; p2 M    输入主函数的参数(arguments)是标准的C参数:argc- argument count, argv-字符串指针。" |' v% T" F3 i* n7 N+ `1 a
    (2)几点说明
1 A" l7 h( b7 G! p9 j' X    1)头文件(*.h file) 在程序中除了包含标准的ANSI C头文件外,还应包含所 使用的UG/Open API程序的头文件,在这些特定的头文件里描述了UG所称的“Types 和Symbols”,即用来定义结构体(structures)、枚举体(enums)、共用体(unions)和指针(pointers)的“类(type)”和用来定义常量(constants)的“串(string)”。: S  D  s, ^1 ]! M, Q: u
    2)程序的运行 一般地,可以从在UG图形界面里来运行,另外地可以从UG/Open MenuScript、User Exits、User Tools和UG/Open GRIP里调用并运行。
, f  ~& j! U0 n: t  z    3)函数(Functions)UG/Open API提供的函数形式和ANSI/ISO C标准相一致,即<返回数据类型> <函数名> (变量表)% U- B1 e0 w+ `8 [/ Z. b' A" t
    (3)UG对象模型(UG Object Model)
( l  C) S& o' n0 K- @& Q   UG使用许多方法为其对象建立模型,根据对象的不同用途及其相互关系,UG对象可以是面向设计(design-oriented)、面向工程图(drafting-oriented)、面向分析(analysis-oriented)或者面向制造(manufacturing-oriented)的对象。UG开发人员编程的过程实际上就是访问、修改、植入UG对象从而建立起UG对象模型的过程。9 J6 R3 @, E5 K
    每一个UG对象都是通过其唯一的标识符(identifier)(如tag)来引用,一个标示符的实际物理表示是一个无符号型整型变量(unsigned integer)。tag 在UG/Open API头文件uf_defs.h里被定义,它仅仅是把一个UG对象载入内存时的标示符。   
' ^* Z" B" \" x分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表 相关搜索词: UG  API  LIB  变量  eXceed  本文链接: 复制 签名档* ]  j& ~5 I* s
在这个世界上,只有真正快乐的男人,才能带给女人真正的快乐。  * w. E/ N7 _( N5 C& g
评论列表想第一个看到日志抢沙发?$ e2 \, d2 O6 V: ?( _, _0 \
腾讯公司温馨提示:当前已出现通过网络、电话和短信等途径假冒中奖网站、“400”“0898”开头电话、宣称低价购物、购房退税等手段诈骗,请您提高警惕,慎防遭骗。识别更多网络骗术,请点击:腾讯反骗术帮助中心。发表评论取消批量删除批量删除全选删除
+ h* E' A( F& d& t+ M& o) ]% N) o# I$ w; p# t# z; x& ]
) W& r3 G+ e) e6 l5 p
使用签名档匿名评论发表评论
6 k1 |) @! v; T# n& K0 b& z* r系统正在进行升级维护中,暂不支持日志评论,敬请谅解!
, `. g* b" H' H( U6 Y点击这里发表评论,如果您要显示签名档,请点击“附加功能”并勾选“使用签名档”  e' {- r( l9 O! H
日志评论推出新附加功能!评论可以通知所有好友了。您还可以进行设置,保护个人隐私。, t9 z  c% I% H3 `' z7 F: U7 U: O
附加功能   
5 A- R3 G1 T8 r" Y! z; f( y使用签名档       道具:请选择道具隐身草彩虹炫天使之爱        悄悄话 | (以小纸条形式发送)   查看今日免费发送数量, P* u+ R' D9 I

9 k7 w4 s0 ]4 b+ m) m/ ]通知所有好友(该评论可显示在所有好友的好友动态里)设置7 ]/ i  W+ Z; e, \& Y

2 t$ X' T0 {6 K4 a# h$ U马上开通空间,体验权限日志、私密记事本等全新日志体验!提交. f; {5 M" U4 c/ E6 O5 J
上一篇  下一篇  返回日志列表
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-23 16:50 , Processed in 0.055275 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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