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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
9 r* Z- ^# ~# k4 \) ]7 {) f+ y( w
6 Z( }" Q/ h; V* i3 Y1 p6 i" o" J[mw_shl_code=c,true]
8 w$ U1 T1 h0 I0 x& ?7 b#include <stdio.h>% o3 S. Z6 n" ^$ {
#include <stdlib.h>
$ H  A/ m# l% V. w$ c: P#include <string.h>
% H9 x- B9 r7 u) V& _  G#include <uf.h>
# [; g7 C0 O$ s+ ?#include <uf_ugmgr.h>
8 I/ V' ^. b' E#include <uf_part.h>6 |0 {: W9 Z% _; X" n
#include <uf_assem.h>
! a& b+ J7 j8 g4 E6 d8 b#define CHECK( func_ ) \
* L/ z2 g1 X; k$ H! m5 O& m{ int  ifail_ = 0; \
. G' H+ h* E4 H7 [- C4 z  char message[133]; \
) Q( I. z$ V8 x0 q1 @) `/ U  ifail_ = (func_); 9 R' B& M, m* o8 `- V
  if ( ifail_ != 0 ) { \' w/ P; Y  u& l  t4 P8 i
    UF_get_fail_message( ifail_, message ); \
0 S, S" m4 D% K7 W6 ^) _* H* z9 v    printf("ERROR: %s returned from %s\n", message, # func_); \  e5 Z  w9 U, e5 W) e, q/ {
    return ifail_; } }
- }+ z- _- g" f+ R) v# M# C% `static int create_part( void );
4 J; H, c1 ?# a4 R; |static int print_work_part_info( void );) c% G1 ?1 s8 m! n- e+ W
/*---------------------------------------------------------------*/
' c1 d8 q1 e4 vint main(int argc, char *argv[])
1 b  A  a* O1 w( ^{9 [' o. m! I; ^+ I. S/ \* p
  int  ifail = 0;
4 E& K' |/ t0 P& S" O  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
' ]0 Y5 M- a4 W3 a3 b  if (ifail != 0)
- j1 @" \. z! {  {
: H% K7 o8 p% h% P2 W: i5 V    printf("ERROR: Failed to initialize with error code %d", ifail);
$ C/ x2 f; Q( V# h3 ^6 |) `    exit(1);: L2 w/ I, i, L4 d6 U
     }/ R" C8 H2 e' |. {' R3 O& h
create_part();
' U8 _, Q. h% z' h6 _; r  print_work_part_info();* J% ?2 y; J! E1 Q
  UF_PART_close_all();6 ~" `! e# u: K; y0 Q
  UF_UGMGR_terminate();
3 f+ U8 d, h/ y$ s5 Q  return 0;5 X; T3 A9 B# ]$ P) d- {% m
}5 |7 f5 S7 W. |1 {, b/ W
/*---------------------------------------------------------------*/
% o; A8 m9 Y# ?static int create_part( void ), {& m4 K0 B; @) I) r
{" W- V2 ]/ y7 _- d1 Q
  char*                   part_number = "600-A-wej-mk1-eng";5 l/ b2 z2 k' T) l6 @
  char*                   part_revision = "A";
# a' W$ n  _; g, N/ n: _" B  char*                   part_file_type = "master";' o% r1 v7 L# G
  char*                   part_file_name = "";
/ F: o% {7 m$ Y& e" ^' L' C2 ^  char                    encoded_name[MAX_FSPEC_SIZE + 1];
% h* _/ w) K; [% E% J( t  p  tag_t                   part_tag;* E% \6 X. z5 H6 Q7 D$ ]5 A+ z
  UF_UGMGR_tag_t          db_part_tag;
3 ]: B' L/ {6 x1 l: z  UF_UGMGR_tag_t          root_folder;! R( K2 f- z( s; g
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];
) u2 k7 i9 M# C( ?' E  int                     i, count;
8 g& `8 D  k9 q, S$ m3 w4 Y  UF_UGMGR_tag_t          *folder_contents;" n  X& c- B' V9 I! |1 a( [
  UF_UGMGR_object_type_t  object_type;, ?! o4 D9 D. J) I" D4 a
  char                    folder_name[UF_UGMGR_NAME_SIZE];
2 k4 q$ p6 r8 H* p# G$ p0 a2 d( t  logical                 folder_exists = false;. Z- j+ U* F0 `
  CHECK(UF_UGMGR_ask_root_folder(&root_folder));0 Q4 h; f0 r; C' t
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
- j% _% u/ r0 u  printf("Root folder is %s\n", root_folder_name);+ }. `* R' Q: w3 H
  /* Scan through the root folder, looking for a folder called4 Y9 p. E% D6 e( K" c0 W" m5 Q( y
     "Test Set Default Folder". If this folder exists, set it to be1 Y) A1 _( i) v' U- P
     the default folder into which newly created parts are2 u# L1 V. {1 M* B7 }
     placed., h  Y9 o0 }- [& n" F0 L
  */
" G  ^7 ]- y4 @% @; m1 }) f2 V  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));% P8 p1 I9 U; }0 t8 R+ O8 E
  for ( i=0; i<count; i++ )
8 h# K0 i3 T) g* ?# H; R( W  {2 Y6 z, R3 W7 [4 x6 I2 v
    CHECK(UF_UGMGR_ask_object_type(folder_contents,4 y, @" G4 X. w# C) M/ f4 [) s
   &object_type));
4 h. Q- R6 Y8 b! _7 O    if (object_type == UF_UGMGR_type_folder): Y0 ]6 y9 M  L/ e
    {( y5 B" c1 Q4 J+ y" m
      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));- V9 `  L7 m) H2 W
      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
* w7 b$ q+ U  n& ]0 Y; k      {
( k& S7 Z- W: i; G, }6 r0 e        printf("Test Set Default Folder exists\n");# \4 H# r; `/ v4 Q
        CHECK(UF_UGMGR_set_default_folder(folder_contents));7 }" g  `" {/ X) O
        folder_exists = true;( F7 P  H% T2 m
        printf("Set default folder to %s\n", folder_name);
$ \) B9 k' A% ^( j      }
+ U7 [# }) m6 K  n3 h    }
) `4 }% R5 e% C) o+ ^0 ~  }: l* T4 x( T4 k) \
  /* If the folder "Test Set Default Folder" doesn't exist, set the& G7 K& B4 w  h& y+ T& k
     default folder to be the root folder.$ _6 X  l6 y! g  o* H1 B- G
  */% i, p% k/ k& q$ v8 s1 O/ m
  if (!folder_exists)0 e. Z( \3 E' N9 T6 t4 H
  {7 U3 T2 J1 f+ D7 ?% ?; S/ z
    printf("Test Set Default Folder does not exist\n");" d) V7 B' e& h% e9 D
    CHECK(UF_UGMGR_set_default_folder(root_folder));& F! K6 }; U( v! ^  \
    printf("Set default folder to %s\n", root_folder_name);$ r. l3 I, ]$ L. I+ p9 R% J
  }
0 `( p( ~$ C) U& s$ G1 y% N  printf("Encoding UG/Manager part filename...\n");( f0 T( G5 }& L5 Q, n2 V
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,& m0 i' I& w# t9 p, N+ A7 q% o+ c
part_file_type,
2 g/ c* _. Z  e0 t" {, p/ G# S part_file_name,# ]5 B+ H" L/ ~( o& z" `8 A, g! W
encoded_name ));
6 t8 v' U5 m' m. B- G  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
* u* y3 X4 @" i) K! z/ R  printf("Created part...\n");1 f0 D. \. X, I, ~3 C
  CHECK(UF_PART_save());
$ j& X4 e* G; E1 b( |/ b  printf("Saved part...\n");
/ O4 |; l# @& S2 r/ R& F5 z  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));" R1 z+ @' ~6 q* P" Z
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
, |$ _* M# w) Y/ [, c# v& R"Mk3 Engine" ));
& L) T6 Q' n. c' x  printf("Set part name and description...\n");3 u: k2 G# ], x0 k! W( d/ J4 z% G
  return 0;' `/ v+ r5 m5 P
}5 A0 i8 \2 i6 f) ?5 O- ~/ q
/*---------------------------------------------------------------*/
, @- `1 N1 D7 f% m+ Cstatic int print_work_part_info( void )
, s( c& I, N" L7 O, ~{6 C$ e; A; e) r" I/ s3 `# I2 u. z
  char             work_part_name[MAX_FSPEC_SIZE+1];
# V9 f0 r/ H8 K  tag_t            work_part_tag;
1 K% z4 D- H0 U4 C+ @  char             part_number[UF_UGMGR_PARTNO_SIZE+1];
- Q; c  d  U2 t) b& d& [) H  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
: J  _7 ~, e4 T, X8 ?* I3 z  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];  U. E: L6 |6 w
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
0 Z5 B1 H) t0 q. K  UF_UGMGR_tag_t   db_tag;! u! b: D! I- M# t, _
  char             part_name[UF_UGMGR_NAME_SIZE+1];
3 S5 d( c" W. D  @8 e5 I* H9 C  char             part_desc[UF_UGMGR_DESC_SIZE+1];
5 L. h+ M. o& {* w* Q! m' r6 @) v  work_part_tag = UF_ASSEM_ask_work_part();
4 Z( V( L( G0 W; C2 P  UF_PART_ask_part_name( work_part_tag, work_part_name );
- O# `9 |( G/ V) @2 a- ~  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
  p6 G9 M9 t. U3 p9 Z* i  part_number,
2 ~- t& K9 o+ ~0 B6 V2 _  part_revision,
0 R* w' S( G  r8 z( j  part_file_type,
* }# Q! @+ }& s8 T. S7 c. p/ E' M6 ~  part_file_name ));
: I$ H2 W. m6 K% U  printf( "For the current Work Part\n\n" );
$ J0 |; v/ A1 j, _- x  printf( "  Part Number      : %s\n", part_number );
* E- c$ Q, K2 ~/ h1 n4 ^- R4 d5 c  printf( "  Part Revision    : %s\n", part_revision );  b% L) k& l) W0 \7 ~/ [
  printf( "  Part File Type   : %s\n", part_file_type );
" ]3 x5 k: H3 r& Z' V  printf( "  Part File Name   : %s\n", part_file_name );2 [- S  X3 K. @
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
( R6 f9 Y! A$ {0 q9 R" w$ x3 H  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));9 f5 _1 x* F6 p5 W
  printf( "  Part Name        : %s\n", part_name );
( a% s. x2 @  m! v- ^  printf( "  Part Description : %s\n", part_desc );7 f1 y4 P. f: ^6 j) t% Y- R0 e
  return 0;
1 F8 d( ~) i( @" X}[/mw_shl_code]
2 u; k, Q9 g3 L  e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了