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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。' w0 U7 H" P0 C
$ Y) w1 U) ?; ]5 Y$ d
[mw_shl_code=c,true]3 p6 q* c% T9 [$ i; `  ]
#include <stdio.h>2 i" f- Q* n! S! |/ W- f
#include <stdlib.h>
( a; J* M, `; G0 N, i2 N9 `#include <string.h>
+ u5 Z1 y' s% j9 j( ~#include <uf.h>" Z3 E/ v: Z: X. y) o' E
#include <uf_ugmgr.h>. g& d/ D, O5 _. ]& ^0 n3 \1 g. j
#include <uf_part.h>
4 K( @: w0 Q; _$ O! F#include <uf_assem.h>. d* _1 ]$ t! S  {: T4 v9 c
#define CHECK( func_ ) \
2 @( d$ {3 ~7 ~# x5 r{ int  ifail_ = 0; \
: m* `+ v  C- j) g  char message[133]; \
4 r4 d# M; k, I" J/ x; r  ifail_ = (func_);
8 r* k# {2 n2 [5 c' U  if ( ifail_ != 0 ) { \
( Z/ ?0 R* l6 F    UF_get_fail_message( ifail_, message ); \
* N2 }* r" i2 W! m1 m    printf("ERROR: %s returned from %s\n", message, # func_); \
& P; G" ?6 z/ r    return ifail_; } }6 X# D4 ~- Z# S+ Q0 |. G
static int create_part( void );
' y3 T& t, g2 T2 a6 G3 ^5 o# I$ X6 Pstatic int print_work_part_info( void );; |. q4 ]" M  O. ~# w
/*---------------------------------------------------------------*/
% d* o# g# \' X7 g! {1 bint main(int argc, char *argv[])7 n9 S. R/ d! e9 G( a8 M2 m$ Z
{
/ N; G# ?4 w( l" e' {  int  ifail = 0;, K" _% M& F+ b9 d
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
% X' }+ l3 J' {6 b3 B  if (ifail != 0)
( ?) l+ v$ o! C2 X& ]  {
) S6 e. R) s8 p3 q    printf("ERROR: Failed to initialize with error code %d", ifail);
6 ]* B: @* E' {) k    exit(1);
+ L. |4 h5 _% Q, M9 W4 q     }; k9 J# y8 q- ?1 ^$ L' L
create_part();
2 W" b+ o6 U# p  print_work_part_info();
3 z1 c1 j& f. j; T/ ]. N4 P  UF_PART_close_all();6 r8 ]% g8 y0 a# e+ j- o) g3 |
  UF_UGMGR_terminate();& Y$ M- h5 k2 c+ O1 J# r4 o
  return 0;
5 |( ]* g8 H) g! R2 A* U}
5 G  s) L2 \& u4 D/*---------------------------------------------------------------*/( W* z, k- K; `# w& A+ W8 N
static int create_part( void )5 z4 @, _3 \0 y+ M  K6 X
{- E& c9 k9 l, x, N/ c
  char*                   part_number = "600-A-wej-mk1-eng";; K* L* l! j4 `  J' o/ P$ d5 g
  char*                   part_revision = "A";  Z- g: ^4 j7 v* Z8 J
  char*                   part_file_type = "master";
5 k% ^2 }2 T" i. y/ n5 W  char*                   part_file_name = "";9 e8 N& a" a+ E& N- k# ~, J  z: V
  char                    encoded_name[MAX_FSPEC_SIZE + 1];
( E" v% G" ^# l, F) X" r3 h' Y; D  tag_t                   part_tag;* _6 m- g4 O7 _& X; e  v
  UF_UGMGR_tag_t          db_part_tag;
& a6 }! J2 `4 g2 v9 e  UF_UGMGR_tag_t          root_folder;) `6 D; ^- ^0 V+ q& l
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];
" w2 }+ @3 t! J2 G) ?  int                     i, count;
$ c; J, s5 b$ v  P8 h  UF_UGMGR_tag_t          *folder_contents;/ `" S) ~. L. P8 R, e; V9 q- O$ D2 ~
  UF_UGMGR_object_type_t  object_type;$ @9 Q; g( ?+ |) D
  char                    folder_name[UF_UGMGR_NAME_SIZE];
1 I6 j( N1 ^$ M  logical                 folder_exists = false;) ]: a3 b0 A8 Z
  CHECK(UF_UGMGR_ask_root_folder(&root_folder));
3 l: @. m+ {& x" @6 w  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
; Z! L. U! j7 R  printf("Root folder is %s\n", root_folder_name);. p: e/ P6 @9 [7 @& D
  /* Scan through the root folder, looking for a folder called
7 i0 B5 s, Y4 e9 b/ d     "Test Set Default Folder". If this folder exists, set it to be# v7 j1 d/ R5 C7 s3 C
     the default folder into which newly created parts are
; y6 o1 Q9 C8 F     placed., }) L6 h) {0 l
  */
( e9 u3 w/ F: a( g9 m- v$ b# N( m4 m  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
* U( m0 q9 s6 z3 ^  v' {$ |$ J  for ( i=0; i<count; i++ )+ T# @$ M! b8 a' z4 u6 z
  {1 O) G: w6 p4 S& q. c$ A5 N
    CHECK(UF_UGMGR_ask_object_type(folder_contents,  [5 n  O0 E$ Z8 T3 U
   &object_type));& z9 \) g' J' l+ y" O
    if (object_type == UF_UGMGR_type_folder)
! d$ U8 I7 B7 k    {
9 u2 ~# A9 ?* w/ X5 j      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
  J. [4 f( |) E0 q% E      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )* ?: @) d# k* l) g: C, \. L0 O3 G8 k2 H
      {. h9 T+ [: O7 T" c7 [  M  Q
        printf("Test Set Default Folder exists\n");& W  q% c; [4 u. g
        CHECK(UF_UGMGR_set_default_folder(folder_contents));& Y7 W' g8 R; z4 [* k8 n" c. R! b7 _
        folder_exists = true;
/ Z: Z, m/ g$ s7 d( s' Y/ C        printf("Set default folder to %s\n", folder_name);* i2 Q9 B7 e8 Y
      }
3 T' P9 l+ `  p% J+ Q    }# C! i8 u5 \' G
  }
* g7 K, l, C. A7 `6 ^4 x' R  /* If the folder "Test Set Default Folder" doesn't exist, set the
' d, {; g8 t8 |2 P0 `, L     default folder to be the root folder.. g* h% R/ V4 S; f# ~: d$ b
  */
+ A0 i  f3 w7 c% P% D2 i  if (!folder_exists)
* R3 @! h9 c$ P. L/ q5 F. u; ~  {
% `0 s# ?! l' F# h    printf("Test Set Default Folder does not exist\n");
3 y6 [. ~9 L3 C    CHECK(UF_UGMGR_set_default_folder(root_folder));  _( k# h! U% O) h
    printf("Set default folder to %s\n", root_folder_name);1 T2 z1 r& _6 i  J" s
  }
& G7 v6 j: X" |% T+ b/ X$ [  printf("Encoding UG/Manager part filename...\n");
. T( V1 ]) Q8 Q  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,& d* T# b* Z' C2 N- V/ k
part_file_type,2 O# G9 Q* k- D8 {
part_file_name,
$ U+ u0 D2 F! @% ` encoded_name ));: p! |/ D& `9 i2 c" m6 o
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
+ |" ~2 I4 ^$ L& r2 p, G  printf("Created part...\n");
: i1 {$ q) G, R$ _- w) a  CHECK(UF_PART_save());! g4 d' h+ d) u5 }' Q* W
  printf("Saved part...\n");
. z$ S: p8 _8 U& F4 M% R/ H  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));# B' f" Z2 E# X; `" j% n/ r
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
# w1 P( Q) B( O4 O5 W6 P9 u4 t"Mk3 Engine" ));, v0 L) x' R* L* G! u3 Y
  printf("Set part name and description...\n");! P3 r  [  R/ q, V& u9 v
  return 0;8 q3 B" Y. b3 {# P! b4 C
}/ a! I2 F! w( f
/*---------------------------------------------------------------*/# Z* a9 \, Y6 ~9 s9 ~2 \
static int print_work_part_info( void )
; H( k2 }5 O$ E{
& ]. A) [  z9 L0 S, k$ C8 B2 p  char             work_part_name[MAX_FSPEC_SIZE+1];8 S5 T. Q  b, C
  tag_t            work_part_tag;
$ \: V8 |+ O* j2 |/ q( H. S  char             part_number[UF_UGMGR_PARTNO_SIZE+1];
) @) _' B( b; O& U: M2 q  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
+ Q; L1 C" _- H. o  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];
/ o" j& Z: C7 s  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
0 k3 T3 z( h- f/ s4 _! y- S  UF_UGMGR_tag_t   db_tag;
4 X5 y+ _% h/ J, Z- I! W  char             part_name[UF_UGMGR_NAME_SIZE+1];
. N& J4 X% e0 Q2 U% \* w4 J  char             part_desc[UF_UGMGR_DESC_SIZE+1];/ Z$ ?' _8 |& L& `" ?0 M& A) G
  work_part_tag = UF_ASSEM_ask_work_part();* m" W) ?  S6 ?
  UF_PART_ask_part_name( work_part_tag, work_part_name );
1 ?+ {( @/ n/ \# y% ?4 A  CHECK(UF_UGMGR_decode_part_filename( work_part_name,6 C2 a, f+ [; d
  part_number,
. X9 e, P3 ~/ z6 v" |" x/ G% L) i# h  part_revision,, i* N& e  o  t( A% `
  part_file_type,' Q0 w& ]* E" a. B( f9 b
  part_file_name ));* b" H, Y( Q+ b
  printf( "For the current Work Part\n\n" );
; F$ y8 U. C+ _8 B/ J: M- i3 D  printf( "  Part Number      : %s\n", part_number );2 U+ A/ `1 s/ {
  printf( "  Part Revision    : %s\n", part_revision );% s) E% v+ S( h/ r- g( j
  printf( "  Part File Type   : %s\n", part_file_type );3 L& ^. L6 b. ?
  printf( "  Part File Name   : %s\n", part_file_name );
) u& H3 W- A5 P7 ]! Y9 U( C: P" g6 n$ D; E CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
3 S8 k$ o9 K7 `  I2 d. W  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
6 I* K1 S1 V& C* S& l% w  T: s  printf( "  Part Name        : %s\n", part_name );
" Z7 |1 X7 R! R+ Q  printf( "  Part Description : %s\n", part_desc );
& v& ^. ]6 X! m( o) j3 n  return 0;( o2 K, u, c0 r4 X$ N  a
}[/mw_shl_code]" e9 }7 G2 y  v; }$ a9 g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了