青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[教程] 二次开发

[复制链接]
发表于 2010-1-16 22:05 | 显示全部楼层 |阅读模式
日志
! w/ M! R. H3 m' x0 L分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表 ; x. P3 x+ f  I3 R9 D
微机平台的ug二次开发技巧
1 T& v) {# b( R5 b8 C5 y7 J5 U7 \) @编辑 | 删除 | 权限设置 | 更多▼ 设置置顶. E0 o, ]3 K0 M# P+ z1 A+ ~0 x* g8 z
7 \5 q! W; _+ I* L
推荐日志
% E8 O) z4 r( N$ q7 [4 e* S- Q0 O % s% \( |- `- G( A6 Z+ d
转到私密记事本1 ~; a$ w6 F" J- k. K7 m' e
严冰    发表于2009年05月27日 16:22 阅读(6) 评论(0)
7 k, N; E; Q: ]. {: z分类: 个人日记 权限: 公开
2 t& r6 o/ @& s( R, a& k8 c3 q 2 u; {* h1 r: }' ~- E

, W* u7 U  D) U% L# A" H6 M/ [1 |8 D5 L本文叙述如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6.0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。# o% t; h9 m0 s. M- E( M
   UG/Open通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。其目的是为了计算机集成应用,实现数据共享。它具有开放的体系结构。
' A8 N; _9 i+ O7 ^: z   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技术并使之成为应用可能。) Z+ Y; Z( I0 d6 Y0 U+ e3 a1 N5 e, C+ P/ ]
   UG/Open API是一个允许程序访问并影响UG对象模型的程序集,并同时提供一个UG所共容的编译和联接程序的方式。它支持C/C++语言,头文件(header files)支持ANSI C。在UG软件系统中相关的还有:UG/Open GRIP(/NC), UG/Open MenuScript, UG/Open IMAN ITK和Parasolid。
; ?* z7 K; j, n% S1 I3 Z6 P   UG/Open API执行许可证:开发运行一个UG/Open API程序需有UG/Open开发许可证和执行许可证,用户通过UF_initialize()来访问并通过UF_terminate()来返还这些许可证。
6 C8 d7 Q/ I* w* {+ E   例程和UG/Open API头文件在用户应用平台ug安装目录下的ugopen目录里,Windows NT系统是%UGII_BASE_DIR%\ugopen,用户可以访问并利用这些程序和文件。
) e, p7 f: Y' x8 Q! H- @: j   一、UG/Open API在Windows NT操作系统里的安装
7 \( `( D1 X( X   1.UG(V14.0)要求C编译器版本为Microsoft Visual C++V5.0以上,本文所述为VC++6.0版本。' A2 n, A8 u7 c3 c/ b7 K( a
   2.定义环境变量(environment variables),定义方法:开始-设置-控制面板-系统,在“系统特性”框里点击“环境”栏,在“用户变量”里即可设置。
- L8 ~, Q  f* E$ n; k3 d4 l   必需的环境变量:UGII_USERFCN,该变量指向UG/Open API库函数所在的目录。
4 w8 k! T$ p. g9 R   其它的环境变量,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(命令表)。
  V9 Z' L) J7 s) s1 m   结论,在用户变量里定义:
7 `3 V6 |4 p0 g) v   UGII_USERFCN C:\ug\Eds140\Ugopen(也可在ugii_env文件中定义)1 s! Q  A9 }$ [3 v) @
   EXCEEDHOME C:.\ug\exceed
: x7 Z6 L& ~, M1 r& p. J1 k   EXCEEDLIBS C:\ug\exceed\xdk
( Q, H- h. X" D* U$ k   INCLUDE D:\App\VisualStudio\VC98\Include3 Y- }# I9 ~5 y/ T: m5 Q
   LIB C:\ug\Eds140\Ugopen\ugraf.lib;
: r9 X; [1 R+ U2 n; c6 E0 D4 Q3 ^   C:\ug\Eds140\Ugopen\uguser.lib;* g- ?: d* M- i( j! @5 q$ O, s
   D:\App\VisualStudio\VC98\Lib: Z1 H% H/ Q0 f
   PATH C:\ug\Eds140\Ugii\og1;C:\ug\exceed;
0 w4 \- T3 [# o9 ~   D:\App\VisualStudio\VC98\Bin;3 M- p- B' T+ ]5 P
   C:\ug\Eds140\Ugii
5 x& E, n# F0 v( e   2.在VC++里创建一个UG/Open API Project# a! j. t2 U" g3 _9 y9 O
   (1)进入Microsoft Visual C++。
+ \  Q" S6 u: @3 b/ E9 y   (2)创建Project: File→New→Projects,对于一个Internal UG/Open API程序选Win32 D-Link Library(对于一个Extermal UG/Open API程序选Win32 Console Application);并输入Project name。
; [, S5 `1 l9 J" m: w   (3)Configure(配置)Project Settings, }0 L1 G  [  w1 _. q! P% P' Z
   选Project→Settings→Debug,“Category”栏是General,在“Executable for debug session”栏内输入:C:\ug\eds140\Ugii\ugraf.exe(这是为调试Internal UG/Open API program而设置的参量);在“Program arguments :”栏内输入ogl auto。  {$ e$ O' B  d5 c, N1 ?1 ]
   选Project→Settings→C/C++,在“Category:”内选Code Generation;在“Use Run-Time library:”内选Multithreaded DLL。
( o4 M) M/ b) @5 X* O0 k% U& i   选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)。4 b5 G, w$ f$ P$ M& i. q
   (4)Configure(配置)Tools Settings" M5 @: P8 j/ h7 k
   选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。结论是依次输入:7 ]& M% i+ S$ H. X# N( E4 v
   C:\ug\Eds140\Ugopen
$ K& l" F% o5 l" f5 D0 x   C:\ug\exceed\xdk\include
, [. p9 `+ a3 b; @# r   D:\App\VisualStudio\VC98\Include/ F! T- x7 I& k: N% L9 b8 f, v
   C:\ug\exceed\LIB
5 z! `9 p* V5 v8 e   D:\App\VisualStudio\VC98\Mfc\include
7 |$ b+ R8 I' C$ u& P  l   D:\App\VisualStudio\VC98\Atl\include
7 D1 ?6 M% _# p5 z$ I6 C   C:\ug\Eds140\Ugii\ogl8 h9 U. Z/ U# S' I; b$ Y; T" t
   C:\ug\Eds140\Ugii\xwi
' H% g9 j" [% m2 J  H2 {! F( h5 ~   D:\App\VisualStudio\VintDev98\bin
1 \1 e3 b, W* w6 z# ?/ I3 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。结论是依次输入:
* B) p" _( ~4 k; ^. i# ?, U   C:\ug\Eds140\Ugopen
/ D# d3 ?7 P* `( `   C:\ug\exceed\xdk\lib3 ~$ y' o; C, c8 Z3 L! T
   D:\App\VisualStudio\VintDev98\bin
5 C: L$ f9 N+ e5 v2 }6 i   C:\ug\exceed5 S- T# |9 u5 Z) x+ p8 Q' ~
   D:\App\VisualStudio\VC98\Lib    D:\App\VisualStudio\VC98\Mfc\lib( I$ S1 b; l( |1 U  {: @
   C:\ug\Eds140\Ugii
5 ^, t5 W# P5 P" @* k7 O, C   C:\ug\exceed\LIB; e# @, t# L2 P/ ~( {
   (5)Add Files to Project
/ t' V; @( Z# f   为把源文件(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里。) Z1 q& M( a/ P' r8 H0 i  z
    (6)Compile and Link:Compile- →Build- →Execute。
% b* z/ r4 @, M: t, z" i' Z   注:为检验上述工作是否正确,可以调出并编译运行%UGII_BASE_DIR%\ugopen中的ucintr.c。
( r& Q! x0 X* t0 \$ ?* S   3.UG/Open API程序
( [0 Z* J& s' E$ K8 o" h( }8 g9 {   (1)可执行文件(程序)类型
5 n2 r# D4 }, F, E   从UG/Open API里使用函数来编程可以有两种不同的模式(mode):Internal和External,这里模式是指产生的可执行代码的类型,即是一个共享库(Internal)或是一个独立的可执行代码(External)。5 M% w2 f* N  i6 M! `- }) u5 r
   1)Internal UG/Open API的一般形式:
( Z9 j6 q% i( o& s% Q   #include //Prototypes exist in this file.% h- V1 K1 J, F1 G, ^3 N* p3 Z9 m
   //Additional include files as required.
, ^! k0 v" N, v   Void ufusr(char *param, int *retcod, int parm_len)
$ C$ \: ]% J) D6 G& ~( V( O; b   { variable declarations* |# o1 w, s6 m: }
   UF_initialize();9 h, L. G% o) S/ u% Q
   Function body
+ h5 y$ N" |* w0 l6 [* T   UF_terminate();9 s$ g9 a$ B0 f# U. G
   }
% F3 S6 a+ }' w* {    Internal UG/Open API使用ufusr函数(主函数)作为程序运行的入口点,它可以看作是用户写的UG子程序/子函数。执行程序时,UG将程序装入内存并搜索ufusr, 程序从这里开始执行,执行完后由一个return语句返回UG。
( |' @# k& F% T2 F2 \5 I    2)Extermal UG/Open API的一般形式:
: _& r( }2 H2 z5 f0 f0 E  b& F   #include ( V% e' s4 m0 y/ n; P# K8 [- H" ]% M
   //Additional include files as required.
3 b' J; @9 }! U2 l$ N2 Q   Int main(int argc, char **argv)女; w& U, P. x/ L- h4 E1 L
   { variable declarations
/ n% O. B1 j4 D5 _- |; ]% y4 P   UF_initialize();$ W& S# T. n% l& z- f
   Function body1 O0 K& V+ l7 I- Q7 m3 H$ x
   UF_terminate();! D' r4 `/ E) F/ \  f/ P0 N' _
   }' n( l  J  n% H- T# L, N
    输入主函数的参数(arguments)是标准的C参数:argc- argument count, argv-字符串指针。
1 B6 y( E, ]) |: O    (2)几点说明' W: o+ I2 B+ X4 a
    1)头文件(*.h file) 在程序中除了包含标准的ANSI C头文件外,还应包含所 使用的UG/Open API程序的头文件,在这些特定的头文件里描述了UG所称的“Types 和Symbols”,即用来定义结构体(structures)、枚举体(enums)、共用体(unions)和指针(pointers)的“类(type)”和用来定义常量(constants)的“串(string)”。; t1 q- e& z+ c8 ^
    2)程序的运行 一般地,可以从在UG图形界面里来运行,另外地可以从UG/Open MenuScript、User Exits、User Tools和UG/Open GRIP里调用并运行。0 j* D' ?, O% I! o! `+ ]# w6 [
    3)函数(Functions)UG/Open API提供的函数形式和ANSI/ISO C标准相一致,即<返回数据类型> <函数名> (变量表)8 e2 j( t0 |, H( c4 @. y. I
    (3)UG对象模型(UG Object Model)
7 n* U% s0 N$ C6 n- N; h& l   UG使用许多方法为其对象建立模型,根据对象的不同用途及其相互关系,UG对象可以是面向设计(design-oriented)、面向工程图(drafting-oriented)、面向分析(analysis-oriented)或者面向制造(manufacturing-oriented)的对象。UG开发人员编程的过程实际上就是访问、修改、植入UG对象从而建立起UG对象模型的过程。
' v0 p  K  k% v& ~    每一个UG对象都是通过其唯一的标识符(identifier)(如tag)来引用,一个标示符的实际物理表示是一个无符号型整型变量(unsigned integer)。tag 在UG/Open API头文件uf_defs.h里被定义,它仅仅是把一个UG对象载入内存时的标示符。   
7 v+ K0 J2 u5 R( N, F1 ~分享给好友复制网址隐藏签名档小字体 上一篇 下一篇 返回日志列表 相关搜索词: UG  API  LIB  变量  eXceed  本文链接: 复制 签名档
; a5 l7 ]+ G  ~5 C2 a在这个世界上,只有真正快乐的男人,才能带给女人真正的快乐。  0 h, P0 r  R) D
评论列表想第一个看到日志抢沙发?
3 K% D/ H9 A" k( Q2 S$ c" o1 L腾讯公司温馨提示:当前已出现通过网络、电话和短信等途径假冒中奖网站、“400”“0898”开头电话、宣称低价购物、购房退税等手段诈骗,请您提高警惕,慎防遭骗。识别更多网络骗术,请点击:腾讯反骗术帮助中心。发表评论取消批量删除批量删除全选删除
% g& m9 K0 j3 a, R1 x8 i- q7 f+ J, Z

" P7 @  ^0 j7 f  g4 D  D使用签名档匿名评论发表评论
" {- `; ~  s" C6 w& N7 C系统正在进行升级维护中,暂不支持日志评论,敬请谅解!/ f5 t  X. C9 ?% V- L/ y) v& H
点击这里发表评论,如果您要显示签名档,请点击“附加功能”并勾选“使用签名档”6 V6 \4 X/ g: Y9 C9 @1 N
日志评论推出新附加功能!评论可以通知所有好友了。您还可以进行设置,保护个人隐私。
+ |( D8 S. w9 B& U. ?( K1 f1 o1 I* m附加功能   ( ~: L/ k) ^) l0 l1 L
使用签名档       道具:请选择道具隐身草彩虹炫天使之爱        悄悄话 | (以小纸条形式发送)   查看今日免费发送数量
1 J4 n# R" _  ?- x# Q4 ]% B& x! F0 ^# Z$ Y, t
通知所有好友(该评论可显示在所有好友的好友动态里)设置
4 x: G/ t$ e7 f7 A4 t5 R
3 x! p7 O1 b2 Q马上开通空间,体验权限日志、私密记事本等全新日志体验!提交$ m/ ?# ]& y" W: I0 U. b, Z5 L0 W
上一篇  下一篇  返回日志列表
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-22 05:41 , Processed in 0.095177 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

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