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

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

[复制链接]

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

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

admin 楼主

2017-12-7 11:22:15

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。/ g& o# ]+ q+ d9 X" v

+ K6 g4 z$ i* Q9 ]  z[mw_shl_code=c,true]
/ s/ i4 i" z0 L. k8 p#include <stdio.h>6 \7 @% s7 p8 f( [. r, t
#include <stdlib.h>
* Z0 N* d: Z! e5 i! S: E( _8 G9 W( K#include <string.h>
9 K! W; v7 C- @- C#include <uf.h>
6 W# @( S( m7 B" O* `, j#include <uf_ugmgr.h>
8 K( F/ D7 M% ?! Z1 @#include <uf_part.h>
  j0 I7 u! ^4 f2 t#include <uf_assem.h>3 c8 P7 s; n9 Y
#define CHECK( func_ ) \
& m$ S3 i  G4 R9 t1 @& ^{ int  ifail_ = 0; \' Y5 L- K2 t( x+ ]" W8 L; M
  char message[133]; \) ]- g1 }8 K9 E* q& T- k
  ifail_ = (func_); : x' q* H/ ?1 K' V) }, [  b
  if ( ifail_ != 0 ) { \
6 j" z* P5 x& ?9 e- c3 |3 y    UF_get_fail_message( ifail_, message ); \9 Z# m8 v1 J( z! ~6 _
    printf("ERROR: %s returned from %s\n", message, # func_); \8 `/ x  {$ O, l; h
    return ifail_; } }
4 M7 l7 Z. D: S8 z3 K# m: ~  ~static int create_part( void );7 J5 |$ P) X" M6 @" w
static int print_work_part_info( void );3 A1 h% U, R3 q$ I8 O
/*---------------------------------------------------------------*/
& q3 B. j" e* C  ^+ Z( Q  s7 g& fint main(int argc, char *argv[]): Q- n$ ]6 q& Z
{
; ~+ j! a$ ^0 p1 p2 v/ |  `  int  ifail = 0;; t9 ~# x8 ^! M6 D! }5 w
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);4 B) h, ?# |% l& w1 i1 C
  if (ifail != 0)
7 r6 R, V2 l1 E6 [; [, G  {
9 n/ w5 H/ [$ }3 g  R/ ~    printf("ERROR: Failed to initialize with error code %d", ifail);
2 D& D; S+ @# @3 ^0 L    exit(1);
/ U$ K0 i* _7 v) f# [     }2 E' F% m/ ~! @8 m3 e8 r0 U5 o; ^4 W7 Q
create_part();. u4 A) ]1 o" e2 n
  print_work_part_info();
1 t) H: q- V( y) P6 ^, Q0 f* k  UF_PART_close_all();' O9 w+ u( R# {# i) h$ K
  UF_UGMGR_terminate();- i) J: I9 I. }  q9 W
  return 0;
* t* ?' u$ [, C  [4 @}* O2 s1 D2 P% x7 z) {+ d) z
/*---------------------------------------------------------------*/' M3 Q1 U* j9 i* \6 k! \9 P
static int create_part( void ), g. F/ a+ e- R  z4 Y# l6 O
{
6 f1 Q" V7 s' i5 {% B8 M' u  char*                   part_number = "600-A-wej-mk1-eng";
9 L: s+ u4 ~/ J! y, G2 S. N, e  char*                   part_revision = "A";
6 i' M% h! ^) Y+ t7 v  char*                   part_file_type = "master";$ J$ ~. J3 \% l: b: v/ T
  char*                   part_file_name = "";! y! m% j( C- \& \' {  @( E
  char                    encoded_name[MAX_FSPEC_SIZE + 1];3 D3 f! |5 j' T* {0 `, x! \; T' d
  tag_t                   part_tag;
1 A# B& r0 |# V( p  UF_UGMGR_tag_t          db_part_tag;
' T5 B1 A8 K- {2 k7 _4 d  UF_UGMGR_tag_t          root_folder;0 p8 V+ N1 G. O4 ~* ?4 f2 w; `
  char                    root_folder_name[UF_UGMGR_NAME_SIZE];6 A( b3 p8 B, p( F8 S! D
  int                     i, count;3 v9 C( Q8 U8 K' y" P0 i
  UF_UGMGR_tag_t          *folder_contents;
5 _: }* d( ?# ^5 G  UF_UGMGR_object_type_t  object_type;0 U5 g; k6 X2 X# i/ t9 R. @
  char                    folder_name[UF_UGMGR_NAME_SIZE];; S  l. E6 ^6 E1 @0 ~: c1 K. R
  logical                 folder_exists = false;
- X6 U, \2 W3 A/ y+ r$ b  CHECK(UF_UGMGR_ask_root_folder(&root_folder));
0 }, @8 @4 F6 G3 m4 P6 F  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));3 ]3 j0 `4 g7 N0 u8 g
  printf("Root folder is %s\n", root_folder_name);. w. W  W" N9 x. A' D
  /* Scan through the root folder, looking for a folder called
- ^' s0 y) V8 Z: i; E     "Test Set Default Folder". If this folder exists, set it to be2 Q% q* P/ m! G4 d) E: ]7 [
     the default folder into which newly created parts are
# [4 m1 {, g9 ]* I7 ~6 ]( I7 Z( q     placed.6 a- D, V, G' H6 A- Y( q
  */- A, l, ~; e9 l6 Q  v* H6 I: I
  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));7 s( d' g) r: P
  for ( i=0; i<count; i++ )
# @2 O7 @3 m' i; {7 I/ Y. W  {* U: x$ _. v+ P
    CHECK(UF_UGMGR_ask_object_type(folder_contents,
1 \) b9 ~4 o7 H0 ^0 B. b   &object_type));$ T# j7 m7 ?8 B  i- F+ |* Z- u% m
    if (object_type == UF_UGMGR_type_folder)
" L' t9 h" D; q" m    {
% E$ O7 h- [4 n1 \1 B! x      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
$ Q0 J. @4 W7 B9 x4 I  S$ s      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
7 B: z3 N$ L* v7 U9 ?7 {      {
# b; k! p% n4 I/ G  c; {& Y9 v& \        printf("Test Set Default Folder exists\n");
0 t1 L4 J0 t: i* I* L4 N        CHECK(UF_UGMGR_set_default_folder(folder_contents));" G9 m7 i/ U: }' M
        folder_exists = true;
# Q# U7 y% ?! l- Z8 m# U+ s        printf("Set default folder to %s\n", folder_name);1 N* K" Q# |! z: _( D4 V+ t
      }. k# M" i  m9 {1 V/ w
    }# |% C; s" X3 k- i% I+ ]& _
  }
$ K0 y. {: I; U- \$ e7 i  /* If the folder "Test Set Default Folder" doesn't exist, set the) _. ?. P* f" C/ ]9 ?
     default folder to be the root folder.
# H2 B; q! [' `& N3 c9 v3 I  */
7 S4 K9 Z* t  B1 S5 l  if (!folder_exists)' R5 G( b. q! i: `
  {
4 @$ f' k) V$ u1 {    printf("Test Set Default Folder does not exist\n");
9 X/ @; Y. ]1 P    CHECK(UF_UGMGR_set_default_folder(root_folder));
% Z% N( q' X3 g5 L. V( j    printf("Set default folder to %s\n", root_folder_name);6 Z, L+ Y; z4 Q% }( h# O; U
  }9 i( E6 x* w2 w3 N3 L! V
  printf("Encoding UG/Manager part filename...\n");6 W) u' P) A/ W/ a) R6 o
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
+ |' x3 F+ c+ P1 e part_file_type,* E4 v" J) g5 ?' i% P& _1 t
part_file_name,
( U" V* Z* u' t8 O1 Z% l encoded_name ));
4 X1 D6 m5 D6 Z) `% N  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));/ f# Q4 \9 z8 I
  printf("Created part...\n");
! s/ c. |$ c0 d  CHECK(UF_PART_save());, d  W+ |  `9 V, b0 X0 d$ t
  printf("Saved part...\n");
; |$ i- o- R6 a# [9 T" k# y. D  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
9 c, l/ D4 x5 }. L; e  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
0 V' g' |& ~/ E/ q. p"Mk3 Engine" ));
* S5 R# v6 G2 ~0 ]  printf("Set part name and description...\n");
; }5 e0 L, L& L) Z9 m4 |! |$ {  return 0;
& m% e! G( ^  d  g2 U& i}2 @# s: e; ^+ g9 G
/*---------------------------------------------------------------*/
0 S) |$ r  ~6 U9 Ustatic int print_work_part_info( void )
/ r5 B' T; q+ g2 \# [{# Z6 f; u' K" B% [
  char             work_part_name[MAX_FSPEC_SIZE+1];  [& @: U; P- N- `; Z! w1 b+ Z
  tag_t            work_part_tag;. D  t( ~' W7 W, D( j2 J
  char             part_number[UF_UGMGR_PARTNO_SIZE+1];! w+ W2 U, j+ t& x* P  r5 t
  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];
( w* }# z' D6 L- P/ p  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];  R- h* _/ g; M/ L; R
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
2 v' F- p9 R% G8 R, c  UF_UGMGR_tag_t   db_tag;4 I0 u4 w& @) p* z  E
  char             part_name[UF_UGMGR_NAME_SIZE+1];. U1 h+ y+ G% ?0 D9 y
  char             part_desc[UF_UGMGR_DESC_SIZE+1];
; F" Z9 E: T' P' V& a! ~  work_part_tag = UF_ASSEM_ask_work_part();
/ O; J% Q' F, O, y. i- U6 _( k  UF_PART_ask_part_name( work_part_tag, work_part_name );$ p$ n' u7 n$ Z7 `# }, O5 U
  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
. ]& a% Y) l# E  part_number,
7 b' j* L( ~. v9 G. K  `- L  part_revision,0 D  h+ ^2 H" p! m
  part_file_type,: ~2 e) ~4 Z% S* E. Q5 S& O
  part_file_name ));9 }5 Q5 ]" {: [( g0 D2 O
  printf( "For the current Work Part\n\n" );# l! R* }. L( f
  printf( "  Part Number      : %s\n", part_number );; Z7 h* [7 w, D1 E) K7 C. k& e0 H. Y$ h
  printf( "  Part Revision    : %s\n", part_revision );
+ Y" A+ B4 ?7 `$ x0 s) z" K  printf( "  Part File Type   : %s\n", part_file_type );
" a6 X4 Y  ], G  printf( "  Part File Name   : %s\n", part_file_name );
. A  x$ |3 f0 z5 W, X0 r  L9 A+ I CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));; g* Q7 S- V* ~9 j, t7 S: b+ |
  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));# ]$ `; n/ e% ], d7 \0 ~! A* u
  printf( "  Part Name        : %s\n", part_name );1 z0 @( Y; o0 n  [
  printf( "  Part Description : %s\n", part_desc );
+ c/ J1 t# q7 \$ `% ~  return 0;
+ w% P) U" L% t8 e* t}[/mw_shl_code]
  j% Q- |! s9 O3 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二次开发专题模块培训报名开始啦

    我知道了