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

[二次开发源码] 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开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。3 z8 c! m: L8 O: ?$ W! ]( |4 q

/ N, G: `* l$ h% f# b* a[mw_shl_code=c,true]
5 \( o8 I0 k8 Y* @5 c#include <stdio.h>7 O7 @$ R/ p2 a5 ^8 G4 h7 I
#include <stdlib.h>
5 w3 D8 @+ |1 |. t6 K#include <string.h>
: @% P8 }: \: P- @) ?3 R5 u/ T#include <uf.h>% K9 e# ]6 s# N  Z
#include <uf_ugmgr.h>
6 C! _4 V2 a0 ~! x' L#include <uf_part.h>! A# h% C6 y2 s
#include <uf_assem.h>7 @+ A1 S7 X8 h. z( Z7 N
#define CHECK( func_ ) \7 i, R, \+ `( O2 M; l  F8 E
{ int  ifail_ = 0; \# |, r3 }! l; t. _
  char message[133]; \
# b* |% q: H/ e4 l4 H, f  ifail_ = (func_); % Y+ G7 c/ ~9 g0 r
  if ( ifail_ != 0 ) { \* s! R& b6 g, e4 z
    UF_get_fail_message( ifail_, message ); \$ ~- @; c- {) B1 X: b
    printf("ERROR: %s returned from %s\n", message, # func_); \! V' ~( S9 r! \3 @
    return ifail_; } }
6 q3 _7 H5 c1 Bstatic int create_part( void );9 v  X3 L1 {( H) u
static int print_work_part_info( void );
2 K7 X0 E. k3 E9 N/*---------------------------------------------------------------*/& ?( R# \0 D4 Y6 d9 v7 ], R
int main(int argc, char *argv[])
: w* S9 l4 H  L9 W8 \6 ~% Q9 D{% i7 k9 b! e, S( m! n6 @
  int  ifail = 0;  H1 f5 l9 Q/ W9 v% n" F- ^: j
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
; q/ ]7 M  S' N  if (ifail != 0)
5 Q# i: j( V. e9 y! h4 A% k# l, t0 i1 M  {( O) }% {2 y' r. Q" y" c. O$ R: a6 B$ f
    printf("ERROR: Failed to initialize with error code %d", ifail);. b( g; y: _' |- v' V
    exit(1);
, X+ b' W  h) j, B     }0 N; L# p2 L- @2 T
create_part();
7 S9 t! D$ n! D0 w$ X* l  print_work_part_info();
4 W- D  F8 o9 B6 ^6 P  UF_PART_close_all();/ S+ Z4 `  @1 x* a9 q
  UF_UGMGR_terminate();
2 h+ J1 |& d% c* P1 [  return 0;
+ F' z! L7 Q3 \. A# @1 P+ J+ i}2 Y; \. H8 c  _5 V2 c  v" e8 Z
/*---------------------------------------------------------------*/
4 C) |3 V- e, c0 i: p6 P2 nstatic int create_part( void )" V& U% a' A$ u" ?2 l; {% Z2 F, p
{
8 N. I! H" w, p. l  char*                   part_number = "600-A-wej-mk1-eng";5 h2 m& h- I8 S5 |
  char*                   part_revision = "A";/ N  [, H+ Y* w
  char*                   part_file_type = "master";; K: x/ a& T: T8 A3 Y) e7 M$ ^6 g
  char*                   part_file_name = "";
; f# m; X: A, w$ Y$ K/ b3 E  char                    encoded_name[MAX_FSPEC_SIZE + 1];" B9 ^! I) L& E  _. x) k% E
  tag_t                   part_tag;
% j- P, A; h' G5 t  J  UF_UGMGR_tag_t          db_part_tag;
: y8 ^3 n7 ^/ Z5 W4 D  UF_UGMGR_tag_t          root_folder;, T' Z7 N) k7 {+ n& T
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];, Q$ r% x. z1 L9 }; w+ `2 t% u4 ?
  int                     i, count;
9 w! |; @; \+ {" b9 A  UF_UGMGR_tag_t          *folder_contents;0 g0 j, T! L% t+ J, u
  UF_UGMGR_object_type_t  object_type;
2 \1 |4 N4 Q8 b8 W4 ]2 U) F; r  char                    folder_name[UF_UGMGR_NAME_SIZE];
; `$ _$ v, g( o7 v3 l6 b+ q  logical                 folder_exists = false;
8 H8 q; I: a7 [9 @7 L  CHECK(UF_UGMGR_ask_root_folder(&root_folder));9 e/ O& U7 Q- r( y
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));( ~' i. c- s8 k( t. S) ?
  printf("Root folder is %s\n", root_folder_name);) v  T) e) B: T$ q0 p
  /* Scan through the root folder, looking for a folder called! M- [7 l8 o7 B2 `" a
     "Test Set Default Folder". If this folder exists, set it to be  Q8 y! }; ?) Q+ G: A* T. o; s' Q
     the default folder into which newly created parts are1 f, n, P; T* \6 U( X/ I( t
     placed.7 [7 f; d8 {" H* `: C6 o9 r
  */; Y. `8 g% b" }& w9 X$ `
  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
6 u- e* M6 \8 m, }  a  for ( i=0; i<count; i++ )
" x+ Z% g% i. t' A! n2 U5 T: h  {
7 S0 B0 P+ T: W+ f1 {    CHECK(UF_UGMGR_ask_object_type(folder_contents,
" _( h, O6 ]/ m5 a; O8 U   &object_type));
- g# V" z9 m3 `  d; S& k$ P$ a    if (object_type == UF_UGMGR_type_folder)" p$ Y5 ~& a! F  J( \# F" ]; ?4 L
    {
: S5 j1 `, f' |      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));" Z9 B2 v( c1 [! i; y4 a
      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
6 u# _% f5 J2 J. U      {; E* C2 S: {7 i: h
        printf("Test Set Default Folder exists\n");
( u) j& f: R# W- }) Y        CHECK(UF_UGMGR_set_default_folder(folder_contents));
0 K0 ]6 u9 w% g- Q1 ^3 A, I        folder_exists = true;5 X3 \' x+ y  N. w* A
        printf("Set default folder to %s\n", folder_name);6 j3 Q+ U6 j/ m' F! k
      }) u, x8 M' h! _5 ]7 H% a# j) k/ K
    }
2 V: j6 y7 S% v* w2 P  }  j& o: N3 {- B5 C" ^  |2 K+ }4 g; M+ v
  /* If the folder "Test Set Default Folder" doesn't exist, set the
$ {' }) a. q6 T6 I! ^6 W     default folder to be the root folder.
* c& d: |0 H4 d1 _  */6 k: C7 g: v# Z, x# y8 l
  if (!folder_exists)
2 r) ]4 y6 u  n  {5 `5 T5 z: i! n: S& R) P
    printf("Test Set Default Folder does not exist\n");9 F( ?4 c9 o- P* I' X
    CHECK(UF_UGMGR_set_default_folder(root_folder));3 s9 W: h) ], t: Q  R
    printf("Set default folder to %s\n", root_folder_name);
, `" W+ Y! U: v( O# _  }! I8 C, M" P  I0 a- ?
  printf("Encoding UG/Manager part filename...\n");
- y+ u2 U" H7 I1 N$ G  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,2 c( c4 Y$ r9 H6 U3 I4 W
part_file_type,
" v# h4 x% `& o' q part_file_name,
/ x2 a. v6 g6 M& g3 |5 H0 g* f8 B" t encoded_name ));& y1 q4 C% f. Z$ V5 h4 X
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));8 f5 [+ _5 n$ A, g
  printf("Created part...\n");
% \9 }8 \1 u, B, U& @  CHECK(UF_PART_save());
1 }( v+ b7 |8 ?, F6 B6 f2 G! y  printf("Saved part...\n");
9 G3 J" V6 O/ t: i) Z  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));1 B# z# h2 f! T
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
& x- U. C! |! |6 q9 C% R! n, _"Mk3 Engine" ));
8 h: c& I, b+ ]- F' l  printf("Set part name and description...\n");
& ]$ v6 J2 `- T7 g6 i. L6 A  return 0;; B/ z: V, c+ S
}6 V/ ?3 z- x) y, g/ ?
/*---------------------------------------------------------------*/
6 }. J/ x9 t( ^6 U& z( B9 Zstatic int print_work_part_info( void )
; v- e  f6 m& {  l6 x{! V( q+ |. |; I, z% v
  char             work_part_name[MAX_FSPEC_SIZE+1];
3 ^3 Q; ~  w+ b2 Z1 [# i5 Y  tag_t            work_part_tag;1 |# g( F8 K. \# r
  char             part_number[UF_UGMGR_PARTNO_SIZE+1];
$ {5 U1 t6 H8 n  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];( t* L1 T+ z9 F/ U* j! K
  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];2 L! U% Y  K' G% w9 q
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];  r: F6 R# N  S5 ^2 s( l
  UF_UGMGR_tag_t   db_tag;
1 z: j7 L# ], S; o  char             part_name[UF_UGMGR_NAME_SIZE+1];, c1 T2 ^5 j1 @: S  [# w' ?  f' W
  char             part_desc[UF_UGMGR_DESC_SIZE+1];
/ e" [& V+ Q7 o9 {1 Z4 D' S9 A  work_part_tag = UF_ASSEM_ask_work_part();
. ?. R; H3 o. O8 {* P) R- f  UF_PART_ask_part_name( work_part_tag, work_part_name );
8 j" [& R! @; T# `: u  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
' l$ S; Z( d  N2 Q6 }8 A  part_number,+ E1 D- c- ^" A) Q
  part_revision,* V2 j. |: c. v9 h8 z2 Q
  part_file_type,
: V* I, i' Z+ S# O4 U* T" R  part_file_name ));6 N: Q0 C& b5 b
  printf( "For the current Work Part\n\n" );
" A8 f; `# e: q  printf( "  Part Number      : %s\n", part_number );5 u: l1 M( w5 w
  printf( "  Part Revision    : %s\n", part_revision );
4 K9 z, F! f+ y& v3 i  printf( "  Part File Type   : %s\n", part_file_type );
" Y0 b) \" k8 s: Y1 B) `  i* p, T  printf( "  Part File Name   : %s\n", part_file_name );
5 Z2 j( C0 O3 i6 [8 x CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));' d' t) b& T1 ]# y# f9 G5 A6 I
  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));3 Z) ~6 |2 B5 F" R- N
  printf( "  Part Name        : %s\n", part_name );
. e; n0 f6 g2 k0 n; h( J+ E  printf( "  Part Description : %s\n", part_desc );
$ X6 _0 j& s& \# H4 [  return 0;
) |! z! y" g" X}[/mw_shl_code]
+ y4 [# l% u& e) G2 U" `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了