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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
2 r  `7 y8 s7 g5 v' T. ]) Q9 F$ `6 c1 R
[mw_shl_code=c,true]
" t! m9 n3 G( e  h* i/ t#include <stdio.h>6 G( P+ S- B% v
#include <stdlib.h>3 p1 }5 Y: e7 P, ^* e* C
#include <string.h>) _7 b7 b$ V) ~3 H( {6 e- d
#include <uf.h>
. Q5 q6 ^2 r7 ^8 u#include <uf_ugmgr.h>; q1 u! }4 F) K
#include <uf_part.h>: B% V9 E& t  A, h! x& A
#include <uf_assem.h>
' c0 M- ?1 o  |2 l* g#define CHECK( func_ ) \
% R; e/ ]' C/ B( B{ int  ifail_ = 0; \4 L. o7 u1 \' {3 t( y* m
  char message[133]; \
  E. c' N' _/ }( q7 t# n1 e4 V  ifail_ = (func_); 4 j- h5 R+ R# Z' h6 ?" F  g
  if ( ifail_ != 0 ) { \8 u! r9 p+ d& O* a9 m7 l& @: ]
    UF_get_fail_message( ifail_, message ); \8 o6 l  d" f9 d+ ^
    printf("ERROR: %s returned from %s\n", message, # func_); \& q7 J4 A8 c2 d/ r6 {! U
    return ifail_; } }
5 _  W# g" |) p1 V* I8 ]& ?static int create_part( void );& _/ X1 z" p5 N) J. r0 F
static int print_work_part_info( void );
* d0 R" s# N) ~1 K0 O7 M% B+ _/*---------------------------------------------------------------*/) U( L: d1 v" k) f; E# |
int main(int argc, char *argv[])% S) K% f$ ]) P. s$ m+ D# t/ D# g, Y- t
{
% }, z; L$ O* E) a; @8 W) k: z. Y  int  ifail = 0;# y- J3 j! w7 b8 i( t9 A
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);  ]; f; c. e' A: H" t4 J
  if (ifail != 0)! F$ W! O, Q, d3 L7 L, B4 A
  {" s0 z( o$ P/ c) H2 D
    printf("ERROR: Failed to initialize with error code %d", ifail);
4 U+ y4 F3 w7 a) H  V    exit(1);
, j4 o: C, E; _& Y     }7 x' z. \( B  o  L& J, v, m
create_part();
$ i) e3 J& z' T2 L) w  print_work_part_info();. t% x7 O! Q% ?
  UF_PART_close_all();
. K9 v$ e* Q" f0 ~3 c% }7 @  UF_UGMGR_terminate();
2 }3 [- t* k" O  return 0;  `! P; ?% |/ A  E! @
}
% J9 y" D8 l$ R8 ]; S. Q+ z! a0 u' X/*---------------------------------------------------------------*/! x; a7 d9 D) _. D& x' R  E5 u# ?
static int create_part( void )! O  ]& G; J# N
{
- z' z7 z1 r1 L3 n8 X  char*                   part_number = "600-A-wej-mk1-eng";
  c5 B* V9 c2 N& E% i6 a: h  char*                   part_revision = "A";
" Z0 g( ~9 t' b* ^- B4 y3 ~  char*                   part_file_type = "master";6 R. m, a* ?4 I. r7 U6 s
  char*                   part_file_name = "";9 A  k+ u& e  b5 v( f: q
  char                    encoded_name[MAX_FSPEC_SIZE + 1];
" M/ R! N6 c" u! l/ V  tag_t                   part_tag;+ R8 X9 Z) ^4 v- C0 w" d0 C+ T1 t
  UF_UGMGR_tag_t          db_part_tag;
/ V# |7 i/ @2 d( T$ q5 X. A, c4 ?- Y  UF_UGMGR_tag_t          root_folder;8 C! u) l2 e# J4 b
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];% n8 Y! G$ b2 E% k4 [* O# o
  int                     i, count;
5 P! [2 s/ ~2 r  UF_UGMGR_tag_t          *folder_contents;; D, v2 t2 k" H* }8 L
  UF_UGMGR_object_type_t  object_type;9 m. f7 ]% }6 w
  char                    folder_name[UF_UGMGR_NAME_SIZE];4 U( g8 s* Q, f' Z
  logical                 folder_exists = false;
" A1 q' W& f: K* y( l  CHECK(UF_UGMGR_ask_root_folder(&root_folder));
6 U. y0 g7 w. u; Q+ ~/ f0 e) e  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
; u- J5 M* T7 U, a9 z$ S. F  printf("Root folder is %s\n", root_folder_name);1 [$ W. J0 _7 s" X9 |
  /* Scan through the root folder, looking for a folder called: f# F' Y+ i) S% J0 U
     "Test Set Default Folder". If this folder exists, set it to be4 \! t$ r$ N, S
     the default folder into which newly created parts are$ `2 q: w' `; G9 r$ p. {
     placed.9 ^5 D# D& T6 c
  */$ G- C% E% v% K
  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));. D  W8 D% s  V' }0 S: D: W
  for ( i=0; i<count; i++ )
# ?, @+ s6 x" `/ h  {
. O" @4 g- g2 _    CHECK(UF_UGMGR_ask_object_type(folder_contents,
$ D( J6 ]+ w1 x5 m6 R' y   &object_type));; @- C9 a$ T. G' A
    if (object_type == UF_UGMGR_type_folder)5 W4 k: C6 k4 |: G/ Q: H. a. F, P, ?. K
    {1 R! W# ?( f# q* Z* R
      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
: y, ?2 e: q8 c( C; ]+ C- N      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
3 o) g* G) Y  S: H/ r      {
7 ^% K4 {  z% C- I# {        printf("Test Set Default Folder exists\n");% z3 ^. [+ y  F. A3 y+ B9 _1 `1 ^
        CHECK(UF_UGMGR_set_default_folder(folder_contents));
9 j% \: F; J2 Z) u        folder_exists = true;
& T$ F5 U0 U; |* J) h3 V& T: D1 t        printf("Set default folder to %s\n", folder_name);
2 c7 a! b! V) \      }
$ t: G3 K/ w) {/ I5 p# j3 n* w    }
$ L) k/ b; a  Q0 j. C) F& P! Z  }
4 V# }% Q  K1 P: X  /* If the folder "Test Set Default Folder" doesn't exist, set the2 O% W" N6 j& V9 R- f4 [
     default folder to be the root folder.* H  [. g# J1 L, O
  */
7 K: R( S2 H  f# X( w+ U  if (!folder_exists)3 x9 g6 q+ _+ g) I# s9 l; S
  {
* C( J( F. Z5 y" f7 ]5 {6 ^    printf("Test Set Default Folder does not exist\n");
& O" U, d$ D8 Z6 }( H7 w9 A    CHECK(UF_UGMGR_set_default_folder(root_folder));
4 _1 r0 Z4 E/ {9 s( D1 h    printf("Set default folder to %s\n", root_folder_name);
" v/ e+ }. Z+ F" p' G  }/ p" ]8 `9 K8 h  C2 {% a1 E
  printf("Encoding UG/Manager part filename...\n");) _7 y, ?& Z: W8 p# S- J" ^
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
3 x( c& e) d. ]& x4 J/ L+ r- F, g, Q part_file_type,( Z1 ?. |. q' X- `) g
part_file_name,2 ?2 ]( k+ [( P' o) l, w
encoded_name ));
  Z+ s" |4 m9 j: ]  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));6 s- C2 P) U" b2 M2 v. Q
  printf("Created part...\n");
/ Y& f* C) ^1 ^6 z* H8 l: Z) q  CHECK(UF_PART_save());
, x3 v1 i. F9 O2 E$ V' E6 v( H  printf("Saved part...\n");! B4 Z+ ?: K: O$ A
  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
. q: ?7 K8 l7 A* k' ~6 _+ @  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",$ U/ i9 J- @, ^( ~) s7 V# P; u& y
"Mk3 Engine" ));( ?# Z  {4 m3 G! N- C, p) U* M
  printf("Set part name and description...\n");
9 Q1 S+ ^/ `0 B0 H6 A7 ^  return 0;
1 M4 Q" n5 N' x7 ~$ h6 D}1 A7 y0 |. q' ^/ x0 k
/*---------------------------------------------------------------*/6 \9 `4 s3 s3 C1 H
static int print_work_part_info( void )) \0 b* M8 q2 w8 q
{8 d5 J0 h' ?- p1 k. f- e
  char             work_part_name[MAX_FSPEC_SIZE+1];+ u" B* g) k1 X
  tag_t            work_part_tag;2 D. T' R( [/ }! e- Z4 B. f5 G! `, u
  char             part_number[UF_UGMGR_PARTNO_SIZE+1];
& ~% }8 H/ y( u2 c( r  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];3 d5 W. z7 c, S+ ]0 D# d
  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];1 ]0 K4 C, x. J+ V& I
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];" u* i: U% t6 ]5 u9 L, ~
  UF_UGMGR_tag_t   db_tag;
" T0 C" @3 g0 K7 }  char             part_name[UF_UGMGR_NAME_SIZE+1];
2 k8 k8 g) A4 k/ `) w4 O/ u0 q; o  char             part_desc[UF_UGMGR_DESC_SIZE+1];
' R, K5 i4 X! n# K+ v7 Y  I  work_part_tag = UF_ASSEM_ask_work_part();
) X8 }2 X8 N8 I$ a" k7 ]8 V# J# n% F  UF_PART_ask_part_name( work_part_tag, work_part_name );
  J% Q" i5 {, ?% P$ r2 b0 v4 c, x) h  CHECK(UF_UGMGR_decode_part_filename( work_part_name,/ z# h  n; i% _; m. E3 \0 F  a
  part_number,' R3 {; f, j1 ?+ _( K1 k
  part_revision,
( c8 w. o, A1 y+ b8 W  part_file_type,
) M+ j9 _% A) n7 T& a; @8 D  part_file_name ));
' B9 y. i$ u; J6 A# s  printf( "For the current Work Part\n\n" );
! _1 f+ @) M5 S6 f6 T* N" h  printf( "  Part Number      : %s\n", part_number );
& G" ^2 y$ R: o+ W% a8 V3 O7 h$ r  printf( "  Part Revision    : %s\n", part_revision );
$ Q/ e& `. n& K+ J. o5 b  printf( "  Part File Type   : %s\n", part_file_type );3 _/ Q7 m; H8 a& @! G
  printf( "  Part File Name   : %s\n", part_file_name );4 J3 E! z  C( W7 x* D0 M
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
8 \7 Z2 O# z; V( h$ ^  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));% i6 J/ c) i/ E
  printf( "  Part Name        : %s\n", part_name );
3 M8 q! p! F3 [- k$ ^- z! C/ f  printf( "  Part Description : %s\n", part_desc );
% C; ^3 m4 B4 c3 J8 ]. e  return 0;
7 ?' ]$ [2 M% ^) Z9 U$ c}[/mw_shl_code]5 I3 R% s' {" v/ O
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了