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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。- ]2 M% W' h- n8 r2 b3 x& k2 d5 L

3 v% e& G* x3 F. @) @[mw_shl_code=c,true]4 A% G+ i, B0 v% T
#include <stdio.h>
) B" f) k2 Y- ?. ~6 d# S0 b#include <stdlib.h>
7 C+ x. h7 Q2 K. p& h/ X8 I9 d#include <string.h>
7 ~# F: f0 Y  U4 l7 A# B- D3 I#include <uf.h>- R. o. I1 Q: t
#include <uf_ugmgr.h>
+ E: g' g/ w/ s$ N) V' X#include <uf_part.h>* s( g, N$ \6 m0 q$ A  J
#include <uf_assem.h>3 P4 A* Z' U. v: ^+ U+ X
#define CHECK( func_ ) \
7 F& V4 G/ V4 [, V{ int  ifail_ = 0; \2 e! o4 T% \3 K# m$ L1 ^
  char message[133]; \1 A! @2 H5 ^5 C; [" U$ x6 N' b0 g  \1 V
  ifail_ = (func_); ! e, ]$ B9 ~: v. u. E% m) D
  if ( ifail_ != 0 ) { \
0 O/ S7 [( k' Y8 c  t- n    UF_get_fail_message( ifail_, message ); \6 `* [5 d/ H( q5 F" X" s
    printf("ERROR: %s returned from %s\n", message, # func_); \
$ ^9 v8 d; p# b$ Y: w    return ifail_; } }& N/ t( b- R5 s
static int create_part( void );
9 \* @) V5 q" T. u; N# }static int print_work_part_info( void );+ X6 ~* S' b, c8 o2 `  r. u0 Z
/*---------------------------------------------------------------*/
8 R* `, A2 {) L" w& Mint main(int argc, char *argv[]): }$ h! O/ |7 q6 b* k
{. J4 R' D7 U% \4 `" T
  int  ifail = 0;1 \* m6 n; m- }- ~1 X* }. B
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
5 ~1 A, l$ |, d, |7 p  if (ifail != 0)2 o& R8 Z  r1 K9 X
  {
8 |0 u7 ?0 O% u! Q# ?# w    printf("ERROR: Failed to initialize with error code %d", ifail);
, z7 Z$ h- ^, [& b: B" c8 N    exit(1);' E* Y- t; @2 j
     }
4 r& o5 M! [. o& f/ V create_part();
! p' I7 D/ i+ J& g. X  print_work_part_info();. q4 e" h5 s0 H+ ^  l$ m& m# z$ [
  UF_PART_close_all();  |1 j8 N/ F! \5 N! K: V6 m7 `
  UF_UGMGR_terminate();8 i# O2 x( j# D7 j4 y+ S
  return 0;# v0 C6 X9 T* l8 B& b) X6 L& j
}; y" }4 {' @/ N) t
/*---------------------------------------------------------------*/
/ f" J: `/ r5 o8 k' Cstatic int create_part( void )0 P0 [) z, d  d" |
{
% Q8 J% c  u1 m, s- `. m- \! U  char*                   part_number = "600-A-wej-mk1-eng";
$ H  ^" h) g0 v( p  ?; |7 g  char*                   part_revision = "A";- h& B: o3 {( U3 u
  char*                   part_file_type = "master";
+ O/ N6 E& N5 t, l& R0 D  char*                   part_file_name = "";
% n% k/ s. V. E) {  char                    encoded_name[MAX_FSPEC_SIZE + 1];" ~/ l% o" O$ P$ }! C$ }% I( d
  tag_t                   part_tag;
) z3 z. M: o6 J9 J% E# q7 E  UF_UGMGR_tag_t          db_part_tag;
9 O8 W/ C2 u3 }. v! a  UF_UGMGR_tag_t          root_folder;) f  Y+ [& F7 P/ c# z
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];
' G# U/ v' U; M" i2 c0 R  int                     i, count;6 [$ `8 Z$ {, s
  UF_UGMGR_tag_t          *folder_contents;6 L* O0 {2 s% Z. ^: z
  UF_UGMGR_object_type_t  object_type;
% R1 f: d) L0 ^0 _. Y  f+ `" U  char                    folder_name[UF_UGMGR_NAME_SIZE];# S, Q9 l: x0 S! e
  logical                 folder_exists = false;+ k: y# z* q) R- ?$ B8 w) k0 j
  CHECK(UF_UGMGR_ask_root_folder(&root_folder));  ?9 i) {7 d5 y  n9 n; X9 ^& E
  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
" \3 m( q) O" Y+ P4 U; Z) N4 Y  \  printf("Root folder is %s\n", root_folder_name);0 O: G8 d8 ~) H; M1 x" y
  /* Scan through the root folder, looking for a folder called
" D7 p* @% h1 q" C3 M     "Test Set Default Folder". If this folder exists, set it to be' t4 o1 N  `; }3 ]( n0 F' ?3 ~
     the default folder into which newly created parts are- a# m7 F# u4 ]6 w
     placed.
' M' ^1 [1 m! X$ C" ~  */
1 W- x# i* |1 v# V+ Y  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));" O0 X' ]2 r" y2 x; Y
  for ( i=0; i<count; i++ )$ Y) ?+ B8 H  F$ d1 X- p6 \
  {: u: k1 ^0 @' k) h/ A
    CHECK(UF_UGMGR_ask_object_type(folder_contents,/ t, G5 W- d* u( p" i/ x, o8 Q+ B1 Q
   &object_type));+ I7 d3 `- m# A$ P8 I- B
    if (object_type == UF_UGMGR_type_folder)+ S2 l" a6 ]. _3 c, n/ ~6 c
    {
! C7 l* e" A" p4 S" l      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
8 n" n! Y; W" m4 Q      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
4 {& y3 ^. n/ S4 C% }/ U4 N9 F; T      {
/ A2 g6 i' P" x0 x  b        printf("Test Set Default Folder exists\n");
' O* m9 D' |' D5 y( H        CHECK(UF_UGMGR_set_default_folder(folder_contents));
# h2 a( M5 q& ?/ Y) s# t5 E( C% c        folder_exists = true;
! i! _5 w& T! e  n: O9 H( P7 ^5 a8 ~        printf("Set default folder to %s\n", folder_name);% |: j" I( Z; K2 k+ l' }1 O
      }$ I/ W( J: G( {2 s. E
    }) i' Z' z3 X& I5 e& Y5 B% x& K
  }' g9 q" p# F4 `% H4 U$ F; o4 Y' f) C
  /* If the folder "Test Set Default Folder" doesn't exist, set the
9 g) D9 b( e7 b8 J" N     default folder to be the root folder.
" ~; _7 c5 X4 a+ ?/ C  */
6 m9 S+ @1 W+ `0 U1 g" Q! [( O$ T  if (!folder_exists)9 k/ Q# V- n. s9 R. H
  {4 t+ }0 v0 L4 _
    printf("Test Set Default Folder does not exist\n");& A0 R" l: h! F( e3 Z% H) _
    CHECK(UF_UGMGR_set_default_folder(root_folder));3 `3 s& z: C! q5 ^  y2 T0 I
    printf("Set default folder to %s\n", root_folder_name);
9 q! s! x5 n9 I9 ?' P8 ?6 U  }
8 o& a/ M1 U! p: j  printf("Encoding UG/Manager part filename...\n");8 {1 N: h. f4 \' A
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
, r+ M: M9 w% B5 ] part_file_type,
2 `! b1 P7 |: J% B7 _- q; ~6 ` part_file_name,
( o* S! I+ k& ]$ e  j5 b! h encoded_name ));* M6 i( @1 P* j% y. @5 A. C" `
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));8 f$ Q* Q# u0 s' @" g. z2 U7 X3 q
  printf("Created part...\n");1 Y; i+ q6 C4 \7 w" c
  CHECK(UF_PART_save());: s2 A. X8 y- j- Y8 v6 T6 p. }8 k( H
  printf("Saved part...\n");+ b' V  n  ^+ s. W, G
  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));. h4 z2 u; _9 _" B4 q8 ?1 B8 m# x
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
: s( P$ ~# n" R, ^( g7 f( W"Mk3 Engine" ));
2 }' e  r6 B1 i- v- U. ?/ j  printf("Set part name and description...\n");* S# N7 K7 h6 X! G3 ]
  return 0;
% o4 o; @' m: ?& r. ^}+ h& k3 ~! f1 f6 Y0 S2 ~9 v( c! S
/*---------------------------------------------------------------*/; w0 v2 B" M+ ?) D( G
static int print_work_part_info( void )- T: l8 p! I9 o# p- ^
{
/ r, p' c$ v5 S1 @! m  char             work_part_name[MAX_FSPEC_SIZE+1];
& @# Y: V& w3 g$ U  tag_t            work_part_tag;
% i3 A' d0 c1 L: m" Q, t  char             part_number[UF_UGMGR_PARTNO_SIZE+1];* L$ ]3 p6 \5 A! g1 z+ ]; u
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
- R# n' Z5 l( I& m  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];( }. x0 l- t& _1 \
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
) R  F5 i; e5 x6 y5 m, [* e  UF_UGMGR_tag_t   db_tag;
3 g+ g; j- i/ a% n3 G  char             part_name[UF_UGMGR_NAME_SIZE+1];
6 ~1 `0 L5 z) D& a  char             part_desc[UF_UGMGR_DESC_SIZE+1];
, L  |* P, W$ `7 h6 z  work_part_tag = UF_ASSEM_ask_work_part();. X: M. g' S/ n! ]+ f
  UF_PART_ask_part_name( work_part_tag, work_part_name );
+ p. a% o6 y& b  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
1 S# N3 k) J* x. e5 D# m6 _  part_number,
# {9 h- Z9 D( b" R! m$ e7 m  part_revision,
$ T  Y* ]; {$ F6 r" u. E( ]  part_file_type,
; y- A4 |' f% ?  part_file_name ));. J3 Z5 V" K9 _6 Z$ [$ L$ l
  printf( "For the current Work Part\n\n" );
+ A4 v# b; f+ J0 u) D  printf( "  Part Number      : %s\n", part_number );5 m& n2 G, Z! [) x
  printf( "  Part Revision    : %s\n", part_revision );2 f6 c8 O2 }" l8 T8 E  L) ~( k
  printf( "  Part File Type   : %s\n", part_file_type );
6 n! X+ K7 {1 o% h  printf( "  Part File Name   : %s\n", part_file_name );' K$ Y/ z* v. W$ ~+ Y- l# \% I9 T
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));' @5 ~4 E9 i; f8 A, _: A3 j
  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
8 v. e3 D: E5 ?4 l3 J$ B  printf( "  Part Name        : %s\n", part_name );9 ]3 B4 ?. `2 j3 N/ J# v. A
  printf( "  Part Description : %s\n", part_desc );
$ n" w! M9 ~2 L  return 0;6 T5 Z8 F5 g; Q! W) D- F7 T
}[/mw_shl_code]
) [5 O9 U6 {& Y& J( W& b2 r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了