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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
  J+ M! z7 d# ]$ d4 r9 w# n0 S5 N* E" o! ]! w) ~4 [2 t
[mw_shl_code=c,true]1 `( ~* `) q9 j, ~
#include <stdio.h>
. H4 I" u/ k8 b0 [#include <stdlib.h>
5 [* B" V3 T; Q#include <string.h>
, {: L9 @8 [/ V/ Y0 Z#include <uf.h>
4 F$ z7 [# G$ e3 Z- D% R6 u#include <uf_ugmgr.h>
# d$ S: d# ?0 y& t#include <uf_part.h>
( V1 y; o# O' O$ J#include <uf_assem.h>" O! K0 U1 m7 D  r
#define CHECK( func_ ) \3 R7 g. ^# a  t1 e
{ int  ifail_ = 0; \$ A! z8 l2 j% g
  char message[133]; \+ a7 s8 u6 l! A' d  m
  ifail_ = (func_); : |! Y( A3 ^# l
  if ( ifail_ != 0 ) { \
* `% [! G& N+ j    UF_get_fail_message( ifail_, message ); \6 z/ C3 ^- }2 C6 w: H5 \- g
    printf("ERROR: %s returned from %s\n", message, # func_); \( l+ H7 a- I/ b
    return ifail_; } }
3 |5 \) ]+ T8 ]1 w- C9 P' {7 Sstatic int create_part( void );8 Z+ E& I( m: k8 ]" ^0 j
static int print_work_part_info( void );, s) w2 R& \  b7 r) D7 y5 |9 g' E
/*---------------------------------------------------------------*/
0 c  x9 H; T+ W/ @) A$ f2 i( Pint main(int argc, char *argv[])6 B# _- w  A3 X2 E# I+ z
{( g9 W. U6 W% ~
  int  ifail = 0;  e! X: W* J; x! g
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);6 i- m1 u3 U) i/ {5 ~. B
  if (ifail != 0)6 Z- E7 r" ?% J  t% G
  {
- W$ u) y5 @! s+ G- _* K3 A" S    printf("ERROR: Failed to initialize with error code %d", ifail);
; b: j. ]  M8 ?) s" Y* @$ ^$ s; A    exit(1);! S8 B8 p7 x" w- R4 O+ w5 u
     }
1 N+ K, z6 {/ {8 J. { create_part();! i$ g0 @/ ~6 Z0 d/ d. }. A
  print_work_part_info();  U/ e& J8 T6 d
  UF_PART_close_all();
, g+ r! o7 m( N, u  UF_UGMGR_terminate();" q& @& O% l. E# Y2 a& f1 P) M
  return 0;/ x/ d# M' q) v1 S, r# z6 j
}
" R$ \( i# }3 x2 R; r8 K" d7 L/*---------------------------------------------------------------*/
! {. ?' e0 j/ e3 hstatic int create_part( void )
4 j1 T# h) w% M/ K  j. X) p# _{2 F4 I; b  {% m3 f! X
  char*                   part_number = "600-A-wej-mk1-eng";
( p& X, ?' W4 d' ~$ M! T3 A  char*                   part_revision = "A";
$ u7 m: E* X: H3 y  char*                   part_file_type = "master";! P; b" ~% K. K' @* D- b
  char*                   part_file_name = "";
8 v- p' i2 h! A9 \6 F  char                    encoded_name[MAX_FSPEC_SIZE + 1];  \% ?/ D$ J; A+ G
  tag_t                   part_tag;% M9 F3 k% _  a" X( P
  UF_UGMGR_tag_t          db_part_tag;/ `# o7 ?5 X5 ^) e2 Q/ T  h
  UF_UGMGR_tag_t          root_folder;
5 n: f0 w2 X! M  e% Y  char                    root_folder_name[UF_UGMGR_NAME_SIZE];; @) f9 |5 H# `7 n: L
  int                     i, count;
' u1 v2 Q$ P+ U+ X  _( t  UF_UGMGR_tag_t          *folder_contents;
) P8 ]- ]4 N! G3 f  UF_UGMGR_object_type_t  object_type;. g1 U+ L# S, w1 {
  char                    folder_name[UF_UGMGR_NAME_SIZE];$ @2 o. x5 \/ d' w2 d' W
  logical                 folder_exists = false;
7 i, v9 V. A0 Y5 P8 m" v  CHECK(UF_UGMGR_ask_root_folder(&root_folder));0 O4 k( b: `/ ~
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));/ X5 Q$ ~0 G$ _1 J
  printf("Root folder is %s\n", root_folder_name);% _( M* k4 O2 m$ n- |4 d
  /* Scan through the root folder, looking for a folder called
, C; g0 h+ O$ }8 t0 {+ Y     "Test Set Default Folder". If this folder exists, set it to be
1 O# l$ e1 h3 W4 y     the default folder into which newly created parts are% R8 t7 o' a9 u# d
     placed.% q6 E. T5 J8 \
  */
% p2 ?( G) _  ^8 W* N, _; a2 ^7 m9 E  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
3 S5 j& Q* c7 B1 C; k, M) u( @  for ( i=0; i<count; i++ )
; w' t6 Q9 t; j- E# Q  w, ?  {
$ J5 e% c& e/ G% V& o/ @. x6 [    CHECK(UF_UGMGR_ask_object_type(folder_contents,* \' v, Y& q8 X* @* i) s
   &object_type));
- z3 U+ Y! v& u6 O2 {8 k    if (object_type == UF_UGMGR_type_folder)
* M" _- _# Q) a5 |& C0 O    {
' m6 h0 e) l8 g      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
+ t! X' q9 f3 s" A9 Z' G# n      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )' \/ @% n9 ]/ _; e% e+ }
      {
7 l. ]2 g6 C# T* v7 @        printf("Test Set Default Folder exists\n");
+ M) s% V/ R+ d- z. d7 A" o4 ^        CHECK(UF_UGMGR_set_default_folder(folder_contents));
, U" W/ X$ s- Q' ^# `; w% h        folder_exists = true;3 ^7 N, r2 J% {
        printf("Set default folder to %s\n", folder_name);
! l4 j2 I, X) n) Y3 a$ x      }
6 |! R1 E0 Y$ k  F$ g& _    }( a$ ?* D7 g' ~
  }
9 d5 w: c) _7 E+ g2 f  /* If the folder "Test Set Default Folder" doesn't exist, set the0 Q; L* P+ }; }% D2 F
     default folder to be the root folder.4 ~; D) `& C( l6 ~6 {9 P: B
  */) ?0 O# p* y$ n# X$ d
  if (!folder_exists)
; k- J  O7 i) @6 n3 z* w' N/ a* K  {
* f# n, n+ Y; M$ n1 j* j    printf("Test Set Default Folder does not exist\n");
; M0 X0 T; M: U0 c8 U$ f4 Y    CHECK(UF_UGMGR_set_default_folder(root_folder));
! V% I; h) i' x# Z    printf("Set default folder to %s\n", root_folder_name);5 Z+ j8 n! T+ C% ?4 P/ j# W
  }
/ j: X3 V" p" q/ m/ j: q  printf("Encoding UG/Manager part filename...\n");
$ ]6 J' f3 @( a; E  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,$ h/ J1 n$ x) R0 v8 E/ |6 E
part_file_type,
3 Y3 l- W8 T) l5 L$ E6 X+ F part_file_name,
/ e8 F8 q2 o! j, s encoded_name ));1 o8 f8 T4 i+ h9 r5 }
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));' E7 B0 i. q7 z" b/ @
  printf("Created part...\n");2 X7 h- U1 V. P& U; y& s' k6 \
  CHECK(UF_PART_save());
7 H! x9 P$ u$ w, Y  printf("Saved part...\n");2 o( f5 |0 d" n7 V7 I8 l
  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));6 L3 a1 q# w+ l& t3 |5 H9 }' U: X
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
9 j( o0 K. \$ c) J"Mk3 Engine" ));- M8 o! J- _! P3 d
  printf("Set part name and description...\n");
4 B" ]% @. e, d/ d9 ?  return 0;
# m9 r9 e$ }$ G1 P4 l( \}) S3 Z' h5 l8 ?) d' u
/*---------------------------------------------------------------*/7 D" Q- L( e( c& x0 H" T3 j
static int print_work_part_info( void )
; d6 c2 l, f4 e. L! R# N{  t; X8 B$ Q4 L3 w1 s: f
  char             work_part_name[MAX_FSPEC_SIZE+1];0 b1 C/ D# @9 }1 h5 m
  tag_t            work_part_tag;
- r0 ]0 M: @! ~) ~5 X- v  char             part_number[UF_UGMGR_PARTNO_SIZE+1];5 ?( L* N$ Z2 W/ W7 M( I
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
' u5 @  {. N3 g) W# X  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];
+ G: o" @  x3 o  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
3 I/ }5 {7 n$ ~4 f; K9 i  UF_UGMGR_tag_t   db_tag;
0 l% R3 s' s% f$ u  char             part_name[UF_UGMGR_NAME_SIZE+1];
/ V- E  H  P9 r  w0 x  char             part_desc[UF_UGMGR_DESC_SIZE+1];1 k* R# V0 I% [7 G, M% a! t
  work_part_tag = UF_ASSEM_ask_work_part();( Y) ]5 \: Z. o% c7 s
  UF_PART_ask_part_name( work_part_tag, work_part_name );9 j* `" x1 h: ^/ C) X
  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
3 y4 Q8 y- @- \: x* i  part_number,
. t. x7 b- Q. t  part_revision,
( l; ^# i7 x: H  M: b) h3 Z, T( Y4 \) w  part_file_type,/ ?4 X7 i: C. h6 [2 a
  part_file_name ));6 G* B4 Q4 i% L) O0 w: n+ ?
  printf( "For the current Work Part\n\n" );
( T# N9 k) S! z  printf( "  Part Number      : %s\n", part_number );! G. U* f4 d3 s$ ]) A
  printf( "  Part Revision    : %s\n", part_revision );1 M+ Q0 a' L* N5 r
  printf( "  Part File Type   : %s\n", part_file_type );
* y" V. A4 t! E  \7 ?' ^0 N. j) O  printf( "  Part File Name   : %s\n", part_file_name );
* C7 e$ i/ O5 O8 B1 Y: a CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
8 z% U+ d: N$ Y3 X4 k; P2 @  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
$ a3 c% H6 l+ E9 b0 T% j% j' Y! `  printf( "  Part Name        : %s\n", part_name );& v% y# g/ T5 N  B5 I" ]
  printf( "  Part Description : %s\n", part_desc );7 O  h( Z* ?. R1 L/ S: s
  return 0;* H5 T7 T* E8 d4 S& E
}[/mw_shl_code]
0 P/ x" L3 l" q% j: T( T' ^% h
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了