PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 2017-12-7 11:22:15 | 显示全部楼层 |阅读模式

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。' w2 j$ g4 f/ V7 g; ~; N

& a( ]' e9 l0 n6 a5 u[mw_shl_code=c,true]2 v- k& g4 ~. e5 y
#include <stdio.h>. j3 A) K! }$ \4 L- J" W( d- X; y
#include <stdlib.h>' u: s8 Q$ Z" Z- o5 p1 G; J
#include <string.h>, b3 ~4 K( C( F5 H4 Q; f
#include <uf.h>  i3 F- v" O, f1 |6 h
#include <uf_ugmgr.h>
7 }- H4 X/ Q8 x$ I#include <uf_part.h>! n6 d4 b% I4 ?2 B9 @
#include <uf_assem.h>
3 u1 F# z- O2 U3 @#define CHECK( func_ ) \: y3 G  B0 R1 ?, E
{ int  ifail_ = 0; \
" r2 G( t  @8 g8 m; u/ W* t" C9 |  char message[133]; \. |" J) L' n, @4 _% d
  ifail_ = (func_);
* T/ O5 e7 i) z  if ( ifail_ != 0 ) { \% q1 W- R0 s7 z; b- W6 d  Y) e1 ?
    UF_get_fail_message( ifail_, message ); \
) c% j, d! C! `  A9 I    printf("ERROR: %s returned from %s\n", message, # func_); \
2 \; k! b1 G1 F9 F    return ifail_; } }
) l& A& E  V6 T3 l% i/ ~! kstatic int create_part( void );
. o9 G$ t4 O2 y) i- U; |static int print_work_part_info( void );
( k$ V: A' {1 t/ H" O1 A/*---------------------------------------------------------------*/
: S0 |- p- I4 U  x. Pint main(int argc, char *argv[])
2 Y) n' U: @# f4 X5 ^8 {{
+ J9 D' J7 L6 ^0 @* |3 B. }: P- u# \0 b2 C  int  ifail = 0;
# D, C8 v' ~. `  M/ K- Q  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
  ?6 _9 A" Q4 H9 K  if (ifail != 0)
; w% }( B% f! Y1 |" |4 W, Q" `  {: `/ j/ p: P7 v, l' H1 T$ n3 [3 ]
    printf("ERROR: Failed to initialize with error code %d", ifail);" ?9 C: q* b: y1 h2 N8 s
    exit(1);* g! m! _; F# h2 ]4 ?0 c5 L- f
     }
7 C' b+ d6 k: `4 B2 g3 p create_part();
- N( {& V6 z8 z  print_work_part_info();
  F5 a; k6 E: x1 W: }  UF_PART_close_all();
, G$ @: c# g7 \$ f/ x8 l0 D. Y6 P  UF_UGMGR_terminate();
/ s& i. P2 H1 Q/ P  I5 p3 |  return 0;
$ Z: W* E7 \$ r4 C- ]6 v! L}# f) C/ `% k3 Y6 a) y8 i6 i
/*---------------------------------------------------------------*/1 [) ~7 [  S% ]) q( @* q
static int create_part( void )
: @$ u# H! h% T$ k{$ D6 S5 F. E- ]3 o6 K
  char*                   part_number = "600-A-wej-mk1-eng";
; o* Z0 P9 B! [( B6 S+ W  char*                   part_revision = "A";
% D5 b, T. I* `* m" P  w; E1 I/ s+ ~  char*                   part_file_type = "master";
; _' z8 W2 T; c6 X  char*                   part_file_name = "";
0 s: o( G- |% l8 ?0 [+ S+ [  y  char                    encoded_name[MAX_FSPEC_SIZE + 1];7 v) p6 `( x6 x8 E% u! J
  tag_t                   part_tag;0 g2 V1 J: o+ d& O. r
  UF_UGMGR_tag_t          db_part_tag;
& `- S0 Y  t1 T  {! ?+ g# R  UF_UGMGR_tag_t          root_folder;
: G% E& ^; O  c$ E  char                    root_folder_name[UF_UGMGR_NAME_SIZE];
9 ~4 c' ^: D9 s  int                     i, count;& \5 l6 ^# y3 m/ i
  UF_UGMGR_tag_t          *folder_contents;
. q% [& G! F8 ^! Z" p+ e  UF_UGMGR_object_type_t  object_type;
& K1 R2 d& j% }) f  char                    folder_name[UF_UGMGR_NAME_SIZE];
) k$ O- R8 h2 E& m, i0 P  r  logical                 folder_exists = false;0 v8 A* V, M4 g
  CHECK(UF_UGMGR_ask_root_folder(&root_folder));
4 R: Z7 p+ m& v& L9 D4 [- b; O, S  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));  O+ o2 [4 x. X0 X2 u$ f% Y# }
  printf("Root folder is %s\n", root_folder_name);! o5 m  h. k# q' w0 y
  /* Scan through the root folder, looking for a folder called1 K( y# R% h) g7 H% J7 P- I
     "Test Set Default Folder". If this folder exists, set it to be
7 m) N/ @  S2 @( J8 {& r2 A     the default folder into which newly created parts are
1 D8 N. \8 n8 L  }     placed.: i3 o" A9 o  ~' r
  */
! r& L+ m3 R9 _) `9 |  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
/ w  i- J0 m6 N' V4 `8 V& v  for ( i=0; i<count; i++ )/ P' h  I/ t0 D; j6 M1 k
  {0 {/ Z# b2 q& u& f, W5 M$ D
    CHECK(UF_UGMGR_ask_object_type(folder_contents,# k' ]0 w& v0 l- ?# ~! }0 ]
   &object_type));
- K% [! I5 U8 F+ c& Z    if (object_type == UF_UGMGR_type_folder)
9 A+ v# ?5 {2 I: g    {
7 E5 [8 o' |# x# ~' X6 ^: C5 ]' S      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));! q# w( ^- s$ d0 H
      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
8 e2 S# u; k# D: A      {
* k, v$ W* T6 U" A3 b) f" u9 F        printf("Test Set Default Folder exists\n");
: P. Y7 Q3 z4 l2 i$ t0 d" Z' D3 [7 v        CHECK(UF_UGMGR_set_default_folder(folder_contents));* E& _4 y8 R; R$ F  @) [5 y6 ^
        folder_exists = true;3 f2 U9 G6 ^2 r* f3 J
        printf("Set default folder to %s\n", folder_name);
& r5 d# {: o2 W& L  @! i, K2 ~      }5 \& z* @5 d; G1 k+ A
    }
1 i1 Z. D. F$ ^3 R$ t0 I: \3 r  }
9 F% O" U3 @7 Q2 p  R2 T+ T  /* If the folder "Test Set Default Folder" doesn't exist, set the7 v; v) W$ A5 P* S& w( w0 _5 y
     default folder to be the root folder.( F; P, D$ Z5 K: S7 H4 d
  */3 ^) |  O! V* e1 b: ~+ Q
  if (!folder_exists)/ ?0 M7 h6 r) P, a; n; z9 k. {- ^
  {& C( m7 w. g; v1 U0 k" J6 b' D% I4 T
    printf("Test Set Default Folder does not exist\n");% G. L4 ^4 Z6 Y/ q
    CHECK(UF_UGMGR_set_default_folder(root_folder));$ z( L2 [0 B0 y# Q
    printf("Set default folder to %s\n", root_folder_name);" d. v3 d; K, T% x4 b  e
  }$ y5 B9 K9 e  H" G2 A* }% z0 \; {
  printf("Encoding UG/Manager part filename...\n");6 c8 `2 }4 o( ?' [
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
" @& y% ?# ^! @% [ part_file_type,% h' `. H* Q+ C7 D" X
part_file_name,; D1 u8 ~+ n* z( T3 P7 y
encoded_name ));) L% a7 q! b7 y% V8 w* `# c( E8 B
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));* `- n; q8 R- k) P2 u
  printf("Created part...\n");
: j& x) R: O; Z1 r8 |% v" e7 U  CHECK(UF_PART_save());
# W& U8 ^% X0 w  printf("Saved part...\n");' H0 T* T# O2 s1 i
  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
$ I3 V  c  a# l' ?3 e3 D: V  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
! y: S+ m- {/ B; g2 y"Mk3 Engine" ));
: W( ]; D, j" Z& s5 q2 E  printf("Set part name and description...\n");) R: `; s6 B) g( r7 Q+ _
  return 0;
6 ^1 S8 [  S9 M1 g! o. \}
7 R, K* l' X# D' z: Y; w/*---------------------------------------------------------------*/) V7 \4 |5 I" c* p; ?3 m  ]
static int print_work_part_info( void )
$ K5 T: W9 Q, f{* e9 u+ }7 f* C+ q
  char             work_part_name[MAX_FSPEC_SIZE+1];
  A5 P1 U5 @. h! @  tag_t            work_part_tag;
( E* N9 ^. Y4 ~* l7 o! ^  char             part_number[UF_UGMGR_PARTNO_SIZE+1];  y& z9 j4 ~! Y6 A! }5 |/ v
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
+ H5 e( H, V3 x2 O0 t: \2 ?  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];
4 K6 l7 a2 Z& u( C1 T* F  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];  q7 \9 Y  V5 N  i; j8 e/ g1 ~
  UF_UGMGR_tag_t   db_tag;
, W1 O0 ]. j1 Z. r# j3 S$ I7 Q  char             part_name[UF_UGMGR_NAME_SIZE+1];
* \& a" L  S/ p2 j: G2 ]  char             part_desc[UF_UGMGR_DESC_SIZE+1];( R! h8 @8 S7 G( n. ^
  work_part_tag = UF_ASSEM_ask_work_part();  x/ |# H+ N& m: }1 m
  UF_PART_ask_part_name( work_part_tag, work_part_name );4 r+ }4 M4 ?+ }4 v7 r: u( A
  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
8 Z1 \) P5 H* s  k  part_number,
2 Z( R  K- E9 }) h7 v& B8 f" t  part_revision,
# @. x- X, E% p# I3 \  part_file_type,
( d6 j9 N6 N8 }) G  R& Y  part_file_name ));
  L2 X" X9 r! R: e7 ~5 m  printf( "For the current Work Part\n\n" );4 [* e) W3 t* ^; N# z
  printf( "  Part Number      : %s\n", part_number );: w8 ~* ^7 m" I7 P; O
  printf( "  Part Revision    : %s\n", part_revision );
) c1 |9 c- J& F8 H+ [- s  printf( "  Part File Type   : %s\n", part_file_type );
7 p# P, m3 ?4 w, Y; R2 t. D; k" N  printf( "  Part File Name   : %s\n", part_file_name );
( F' q3 a% G/ J# p0 {5 N# C& h CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));8 I# t& B+ Z$ v, ]6 j3 Y
  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));' K& f3 |# G% B8 W" G. p9 J' z
  printf( "  Part Name        : %s\n", part_name );* k/ r, i7 Z& q2 S5 o2 C* j
  printf( "  Part Description : %s\n", part_desc );
$ W) n: m9 p' p% o  return 0;& R# G8 E$ }, K9 W- ?& |
}[/mw_shl_code]" m( J& F' w/ ^9 K* }: w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了