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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
( f7 a8 d5 f) Y# U5 G! T$ h; U/ U
[mw_shl_code=c,true]
% a  d- \1 j( [#include <stdio.h>$ R7 m$ v/ Q. O3 O  `
#include <stdlib.h>
  U1 s& s# a: W" i6 F#include <string.h>
  V2 U9 @9 y) ]" T3 q# O% K6 `#include <uf.h>
! N0 ^8 e9 t1 X3 ^#include <uf_ugmgr.h>1 [# q& \  }9 P& I, X# x
#include <uf_part.h>7 _: X! _. h" t  P1 Q- w
#include <uf_assem.h>5 |2 H6 T3 k+ i5 W! H( a
#define CHECK( func_ ) \
, r- T- P4 h+ e) [( S- c* \{ int  ifail_ = 0; \9 W" x7 e* ^, j) q4 L# W- }5 t
  char message[133]; \# k  h% R, N" P$ `' \: r
  ifail_ = (func_);
8 s: x$ x1 j: x' b1 J8 y  if ( ifail_ != 0 ) { \8 o3 |, B/ U4 u, H0 e$ J- E' }9 K$ K
    UF_get_fail_message( ifail_, message ); \4 q, ^; U" |& h7 V! g. k
    printf("ERROR: %s returned from %s\n", message, # func_); \
) x2 e/ O! a& k' ]1 i    return ifail_; } }9 I* R! C8 O0 f7 P
static int create_part( void );
5 O& v6 B/ \, `- Cstatic int print_work_part_info( void );  H2 \" m. b% V
/*---------------------------------------------------------------*/: ^8 X. C$ G" J  ~) i8 b% p" K. C
int main(int argc, char *argv[])
" R+ R  d& g# p" x{
% J9 U4 X' l1 {7 D  int  ifail = 0;( y: K' |8 b0 x3 M  U! D* A
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
: k4 ^7 \; }5 y$ P6 O  if (ifail != 0)
- b3 [% o2 Q. J! j3 A; I  {
: |7 d% z8 C4 ]2 ?! W0 N    printf("ERROR: Failed to initialize with error code %d", ifail);  }' k+ Y% K! w1 y) o
    exit(1);- }; J* y- J- D5 ~8 O+ k
     }2 g) H' A! x( \' I( p' m; w. G
create_part();, h& r$ ^+ f0 _; Y" y
  print_work_part_info();6 ?7 \/ c6 Z- l3 I4 V: E( f- F
  UF_PART_close_all();
- e* y/ Y+ k4 @/ \  UF_UGMGR_terminate();% ^: S- n, \4 I* [
  return 0;% b9 V5 m2 `3 X. ^+ R' L
}
$ i5 {- E# o9 c( u' K* F/*---------------------------------------------------------------*/
: {  y; S) ^/ b- Mstatic int create_part( void )! J+ A7 a2 d1 {! }
{# S0 j- Z+ a5 o9 a$ |1 S
  char*                   part_number = "600-A-wej-mk1-eng";
; V% m  W( W2 H6 n  char*                   part_revision = "A";
9 }& l+ _* s, R$ O+ u/ Q" G4 p; R  char*                   part_file_type = "master";
6 y+ L+ h" _1 r2 ^  char*                   part_file_name = "";# j" z- X8 Z! Q/ a0 W
  char                    encoded_name[MAX_FSPEC_SIZE + 1];* d+ y7 ?( j  a% k/ n/ M) K
  tag_t                   part_tag;6 u% `# J4 a, A
  UF_UGMGR_tag_t          db_part_tag;
6 Q  ^  g& n; X! Z" ~; E$ u  UF_UGMGR_tag_t          root_folder;. m+ d3 `# A% K
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];: i) m# Q2 O2 ]& v0 D
  int                     i, count;4 P5 X+ U. e/ ]/ g% d0 g" C) u3 C
  UF_UGMGR_tag_t          *folder_contents;2 h* q2 J  Y' M& }
  UF_UGMGR_object_type_t  object_type;
6 U0 W3 X, j% ]" w  char                    folder_name[UF_UGMGR_NAME_SIZE];& `! w  Q# @) ?
  logical                 folder_exists = false;
4 a) J" [: i( c, y( F- e: ^  CHECK(UF_UGMGR_ask_root_folder(&root_folder));
1 k2 c0 A8 v9 P; B! a# b5 ?* n& k  `9 S  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
: k( r+ h8 C" g* c( b  printf("Root folder is %s\n", root_folder_name);! M/ V# `3 P) E, m
  /* Scan through the root folder, looking for a folder called' f( A$ D* v" q6 }  y9 W" k! D
     "Test Set Default Folder". If this folder exists, set it to be7 H& }  B  V  {" v
     the default folder into which newly created parts are
3 |7 R6 j# S# C7 ^5 r     placed.
6 F. S7 M* s# [4 R1 Z  r( a  */2 l2 U. E+ s* w
  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
9 d+ R9 K8 Q* `% T7 n  for ( i=0; i<count; i++ )7 |/ N3 B* _( W4 X/ x5 ~4 T. y* }9 }8 R
  {# _5 l! K& w+ J' p
    CHECK(UF_UGMGR_ask_object_type(folder_contents," `* {0 Y" n/ r4 a& g9 r( S
   &object_type));
( c3 W$ i+ x4 H9 [$ |" t) O    if (object_type == UF_UGMGR_type_folder)6 K+ H9 l2 d1 ^7 I6 p
    {/ s" x) f. v* V$ Q- v/ u
      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
3 u/ }/ @1 ?# Q+ D      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
/ Q" ~3 n8 N1 ]' V8 k( @0 N- F      {
# L6 [) m! `. b# I( l5 ^        printf("Test Set Default Folder exists\n");
$ q2 b  {% Y8 b! N        CHECK(UF_UGMGR_set_default_folder(folder_contents));
7 d1 ^- t: c$ ]        folder_exists = true;5 `/ P$ y& v; N8 i. Z, I( D4 c. B# [
        printf("Set default folder to %s\n", folder_name);* n% _# J& w! ]9 v
      }! n2 Z0 P6 T3 n# \! n! J4 C
    }
- M5 H3 ]9 U! L7 u! G  }/ m; G/ j! h1 I- Y9 B  S
  /* If the folder "Test Set Default Folder" doesn't exist, set the5 \0 f" d: u5 S+ s6 f1 o
     default folder to be the root folder.* q; ]- C9 X2 `9 a/ C# o
  */- U5 ?! V6 f1 h
  if (!folder_exists)7 W0 Z4 n$ H2 c7 z, {3 L9 A
  {& ~6 E: P" ?! z% x& N
    printf("Test Set Default Folder does not exist\n");$ M: R! c( r" l4 E* E
    CHECK(UF_UGMGR_set_default_folder(root_folder));
% ]& S0 h, z4 x) {6 `    printf("Set default folder to %s\n", root_folder_name);
9 j; d) \' q3 a$ k  }
3 \: a/ {9 A1 A. n9 ~* Y  printf("Encoding UG/Manager part filename...\n");' r2 V5 B  N% i
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,, A7 v. ^8 K; R- @! p; x
part_file_type," [, G5 ?" U2 j: R7 N) x1 o6 C
part_file_name,: Q4 v, k" N  B) C/ Y
encoded_name ));
9 c( y% j0 J' i* U8 |  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
6 g: o6 W/ s4 U9 u- [% ]% K( K4 c  printf("Created part...\n");; ^- O( _, T4 [" z- N
  CHECK(UF_PART_save());: g3 y8 ?; P: v  C
  printf("Saved part...\n");, H2 f  c2 R0 ^
  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
0 s* \$ o/ K9 m  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",! E: p3 M7 |# v5 _9 {4 U
"Mk3 Engine" ));
5 z- Y- P" q' N) m/ {( ^  printf("Set part name and description...\n");6 S3 \1 Y/ A! t* w( _
  return 0;% t7 p' C  ~9 ^+ v7 b' E! Y' r- A9 F
}
$ x' ^, H* o% p8 L; C) n/*---------------------------------------------------------------*/2 U6 p: I2 u9 m4 p; p# V4 e. s
static int print_work_part_info( void )
. v3 d4 V( M) \" N" K{
- n' r0 ]8 X8 P+ U  char             work_part_name[MAX_FSPEC_SIZE+1];
0 o& ]& q# L1 C: C6 W  tag_t            work_part_tag;
- e9 t0 A! E5 x1 B  char             part_number[UF_UGMGR_PARTNO_SIZE+1];4 L6 q% Q: ]/ `! O
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
8 g2 Z% o9 c/ D! h1 S0 R. k3 U2 y  w  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];6 C; {% a( O6 J+ m! n3 j) q
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];- O) m- ^/ U7 c4 @1 y& j" P4 M
  UF_UGMGR_tag_t   db_tag;# K& K$ ^* d2 P: P! ]+ M. l! x/ `
  char             part_name[UF_UGMGR_NAME_SIZE+1];& S5 J" @1 g1 G
  char             part_desc[UF_UGMGR_DESC_SIZE+1];" q6 r# n% o2 S, }, l# J
  work_part_tag = UF_ASSEM_ask_work_part();
3 w  O6 [, i* Z" o1 F  UF_PART_ask_part_name( work_part_tag, work_part_name );. R" k1 q% ]# O( s% G# G( c
  CHECK(UF_UGMGR_decode_part_filename( work_part_name,/ N- _; x% i; R1 M, e
  part_number,
% ?" ~8 b9 y& I+ A3 ^3 U  part_revision,
; w* U4 f: g! a3 Q8 X  part_file_type,
  N1 D9 P/ H' g' Y0 E. [, h" d* }  part_file_name ));; m# L, V8 n( V- d0 M5 J
  printf( "For the current Work Part\n\n" );
; Q8 d7 K7 x% S; X5 b9 J  printf( "  Part Number      : %s\n", part_number );
5 e1 M1 D, h, s. M  @) _7 c6 k  printf( "  Part Revision    : %s\n", part_revision );9 F) Q4 i$ y2 j
  printf( "  Part File Type   : %s\n", part_file_type );
! g  q6 K9 j3 x0 e# c; O4 T* p  printf( "  Part File Name   : %s\n", part_file_name );5 d2 }" X4 E+ C3 T* a* d& C- t
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));1 I7 ~2 P+ H1 \% I; C
  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));* s# D; J! O1 b3 ?4 h) T
  printf( "  Part Name        : %s\n", part_name );
- |2 ]- W5 A2 ^3 n% k$ D- X  printf( "  Part Description : %s\n", part_desc );
3 w* R6 n3 u/ e! b; }* K* |  return 0;8 S/ F1 i+ E" X2 X/ j9 p
}[/mw_shl_code]
1 r/ K6 V& K1 l9 I6 N
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了