PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。/ O$ l8 J/ h0 `/ h

% ], ^) K8 _) f! Y; }[mw_shl_code=c,true]& s8 A/ a; _) U/ @6 O
#include <stdio.h>
' S! Y- M! S7 L+ D#include <stdlib.h>
7 n0 h( k. J8 q+ F0 x% D#include <string.h>
: @9 C2 H. |; I$ z' ~9 a#include <uf.h>
" h7 \6 w/ ]. j3 o#include <uf_ugmgr.h>
1 Y( O$ L% r' I' U#include <uf_part.h>; k/ ^0 k: L# i2 f( ]2 U
#include <uf_assem.h>
) h" h$ D+ m" S# y& ?6 U# }3 J#define CHECK( func_ ) \" M, E3 J; q+ }9 F8 E  |
{ int  ifail_ = 0; \( z  J5 G  F) S& E6 z
  char message[133]; \, u9 a6 z5 p7 m  l1 y
  ifail_ = (func_); + B7 T# h8 O5 y* U. r
  if ( ifail_ != 0 ) { \
+ N+ B; H. c/ S! N' F4 }, K    UF_get_fail_message( ifail_, message ); \' `4 ]" x8 T, t: ^7 [
    printf("ERROR: %s returned from %s\n", message, # func_); \
* M; f. \& p" d3 v% `# H    return ifail_; } }; s% A" e, Q% Z9 S) S/ y" D# `
static int create_part( void );& n# k+ l; r$ z+ p4 i
static int print_work_part_info( void );* e7 m( c+ ]3 D3 y" T5 r/ ~
/*---------------------------------------------------------------*/
4 O3 \' a! j0 s& Z- tint main(int argc, char *argv[])( G/ w2 c) o# b+ U
{1 H3 M! j: P. b
  int  ifail = 0;
4 t& ]0 C5 n. ]" Y! Q; U' E; r  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
0 f$ M0 A3 r; E  K  if (ifail != 0)2 y9 u+ G/ I6 }1 O/ }" w
  {( ~2 }0 N* L: N) C' }% b/ r
    printf("ERROR: Failed to initialize with error code %d", ifail);
. v, C" n/ Q! N$ L    exit(1);; F% Q8 g; w0 F7 T* }! |
     }
( F: l* e" D( {; ?6 A7 l1 @  ]8 n create_part();
$ ~3 t; d6 Y1 i, x1 ]- z  print_work_part_info();6 g7 u1 M/ z8 Q5 f% B$ X
  UF_PART_close_all();
2 [9 f% F& j/ F8 `% K  UF_UGMGR_terminate();1 {- e( w. d) j0 ]2 O
  return 0;2 C( O8 i# ]& j( F- s& z; B+ J
}0 Q4 A" d, R  l9 \0 ~
/*---------------------------------------------------------------*/" f" A% G) @' k1 v
static int create_part( void )
3 C- A; t9 u* H: H0 n{
, J2 w. p9 h2 k3 W- u* [  char*                   part_number = "600-A-wej-mk1-eng";
6 K! W9 a% G/ B: C  char*                   part_revision = "A";
; P) W+ \6 L" [6 H  char*                   part_file_type = "master";
0 x$ P  {' V4 A8 Z" R  char*                   part_file_name = "";
' y# B1 ?7 q7 [+ q0 t% G  char                    encoded_name[MAX_FSPEC_SIZE + 1];# ^! ~# p: H7 O  k& g3 B
  tag_t                   part_tag;2 r2 z" x& F& b5 _# c
  UF_UGMGR_tag_t          db_part_tag;& ~  D) P5 d! p2 n" U- j8 e; `8 f
  UF_UGMGR_tag_t          root_folder;
( J4 w$ n" A% f2 G  char                    root_folder_name[UF_UGMGR_NAME_SIZE];
1 y' G2 x3 s0 j  T8 }  int                     i, count;
) H; M5 A7 N. t& d/ ]+ t  UF_UGMGR_tag_t          *folder_contents;
3 D0 h/ _' _$ O5 C/ _" N) m, F$ ?  UF_UGMGR_object_type_t  object_type;
* g& S' p, T# `& @  char                    folder_name[UF_UGMGR_NAME_SIZE];
; K% S" v7 d+ {/ F$ T6 u  logical                 folder_exists = false;6 m( Z, k9 d' b; k2 r/ J+ Y
  CHECK(UF_UGMGR_ask_root_folder(&root_folder));: g2 C! S8 }8 G# n" u1 h' h
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));: S  Z( W+ ]$ k  q- ?
  printf("Root folder is %s\n", root_folder_name);+ c" q5 {0 N- j" r
  /* Scan through the root folder, looking for a folder called
- ~7 z/ T, ~, F3 J7 J     "Test Set Default Folder". If this folder exists, set it to be9 E* A2 F" C( |' F  {
     the default folder into which newly created parts are. H* k) n0 E' i$ c4 N7 I9 u
     placed.* y6 r- {. G4 Z
  */
! q1 f6 s# L  L+ c6 q: T  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
9 s  H/ `3 V- w6 H8 y, h  for ( i=0; i<count; i++ )
, Z1 t6 G  {- T1 L- ?8 V  z  E  {$ t( b* P5 S& F
    CHECK(UF_UGMGR_ask_object_type(folder_contents,3 b: E; ?  a4 F! P& v% H
   &object_type));- ~. i2 e# ~6 l" t; M: b: Q
    if (object_type == UF_UGMGR_type_folder)
0 }5 N+ {+ L' W: M) P" v8 {$ U2 j$ ^- Y    {
2 R8 g/ G8 z6 ?' U- p      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
6 f) b# w1 B% i5 V& y      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
$ ?7 Z. d) h: l9 ?9 g      {0 F% z( l/ J7 ]
        printf("Test Set Default Folder exists\n");
' ]9 s5 d% Z- x1 ~' r: y; t        CHECK(UF_UGMGR_set_default_folder(folder_contents));6 s- @1 q  B) W! u& t% I6 G4 P
        folder_exists = true;+ B8 d+ J# r% l' N0 L2 D+ ]1 b
        printf("Set default folder to %s\n", folder_name);$ F) g8 m1 |+ E, d. b1 G' m
      }
- y$ v/ F3 e, i    }0 S0 o$ r1 T3 r
  }! B1 Y% s; j- o& D, u6 h' T
  /* If the folder "Test Set Default Folder" doesn't exist, set the
$ Q: t8 s  H2 f: n4 R" m     default folder to be the root folder.+ ]0 M) N9 l+ G! m/ s8 U
  */
$ p* u- K* ]; d3 y1 v' L3 ?; O, i  if (!folder_exists): `1 _, F5 H6 P& [; X
  {
' s7 P1 @2 a+ W  U. r; Q    printf("Test Set Default Folder does not exist\n");, z  |$ z  M' J& g7 l. \9 f. s
    CHECK(UF_UGMGR_set_default_folder(root_folder));
: s  W1 S/ R2 [3 {9 T9 ^! K    printf("Set default folder to %s\n", root_folder_name);
% m; O' @  o3 O: ]8 u( ^+ i+ N: K1 s  }) U$ A9 Z; q) U
  printf("Encoding UG/Manager part filename...\n");
6 p6 R* f9 ]; i5 b! U4 X* N& a1 m  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,, a  O. j% L: }/ O
part_file_type,
9 t( L# S6 k% p# i3 [4 Q part_file_name,/ }7 ]1 n- d8 ?; }
encoded_name ));
7 ^; o6 i, r& H/ }  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));6 q7 _6 _4 R( k8 |& t2 O* L
  printf("Created part...\n");
; J7 ]- e0 I& y% t8 z  CHECK(UF_PART_save());
* t' N! B# S! P6 H2 w, S  printf("Saved part...\n");5 k" _* B, I; S% _4 h5 s/ {
  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));2 r: z$ C7 G2 L
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
2 j  l5 Z6 O# X"Mk3 Engine" ));
, T3 X6 t5 I. M+ J; N  printf("Set part name and description...\n");
/ E( N1 O  ?' Y3 M6 x  return 0;. w6 S' |, d$ {- c
}
' c2 o" Q" A! }( N9 W/*---------------------------------------------------------------*/- t- |) W0 W1 f4 `) B9 G& M
static int print_work_part_info( void )
9 s1 j- F4 p% E& j) u{/ {" O# C  y' [' J
  char             work_part_name[MAX_FSPEC_SIZE+1];
  y7 |& M% b  ~  tag_t            work_part_tag;5 X! T  f1 S" ^4 H4 u6 T$ z
  char             part_number[UF_UGMGR_PARTNO_SIZE+1];4 d4 ~( Q0 G) R2 J( N
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
. T9 P0 s: j1 @, ^- J/ Z# G  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];. W( F) u( F0 R; C5 s. V0 @
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];8 [. n$ |6 T9 d( X) ^1 x3 T
  UF_UGMGR_tag_t   db_tag;
4 d1 x9 [1 F0 X+ Z. l: E' m4 R  char             part_name[UF_UGMGR_NAME_SIZE+1];
" Z9 C0 K, c' R  char             part_desc[UF_UGMGR_DESC_SIZE+1];0 B" p! O3 K6 L5 r7 P
  work_part_tag = UF_ASSEM_ask_work_part();
$ h; _1 K; o" U' J9 _  UF_PART_ask_part_name( work_part_tag, work_part_name );
* ^4 v2 ]- |4 H6 q' Q' q  CHECK(UF_UGMGR_decode_part_filename( work_part_name,5 B9 u4 x, D) ~# x' _
  part_number,
8 i, d7 _, B) r$ T9 U/ e  part_revision,
0 s( a2 G  v# Q7 N! B" F  part_file_type,' {% w3 r$ z  U, b- O# t
  part_file_name ));: k  u# Q: K6 m. ?  s
  printf( "For the current Work Part\n\n" );
6 `4 @6 Y, l1 W% }8 Y/ V7 B- Q  printf( "  Part Number      : %s\n", part_number );
9 j: ~8 x" s- t, f- D2 F" p1 X3 [7 S  printf( "  Part Revision    : %s\n", part_revision );3 k3 \3 `/ O. V
  printf( "  Part File Type   : %s\n", part_file_type );* A# W- l! \% }
  printf( "  Part File Name   : %s\n", part_file_name );
: B- `+ b4 z/ h CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));8 N5 s4 |& o: p& N7 x2 ]5 z6 v
  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
! U5 M; R  ]/ V- U3 C& t  printf( "  Part Name        : %s\n", part_name );/ J( n5 s- N3 Z1 w
  printf( "  Part Description : %s\n", part_desc );$ a$ g% C% R- ]  F0 ?# N/ Q6 I
  return 0;
; N& Y" Q3 H* K9 ~: ^2 j, Z. V/ H}[/mw_shl_code]
. q2 g5 M# D! N5 t* }" p2 u# P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了