青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2468|回复: 3

[分享] 谈谈UG二次开发信息保存的问题

[复制链接]
发表于 2009-6-30 19:16 | 显示全部楼层 |阅读模式
做过ug二次开发的人都知道tag在其中的重要性,tag是所有对象的标识,也是其中信息的桥梁。/ X  Q: b* {5 Q( V8 X4 j
可惜tag是流水号,在prt保存再打开后,tag就会变。. c  \" i+ e+ u

5 V- R: I' G0 r9 R$ i1 y# [$ x如果是external模式,用tag作为信息标示保存也没什么,毕竟没有保存和打开的过程。
' i2 H2 }- U1 M3 x" w但是对于有些问题,比如重新打开prt,然后高亮上次选定的面,tag就不能作为信息保存。
" [4 e* u7 F( U& P7 l因为上次保存的tag在打开prt后会变,也就不能重新找到面face了。, E% z; S, i; C0 @# e" v& W$ p

( ^6 h2 E- l1 b* r( [, e% z还好我找啊找的,终于找到UG里面有个东西是不便的——Handle(可以查uf.h文件),是个编码字符串。
% S6 t5 D) b4 ?: z& Q% v经过解析后,一个Handle可以分解成文件信息、ID信息和版本信息。使用函数:* s' l! J% C0 {( ^
char * file_data ;
. R! i! C+ q$ S7 y' Z7 d/ X' ] unsigned int id ;
) Y6 R& L. ?- m) Y2 {3 @( V; K unsigned int  version ;
/ R# M6 J+ X8 j3 {( b9 f2 Y0 `UF_TAG_decompose_handle(handle,&file_data,&id,&version);. p: @" w$ j& _* ^0 z
UF_free(handle);$ R" G9 u  C* g0 W, L
UF_free(file_data);
9 X- V* r. Q$ B* j6 d其中sub_file_id 就是我们需要的Face、Edge等的ID,相当与tag,不过在一个文件里是不变的。
. p- w4 j' j. u0 g! ~" B$ T
, c+ l) h; ^; j4 ]* j& M& G$ r: }当然,先要获取Handle,通过这个函数
" v9 V3 P9 z* zconst NXObject* object=???;
, F/ k1 S& n2 {6 X7 B) { char* handle = UF_TAG_ask_handle_of_tag(object->Tag());; R# ?# ?  D$ }0 _" x( k' c
& c* V2 a7 V& v: {* z9 z9 K
上面就是获取对象ID的方式。handle太长,又是字符串,使用不方便,所以经常使用的是这个ID。
( ^+ J, {1 W* `- ~. p7 z其实这个ID可以在对象的Information信息窗口的最下面看到。0 X' d9 `. C5 H) V, b: J

: T: E. B6 ~0 n$ B7 v2 [4 {各位可能要问了,保存了这个ID,下次获取了这个ID,怎么找到Tag或者对应的Face、Edge呢?
4 b& n7 D% O% y: O, W如果你要是使用UG Open,我觉得还是保存Handle比较好,或者使用UF_TAG_compose_handle,通过ID等信息重新组合Handle" ]6 N  N* I5 N" Z* r4 q' u8 D
然后通过UF_TAG_ask_tag_of_handle()获取tag。( D6 b0 i" @, C$ t, F* b

2 t- W1 [$ j0 L4 h& [如果你使用UG NXOpen,可以直接得到对应信息的指针,使用FindObject获取指针。
7 p  S! ], _( G2 {9 [6 B, z char str[133];
9 V! Z$ {! g( l( l sprintf(str,"HANDLE R-%d",ID);+ x( F, Y# c/ Q: e0 u
Edge* dege = dynamic_cast<Edge *>(NXOpen::Session::GetSession()->Parts()->Work()->FindObject(str));" l$ ~! y# {, u$ n% i2 T5 L
当然实现最好能知道是什么对象。
发表于 2009-7-24 12:25 | 显示全部楼层
真的是很棒的技術!感謝.
回复 支持 反对

使用道具 举报

发表于 2009-7-25 07:47 | 显示全部楼层
我还差太远
回复 支持 反对

使用道具 举报

发表于 2012-12-6 13:57 | 显示全部楼层
顶楼主,学到东西了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-3-11 03:33 , Processed in 0.052176 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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