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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
( [) w' {1 `+ {: r5 U* q! S0 l
[mw_shl_code=c,true]
6 O0 ~, y, R* x4 y4 b8 m  \#include <stdio.h>5 x  E8 W" G* F/ K7 F( p, R
#include <stdlib.h>2 x  z% T+ g+ M
#include <string.h>
2 |# s' e+ F% A* U+ j" q! F  o/ f#include <uf.h>
" Q5 W3 b' z" F% Y) w#include <uf_ugmgr.h>3 t( u/ }- E  i0 Z2 {
#include <uf_part.h>! _8 s2 ^9 c0 x& u2 T2 ~& B
#include <uf_assem.h>
9 P* e% ^2 D* p/ j. K, W4 S) f#define CHECK( func_ ) \
/ k) e& B( p8 H/ I{ int  ifail_ = 0; \9 T! f! p- G# S& C
  char message[133]; \% y8 g) A0 p/ u* y1 A
  ifail_ = (func_); ; V/ @2 U. k  U  y8 p+ x5 a  \' t
  if ( ifail_ != 0 ) { \" W5 H) x0 a4 V4 h; E3 h
    UF_get_fail_message( ifail_, message ); \
- N% C$ S% J# a0 Q    printf("ERROR: %s returned from %s\n", message, # func_); \2 f  _- x! H! Q* N
    return ifail_; } }
% L! q# t* \4 [static int create_part( void );
/ U( Y2 n% t% y# G, qstatic int print_work_part_info( void );
3 m2 R& Z! I& m& S/*---------------------------------------------------------------*/
, \) [& k# y+ ^/ hint main(int argc, char *argv[])
1 j: z5 N) i  W; C* k{& F: U8 C2 R. D2 t" D5 B
  int  ifail = 0;" T; k6 P& e) I* I+ Q( D. X  X
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
, }* r: e% Y+ c5 Z  if (ifail != 0)6 o( U( f1 D% @9 i8 M1 r/ y
  {
8 u+ `* x+ f' ?; ~9 g3 w. a    printf("ERROR: Failed to initialize with error code %d", ifail);
- e3 l6 m" R0 h) ~3 h. q    exit(1);
- D$ x. U! J, T( t7 C8 I# J% @     }
# A! q7 c4 w- P& M+ i( Z create_part();
) P% k3 G5 U2 I  print_work_part_info();
" J1 ^: z1 E; x6 _  UF_PART_close_all();
. H8 Z1 w% t) T5 X. Z  UF_UGMGR_terminate();
0 Q- w  D" D0 D* f  return 0;
* S1 u  T6 {8 S6 L# v: D}
8 M# y9 j  N# V9 Z5 W4 b/*---------------------------------------------------------------*/
) M6 c" `. y1 A1 s3 b! Q) |static int create_part( void )# n* h: \: ~( k: g. ]# p
{
& G% o+ w& r+ Z/ }$ w3 E  char*                   part_number = "600-A-wej-mk1-eng";
0 t) L- P! g, Z6 f* s# U5 S% k4 r  char*                   part_revision = "A";3 q6 Q5 U! W" j) n" S; O8 O
  char*                   part_file_type = "master";3 [4 S8 Y- b* n2 I4 s
  char*                   part_file_name = "";  P0 m# i; P( a5 }+ l  C
  char                    encoded_name[MAX_FSPEC_SIZE + 1];# L8 |* O4 ^) ~5 [
  tag_t                   part_tag;" Y! Q) E) B$ @1 S3 p
  UF_UGMGR_tag_t          db_part_tag;
: H: V+ B( h- e; t3 O& A: M  UF_UGMGR_tag_t          root_folder;( U- }$ Z# o* f& w: L( `) }
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];, U; G0 H) z6 o; D$ [8 g# d
  int                     i, count;
& G( b8 \9 i8 ~% E  UF_UGMGR_tag_t          *folder_contents;. @) E0 ~8 ?# P. j: |
  UF_UGMGR_object_type_t  object_type;
7 D" E  B$ ^" C/ F  char                    folder_name[UF_UGMGR_NAME_SIZE];# [* v* T  w9 c% ~
  logical                 folder_exists = false;
! m8 Y8 j' c2 i2 T( ~  CHECK(UF_UGMGR_ask_root_folder(&root_folder));5 W' C0 S  v9 m
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));0 k& h0 e, M; z4 ~& R
  printf("Root folder is %s\n", root_folder_name);
" L, F  `; g& E0 r+ j  /* Scan through the root folder, looking for a folder called2 X, T4 ?; _) _" U; E; p5 r
     "Test Set Default Folder". If this folder exists, set it to be
# t9 u. T: Q- T$ v/ }. M- _     the default folder into which newly created parts are
# ~; |* y3 g7 e* G     placed.7 l+ N8 _0 B, V2 l. F8 g. e
  */
& \% c2 v$ t- x  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));& I& \' i' E" M/ b+ B
  for ( i=0; i<count; i++ )
) ~4 Z- N" e% N6 ?3 o  K  {
& X  D- n0 O5 t& l- e; w9 b    CHECK(UF_UGMGR_ask_object_type(folder_contents,
. L& r9 O- T2 k1 B! d   &object_type));# t9 ]5 L6 ]) s& X2 E! t, {2 }
    if (object_type == UF_UGMGR_type_folder)
! j6 @- P6 J0 j/ a2 |    {! B/ F0 q$ f; s$ s  E! u: H, Y- }
      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));2 j2 g' s3 A/ N( x1 Y1 U
      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )2 o9 Z9 N( J) Z% p
      {
7 L6 u: A1 q) z        printf("Test Set Default Folder exists\n");
" x7 h. X- v4 o3 n7 C% q( Y5 v+ d5 H        CHECK(UF_UGMGR_set_default_folder(folder_contents));
. J7 p' `! _# w) O$ ?* Q4 V+ I        folder_exists = true;" w1 L, G: ~& g7 [; c6 m. T$ e  P
        printf("Set default folder to %s\n", folder_name);
7 o; |  `0 U. U+ p0 E      }" Q% a8 U3 d5 Q+ T
    }/ q' g. e8 S8 \# E( e
  }
3 ]+ p. N/ B+ x  /* If the folder "Test Set Default Folder" doesn't exist, set the" D9 S% @0 x) G& x5 o, D2 }
     default folder to be the root folder.
# T7 j# f! C* `% V. d- s  */
) @: O3 L& b: b8 v/ k4 |* g( R  if (!folder_exists)
( s, f% R" k3 P) W3 L/ [  {% P$ f0 i& z5 F; m. _8 F6 Z
    printf("Test Set Default Folder does not exist\n");
+ x; v0 X3 @) ], ]3 Q1 r    CHECK(UF_UGMGR_set_default_folder(root_folder));
& o+ o$ O+ p( N( y' F    printf("Set default folder to %s\n", root_folder_name);/ X  n# j. D" m# ]+ U
  }7 Z- e% T0 q" J; I8 P+ ^
  printf("Encoding UG/Manager part filename...\n");
& a" z0 c) {: z& M; A% V  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,0 B0 N# r4 y; |, `
part_file_type,
! k  B/ [/ E# d9 r  z part_file_name,2 }. b, d( M9 f$ j) w6 A# D+ f: d
encoded_name ));
2 b) t/ ^7 S( ^, \( \3 }4 m3 d  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));: ^/ }  k. I( G& l" b& A
  printf("Created part...\n");
/ Q' m4 h0 ^$ M; U  CHECK(UF_PART_save());4 n2 c- [' i7 H! l
  printf("Saved part...\n");
: i2 g$ v: y3 F+ M6 y  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
  W4 ~  Z6 Q5 {  T- s4 k0 |  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",1 i! [3 P' o" @: `
"Mk3 Engine" ));; W  R8 b. h" V
  printf("Set part name and description...\n");& p7 t0 f) s! }3 L& @, e
  return 0;" y  l( x+ n6 o  C& |* F8 E
}$ y: }) r# Y4 I. x& r: n6 }0 i( D2 U
/*---------------------------------------------------------------*/
2 R. P. ?$ v  K/ u6 ^# lstatic int print_work_part_info( void )
$ Z4 V. x) L7 Z& l# T! b{. ]" U6 W0 X1 P( }
  char             work_part_name[MAX_FSPEC_SIZE+1];
6 h: Z/ a) `; l  tag_t            work_part_tag;$ a! G9 o# F7 A4 d) ~! y
  char             part_number[UF_UGMGR_PARTNO_SIZE+1];3 n% B" u. s. a0 u8 t7 T% d
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];7 ]3 k6 F0 l* E9 {- V
  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];4 P+ r6 v, D, {* U- E( k/ E
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
) K" u9 Y3 u8 Y( \1 I  UF_UGMGR_tag_t   db_tag;
6 ^' f  ?" b/ k4 \$ `8 l  char             part_name[UF_UGMGR_NAME_SIZE+1];' Q# a' ~: ?# w  d$ M
  char             part_desc[UF_UGMGR_DESC_SIZE+1];
1 ^* {$ d4 d0 D9 V2 V  I; }* q  work_part_tag = UF_ASSEM_ask_work_part();% \! v$ b4 N; n2 p- x; {& I9 z
  UF_PART_ask_part_name( work_part_tag, work_part_name );" J" M& j5 H/ a1 [+ x, s) v2 g
  CHECK(UF_UGMGR_decode_part_filename( work_part_name,% c* ^; t3 B+ q7 `
  part_number,
5 Q3 {6 c. S  ~' [% h; C7 u  part_revision,
* u/ W& O0 D- }# K, _' ?0 u  part_file_type,: o! p  b( f- }/ U. {
  part_file_name ));
& R1 e, P6 }. `" u' u  printf( "For the current Work Part\n\n" );( R: G& A* h: q+ R1 [8 ~% W
  printf( "  Part Number      : %s\n", part_number );
* e+ i1 g7 z0 C- g( c6 r  ~  printf( "  Part Revision    : %s\n", part_revision );
: {2 F/ W" \( O! \* z- q& {  printf( "  Part File Type   : %s\n", part_file_type );
- V: i3 _/ C7 a/ Z: H  printf( "  Part File Name   : %s\n", part_file_name );
! c5 H: M5 L4 e, u' m CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
. F: F2 H( K7 u1 ?  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
4 q! t: w: p+ B% I  printf( "  Part Name        : %s\n", part_name );
( c3 C* }8 u8 {# [% X( g! q  printf( "  Part Description : %s\n", part_desc );
; Z" [! M- U  |$ n. t0 o  return 0;) z' S. O! Z3 j6 a
}[/mw_shl_code]# J) L/ g: t0 z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了