PLM之家PLMHome-工业软件与AI结合践行者

[二次开发源码] UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数

[复制链接]

2017-12-7 11:22:15 2944 0

admin 发表于 2017-12-7 11:22:15 |阅读模式

admin 楼主

2017-12-7 11:22:15

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。- a( }* p/ A: J3 E3 g* r

8 i0 q4 p7 q1 T; Y5 `[mw_shl_code=c,true]/ P: f+ M, t9 P9 [
#include <stdio.h>6 O! r' y5 D$ H% C7 p
#include <stdlib.h>
1 G$ F) d; `) g#include <string.h>
0 V, z4 R5 S( x$ H+ T#include <uf.h>
. _3 F  B/ `5 |, |# W; k6 g0 Z#include <uf_ugmgr.h>
' q- g$ Y( e3 V#include <uf_part.h>
* Z0 M6 P/ _9 ~" ~  W/ h) T! H. \#include <uf_assem.h>
4 M( i' ?4 b& C) e& n  Z; S#define CHECK( func_ ) \
) g+ r2 h' J: G* u# e{ int  ifail_ = 0; \
' Z/ N. R# f+ \2 I. g" X, _+ R+ r  char message[133]; \
! i# \( E( a0 [; d' {  ifail_ = (func_); + F- q( d+ M9 d% A
  if ( ifail_ != 0 ) { \8 Z5 \9 }6 m/ ?' F6 c
    UF_get_fail_message( ifail_, message ); \$ |1 L4 Y9 O% s; s% z
    printf("ERROR: %s returned from %s\n", message, # func_); \# ~9 X% R+ C) V7 }9 K1 A) p3 D3 M2 \
    return ifail_; } }' a* g& _  a5 _) i
static int create_part( void );- T) `' p1 i/ s1 j  S0 }# o
static int print_work_part_info( void );
$ Q* A3 f* Z" l/ ~+ b2 F7 G: _/*---------------------------------------------------------------*/
. Y$ o* Y. t' \$ \int main(int argc, char *argv[])
  \7 G4 E2 G' P+ i4 c1 Z1 Y{+ c) w* ^( K& ?3 j) i
  int  ifail = 0;* o& k4 Q: p$ W0 {* V) w
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);. {% U! }( H3 d# N5 C
  if (ifail != 0)  [  {) y" d- v5 M; w6 w# h4 E
  {; b, g5 y  i, \, L: J. F( r4 L, Z
    printf("ERROR: Failed to initialize with error code %d", ifail);
* x2 B& \, C1 N0 K8 `; w    exit(1);( ]/ s4 A, h6 R6 ?4 s1 b0 c2 x
     }. N* a, z  S: v& Q) g
create_part();4 p7 ]/ e3 b/ p) R9 C% x) q5 h1 V
  print_work_part_info();  m* m" A9 @" l, V, k+ _" Y+ O
  UF_PART_close_all();
9 q: L$ d; V4 u( D  UF_UGMGR_terminate();
. [4 w/ f3 ]/ S7 R4 I  y* o  return 0;) T% s* h; C( d: G0 o8 ]
}0 D7 W. u6 R1 J1 i6 s, m
/*---------------------------------------------------------------*/
. w5 b5 l5 ^3 ^, _7 o; tstatic int create_part( void )
) _! O5 N- w$ j" C: b4 ]2 f# L! \{/ Q$ J; Z  {  ~
  char*                   part_number = "600-A-wej-mk1-eng";) m, |' `2 U; r* }0 y; a
  char*                   part_revision = "A";
, t% y5 a" n5 Y; T9 ]1 u" ~  char*                   part_file_type = "master";
) R( @' u2 w3 V& x8 r; `, ~  char*                   part_file_name = "";
' Z( ^# B& K, j5 q1 M  char                    encoded_name[MAX_FSPEC_SIZE + 1];, ?% {2 H/ `4 {- L, `% _
  tag_t                   part_tag;
, L2 E6 J3 P& C( b4 ]7 r6 ]  UF_UGMGR_tag_t          db_part_tag;
  W# n& g4 P+ E; N  UF_UGMGR_tag_t          root_folder;) s0 _. g+ V* d8 }6 s2 S
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];4 e3 z7 c, ]. K6 h
  int                     i, count;7 Q' w; N) d) R
  UF_UGMGR_tag_t          *folder_contents;
7 n* [4 Q' `# r# m, |0 K  UF_UGMGR_object_type_t  object_type;" C/ ?/ a' X0 F  [0 H* l! B
  char                    folder_name[UF_UGMGR_NAME_SIZE];  ~6 `3 {& @& s% o7 H( o, ^/ B$ p
  logical                 folder_exists = false;
& `- o- n8 W, g  CHECK(UF_UGMGR_ask_root_folder(&root_folder));9 _, t5 c' k4 a6 Y9 i
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
3 q1 D, K$ T3 `. b, J9 d, c  printf("Root folder is %s\n", root_folder_name);
" m, W* l, l: T8 {: `' e! V$ f9 T( M  /* Scan through the root folder, looking for a folder called
, x+ a! r" P  n1 E+ q* A     "Test Set Default Folder". If this folder exists, set it to be3 @$ q% f6 n6 g  c3 y, u1 Q5 C
     the default folder into which newly created parts are
$ a' y6 w) S% O9 z: R. @     placed.9 h* x: q1 C0 Q/ {& T( V2 u
  */& T8 |: P0 s8 k' k- G
  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));0 p2 x6 R' i+ L% l; c
  for ( i=0; i<count; i++ )
5 Y1 |; E9 L: U" l  {
: R- w0 U) k0 j& F) s: k* V% |    CHECK(UF_UGMGR_ask_object_type(folder_contents,0 c7 k; h$ f1 C& ^' |2 j
   &object_type));
( U4 m4 F0 @' p+ ^2 q6 }! ]6 @    if (object_type == UF_UGMGR_type_folder)  U9 K/ H" q2 F. f, ^
    {
& \* A" m; {" W/ U0 ]2 A9 t      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));# H& X3 G) ^' q. S- z/ m' o
      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )( ]+ [) F% E$ O
      {
; A$ _9 D1 f% S, M* d% V        printf("Test Set Default Folder exists\n");
( [  U5 O. u* F& _        CHECK(UF_UGMGR_set_default_folder(folder_contents));
4 z5 V' F$ U3 @$ f        folder_exists = true;/ _  w+ U7 k1 b, e# Y1 x
        printf("Set default folder to %s\n", folder_name);" x: u* J8 R) U% H4 O( d2 l" u, l
      }
0 J* y1 k0 c+ k( W0 H7 ~# u    }
7 Z( j' W6 s: G" j% f, d* X7 h  }  }
  q& J( z# c) X% o7 N* x  /* If the folder "Test Set Default Folder" doesn't exist, set the
$ Y( \* v% ~' m5 T. q6 ?0 }     default folder to be the root folder.7 [. p+ y7 j2 D4 l
  */
- |, f5 Q2 E7 h5 R  if (!folder_exists)
, u' l' k3 {# @5 y' O  {5 ?6 W; w% m+ K5 _( M" T
    printf("Test Set Default Folder does not exist\n");6 y8 U+ t8 V  C  [6 H7 |2 J
    CHECK(UF_UGMGR_set_default_folder(root_folder));% v) o, s6 B% P5 O
    printf("Set default folder to %s\n", root_folder_name);, y4 q6 Z( ^! c; r
  }  r6 f6 C4 T+ `2 V/ N  v5 \
  printf("Encoding UG/Manager part filename...\n");: {: g2 W) |: B4 M4 t3 i( H: j
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
8 n8 ^7 |1 Y( P part_file_type,& S% |! U# D0 n( K
part_file_name,
5 ?8 @5 c$ ~+ M: Z; K& R* q  @ encoded_name ));  Z$ y3 s4 r# ?: w' q3 D# f
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));; K0 i6 i# ~  Y- E
  printf("Created part...\n");
2 ]/ v9 J  d, U1 g  CHECK(UF_PART_save());
* Z' s  C- N! o2 @( x  printf("Saved part...\n");
! p9 B1 I3 s) c3 q! o! h! }8 x  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
3 Z% }$ o; A" S8 j  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",3 N  O9 V: O, n! N$ E# U5 e
"Mk3 Engine" ));
+ \& L2 ?! c& U1 s% F% n, `  printf("Set part name and description...\n");# U$ ^" o0 n$ N+ j. Q- w
  return 0;/ Y6 ]( O# \- g; C/ }8 U1 J
}
" V- J1 w# ~& @! g4 m( _/*---------------------------------------------------------------*/, s9 d' Z8 t; I
static int print_work_part_info( void )
2 S' k3 y" l5 j0 l" W{
) t$ K- i: {8 I( o4 M, e5 p3 E$ N  char             work_part_name[MAX_FSPEC_SIZE+1];
  X4 |" J  e+ g1 o5 p& q  tag_t            work_part_tag;- N- M( m; M9 A8 l/ N
  char             part_number[UF_UGMGR_PARTNO_SIZE+1];( K+ B  ?; k" m# \3 [- J
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
$ Q2 m5 p. a7 S" Z  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];
' c2 D2 I6 F) I7 \* p. d  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
+ K0 w& C1 |5 B) x  UF_UGMGR_tag_t   db_tag;
& ~$ c7 ]: N( o) k  char             part_name[UF_UGMGR_NAME_SIZE+1];
: {* g4 J( |  h  char             part_desc[UF_UGMGR_DESC_SIZE+1];# o6 }" F, M) r4 m9 g. O
  work_part_tag = UF_ASSEM_ask_work_part();' [7 U( N5 Z, s, v- s* U$ i
  UF_PART_ask_part_name( work_part_tag, work_part_name );5 ~: H9 f: c: ?. P, N( ^  c. _" \( f
  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
3 j. M& R: c  N% |  part_number,
( U& L- A  g& n# w* j* m  part_revision,
  |4 k: x0 U- e. p8 t1 h* V  part_file_type,/ V) @+ n* F! \+ o3 ]9 ]$ a
  part_file_name ));
0 x6 l* p3 Y7 I  printf( "For the current Work Part\n\n" );
) F$ `  c( k% K  printf( "  Part Number      : %s\n", part_number );
: W5 j1 ~: j" W; x9 E% V  printf( "  Part Revision    : %s\n", part_revision );
7 _. u! a9 y4 a$ M( O- i  printf( "  Part File Type   : %s\n", part_file_type );+ M! Q0 ~) h/ _+ \* _+ U* F
  printf( "  Part File Name   : %s\n", part_file_name );- u' w$ T9 b" F
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
3 s: [0 b) E+ C1 v' ], t  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
! H5 o' s& N- s0 D3 j% L  printf( "  Part Name        : %s\n", part_name );
, Z  z: j7 B) ]  printf( "  Part Description : %s\n", part_desc );, E+ J* x: K' H  `1 v0 P
  return 0;2 Q% o' k/ a) c
}[/mw_shl_code]3 C. `" u4 T; y2 k
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了