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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
; x  s  z) h8 j8 `( M
% K- r% H4 S( v6 t, x[mw_shl_code=c,true]5 v* G' l' m4 I! r( V0 f
#include <stdio.h>  O$ r# _' S" ^) g6 y. a' t
#include <stdlib.h>
5 i( l) M: ?# n0 N; ~; q# ~#include <string.h>! [* `$ ?5 F  `$ S  z! P" n
#include <uf.h>
% {4 z) N% u1 l9 F( U9 `7 @#include <uf_ugmgr.h>  O8 h# P/ o8 h; i
#include <uf_part.h>
/ o  B- y* B  t#include <uf_assem.h>0 [1 ~$ N- g/ P( V% a, h5 Y
#define CHECK( func_ ) \- _5 g1 X, m. I9 _
{ int  ifail_ = 0; \6 _' z2 d6 Q, q( l
  char message[133]; \0 w6 F+ G+ B/ W8 Q
  ifail_ = (func_); ! [& i5 V- M/ f7 {( s" ]% e" a
  if ( ifail_ != 0 ) { \/ l, A- S+ U) \' u7 K( w, U- W$ V
    UF_get_fail_message( ifail_, message ); \, h7 {: }) ~( k. K$ B' V6 k
    printf("ERROR: %s returned from %s\n", message, # func_); \
* u7 H7 w/ o3 H! O* t( A6 P    return ifail_; } }1 x4 G* @; l. {" g- ?
static int create_part( void );
1 O+ g8 B! `9 Ystatic int print_work_part_info( void );
$ N; X- p# N: f/*---------------------------------------------------------------*/8 \5 d" T4 u0 n5 A
int main(int argc, char *argv[])
( P$ R- T$ X, N, I# @, U' N* Y; Z/ Q{# P3 V8 J8 `: @6 G3 P6 i; \
  int  ifail = 0;
9 R- l9 q7 g' m, `9 M" b- a! Z  ifail = UF_UGMGR_initialize(argc,(const char**)argv);# U1 v; O! N- E! [3 f* p# D
  if (ifail != 0): o# P8 @: _! J: f2 C; _
  {8 Q, L; _& C4 m" q6 r
    printf("ERROR: Failed to initialize with error code %d", ifail);" ]9 u) L: G+ u- a
    exit(1);0 U5 Z( H" ]+ @# [  ~2 f* G
     }
; H8 e! ~# R9 J0 P" L create_part();
3 H! |# z9 V% @% D3 d  print_work_part_info();$ O7 {6 N" w9 f( _7 V
  UF_PART_close_all();
/ e/ Y- l) X1 @" u+ u! p( f- W  UF_UGMGR_terminate();* G- n2 B- R% Z! a7 J9 `
  return 0;
/ W: d0 N% U9 \/ R}/ j" q) F0 B/ S9 C4 E$ K! f, Z
/*---------------------------------------------------------------*/' h2 x" w% _- v6 v
static int create_part( void )
# C% _1 g+ O1 n: p& M- M/ N{
8 T! f# j8 L% a: C; J2 i6 h2 z  char*                   part_number = "600-A-wej-mk1-eng";" l; K+ ^: L: t4 ^' L. R) M
  char*                   part_revision = "A";6 A6 l2 `; \. s3 @1 @
  char*                   part_file_type = "master";
8 d& d! U6 @5 t1 i0 `3 R  char*                   part_file_name = "";5 [3 m" P* q* K1 e" o; d2 {
  char                    encoded_name[MAX_FSPEC_SIZE + 1];
8 s+ }4 d2 W" n9 g, Q* U  tag_t                   part_tag;
) C: c! a2 Y* k  UF_UGMGR_tag_t          db_part_tag;
5 r7 u  W% A7 I: s$ g- v+ ^% J  UF_UGMGR_tag_t          root_folder;
7 `: Y5 M" y$ [$ u& n  char                    root_folder_name[UF_UGMGR_NAME_SIZE];
, w: ^5 ?, T& K7 j# J  int                     i, count;
! Q, i* t  J3 B5 |  UF_UGMGR_tag_t          *folder_contents;* G2 Z) _% E( r' O8 Q6 \4 v
  UF_UGMGR_object_type_t  object_type;. D' @0 Y0 d. m0 U* a9 u
  char                    folder_name[UF_UGMGR_NAME_SIZE];* {1 D; Y6 s* u5 Z: I2 q5 D
  logical                 folder_exists = false;
/ E4 w5 b7 Z& B; ?  CHECK(UF_UGMGR_ask_root_folder(&root_folder));5 O$ h- I5 f* m& y/ b- L( w4 I
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
% `/ O/ E; {1 K3 B$ ]2 ~0 {/ \  printf("Root folder is %s\n", root_folder_name);
" l( Z3 Q" H6 |' N' [  /* Scan through the root folder, looking for a folder called  y0 W6 H2 ~) t% O( q# I7 H
     "Test Set Default Folder". If this folder exists, set it to be
& q% P6 _: C8 ]8 `* f     the default folder into which newly created parts are
9 B- l- n- p  {     placed.8 A3 M# \7 `+ B% k7 ?6 w& m
  */% H  K1 n; [) ]1 Y. O; N! {  u+ D
  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
# w1 N* I7 a$ a% V! ^- C* }( Z  for ( i=0; i<count; i++ ); ~, Z! t# h9 G" x' o
  {+ L- W2 m0 U3 a' t6 W6 b3 S: W( _
    CHECK(UF_UGMGR_ask_object_type(folder_contents,
3 M* @0 I  t0 P   &object_type));
3 P+ N; |7 ~, }: K" C    if (object_type == UF_UGMGR_type_folder)( d' ]) q' {7 K/ ~, P5 E9 i
    {
- f+ Y, z+ P$ d2 ^% U' I: w' |      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
% X1 @$ q! |" n' J% x/ J$ J      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )# \& G9 S" V: g/ \
      {" G  l+ u* L( }* n
        printf("Test Set Default Folder exists\n");
. Y& F2 b# r1 Z/ F        CHECK(UF_UGMGR_set_default_folder(folder_contents));
/ J. {" ]5 Q# O6 u0 B        folder_exists = true;& g) Z* o1 k) o* G& g
        printf("Set default folder to %s\n", folder_name);
# _% \; N3 u& k! k5 f; V      }- v3 z: i/ Q6 c; d4 U* F' S
    }" J; W) P7 a2 u6 ?
  }
1 N2 Y" F8 x. \+ \4 R  /* If the folder "Test Set Default Folder" doesn't exist, set the
# t6 U# o. d/ H; c5 p! F9 @6 f     default folder to be the root folder.9 V2 P. Z; |- D! D8 D: v
  */
9 B" f" |8 i5 d. k" R: [4 I: {  if (!folder_exists)7 c) S. D0 A% P! `. g
  {
- A! A7 Y9 U7 J& [: K6 u! h. f    printf("Test Set Default Folder does not exist\n");! u% B2 Q( u4 l: q7 s
    CHECK(UF_UGMGR_set_default_folder(root_folder));
" z* ]1 \  k( y9 }" ]; J    printf("Set default folder to %s\n", root_folder_name);
1 r  L3 L! Q$ o& ^9 x% w' O: J  }% D9 l/ M- J2 `7 S
  printf("Encoding UG/Manager part filename...\n");
( |% j8 ^6 h6 A$ t( K3 o  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
7 {$ |: ?, f9 R. j part_file_type,# [6 |* d, d: b" W3 `1 @" \7 |" M
part_file_name,
% m% X. p% t! W7 d& V encoded_name ));+ t0 h5 g$ z7 r) H- V7 P
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
, Y/ e7 z1 q3 }% [, ]  printf("Created part...\n");
7 I* R1 O* v+ w  CHECK(UF_PART_save());
1 S, ^8 {6 ]% C; I  printf("Saved part...\n");4 X. V& L- C, |; b; U
  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));0 m6 k- M+ X" ^  s2 q# E
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
& w# I( b8 Z3 G5 v/ t( a# U"Mk3 Engine" ));
3 `* `$ p# H+ A+ T$ D% D# F  printf("Set part name and description...\n");$ G1 ~" e( O/ v/ p5 s: }
  return 0;4 c1 u9 Z6 D" B/ U
}- R9 V' s! z! i* y  I/ {5 C2 D% {  L2 ^
/*---------------------------------------------------------------*/
5 x7 }' Y  @/ z7 [. e/ x( bstatic int print_work_part_info( void )
1 U7 \: q9 L3 r0 r  `, h3 u{" q0 I$ i" x: D, R
  char             work_part_name[MAX_FSPEC_SIZE+1];
" K) B4 A2 o0 f1 q% J  tag_t            work_part_tag;
5 p5 j! S/ c; s. l2 J  char             part_number[UF_UGMGR_PARTNO_SIZE+1];
- @% j" B0 T" W  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];8 ]. e4 q+ ?; l: b$ B' |
  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];
2 {4 s" K7 m4 y6 a! _2 ^( ^  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
- B" h  c, I8 U6 m* z5 R: L; t. h  UF_UGMGR_tag_t   db_tag;  @9 Y: X5 e' \% `6 M& t
  char             part_name[UF_UGMGR_NAME_SIZE+1];$ U" ^, j, z$ a2 Q, E  A
  char             part_desc[UF_UGMGR_DESC_SIZE+1];
0 C# N3 c. c: z/ m" z  work_part_tag = UF_ASSEM_ask_work_part();6 q% z4 J# \& d9 @- P
  UF_PART_ask_part_name( work_part_tag, work_part_name );- r6 l) \. s! J# |$ M$ l
  CHECK(UF_UGMGR_decode_part_filename( work_part_name,+ U5 W6 M" C) x( K& K( G  Y/ @
  part_number,
  N. m) \% J) ?7 v4 X  part_revision,
1 }1 O" j0 X8 s* v% M  part_file_type,
$ h( |. R& E2 ^6 ^2 L  part_file_name ));1 A& J3 A" [+ Y( r- f1 U2 U( `5 K
  printf( "For the current Work Part\n\n" );* }( P8 u7 ?) r8 n, P, p. K1 N
  printf( "  Part Number      : %s\n", part_number );. G, \, F2 w4 f' B% B
  printf( "  Part Revision    : %s\n", part_revision );
. ^& u$ |4 i, l; d/ f  printf( "  Part File Type   : %s\n", part_file_type );$ U, |' @! n5 ~  ]' [: f
  printf( "  Part File Name   : %s\n", part_file_name );; B/ U3 N! k# w/ h: {2 r9 K0 N) H! S4 I
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
; ]4 U% N" H* S* d2 ^+ H7 s  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
2 U: Q0 ?! p4 L9 U) s! U  printf( "  Part Name        : %s\n", part_name );1 z: s% @" E1 C% }
  printf( "  Part Description : %s\n", part_desc );" Q8 J) b# G1 ~% B: }
  return 0;
/ B$ y, _; Z+ b: u) P% ]}[/mw_shl_code]
( a& k$ W0 k* e9 T0 B' e( M* n# S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了