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

[二次开发源码] NX二次开发源码分享:一个孔加工的创建过程

[复制链接]

2017-12-9 13:27:49 5171 1

admin 发表于 2015-3-17 20:41:02 |阅读模式

admin 楼主

2015-3-17 20:41:02

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

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

x
: i1 i8 R9 [7 R7 X7 y/ [

1 S/ ]+ s, H3 z1 g# n4 c
0 n' G0 Q! y5 F. s2 a/***************** Include Files *******************************************/$ l8 N/ g: A# J- K( H. t
#include <stdio.h>
0 Z* P4 A. b+ N8 u* }4 H* t#include <string.h>) k! g) V# \! [7 x1 Q
& O4 m- E% O5 d' a( G* j9 e
#include <uf.h>
2 d3 ~3 r, {9 H  d5 \, p) l( G#include <uf_defs.h>8 p( O8 j$ f0 s$ Y8 `
#include <uf_cfi.h># {' B3 ?2 G: R+ n% @0 u
#include <uf_cam.h>9 g4 ]! n, V; K8 T# }2 C7 w" U/ x
#include <uf_ncgroup.h>( g& u+ U; [/ H0 X
#include <uf_part.h>8 w# ?  L& |- i" T- C1 z& ?
#include <uf_setup.h>7 b0 F" U; B) }8 N8 `4 N! ]
#include <uf_fbm_geom.h>+ v& [5 ]6 T+ P3 S  \9 c
#include <uf_ui_param.h>
) x: Y* R+ n/ b/ U# P9 ~8 D0 S& ]" q' V" j
/****************************************************************************/
' d. ?/ G% T  B$ v3 q+ S
  U$ E8 X2 ?6 e% t( |extern DllExport void ufusr 3 q3 d/ e( X' L# Y, z- Q$ N3 E1 [# X- H
(
- v# M6 A6 E3 w4 P& _   char   *param,
# l# g5 D) w7 \2 p) I, o, }1 Q   int    *reTCode,, j8 I; w) [  U; ~- v
   int     param_len
7 b% w# o$ `8 F9 ^# n& R8 p)8 J' U6 A3 ?1 a# ^, \  b
{
4 t. N' h( h3 N+ ]6 ~; p   int error_code = 0;
5 k5 Y$ X: s& i' z& T, Z3 m5 b8 r   int i = 0, count = 0, part_units;
; G& M8 {9 T1 x% v7 U5 ]   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
+ j, J2 F- H! I  f* O, `   char *env_trans; $ d5 Y$ o: P' Z; Y) L
   char opt_name[ MAX_FSPEC_BUFSIZE ];" d: h& R$ }# e- W$ o) V
   char part_name[ MAX_FSPEC_BUFSIZE ];% P. Q4 \/ \& d3 C) [5 e6 O& C; C' z
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";; e/ E5 X+ D; k. k+ C* V6 Y* X
   char  **feature_names;
* ]) N* f, W; h; d9 b3 r   UF_NCFEAT_t *features;) F9 q/ J) l! M& @/ n

2 a# w' y- P/ n9 w& G   tag_t setupTag = 0, wp_tag = 0;' \7 A, s! }- ?9 p- I9 _
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
9 K' t7 }' ]3 N   logical answer;3 J; N2 ]" L  k7 r0 F' b
3 ^% b: D. k. i
   char **criteria_list;
( V2 t! d! g0 y$ W   char                         **criteria_to_consider;1 }/ L  ?! @7 T; k
   int                           num_of_classified_sets;
: `) p8 i7 c# i$ l$ ~   UF_FBM_GEOM_classified_crit_t classified_sets;
/ W  j% i9 d1 D) q. b1 A# o   UF_FBM_GEOM_crit_value_type_t crit_type;! C7 C( N. L2 K- d
   double                        value;
3 L& R+ Q- ~& z: ?0 j3 l* P' W   UF_PART_load_status_t         load_status;9 ~) P# M8 T0 T% L. ~5 O

" I$ O3 Y8 s* r3 Y   *retcode = 0;
; r$ X7 l; H% N
0 a# e& T5 b% N7 E& i, N   error_code = UF_initialize();
5 Q! p7 n1 T0 B) ^   if( error_code != 0 )
% ]* Q4 \3 z' h   {. O6 [+ w7 A- K  _4 A
      printf( "Failed to initialize uf %d\n", error_code );
$ K; V! X5 u9 F7 z; V4 l# n, X6 X* F      return;
4 |4 x7 `% @3 S) m' ]   }
( s/ }/ c& U+ D8 x* t, _& W; c
% p- c" z. v- o, u: K% \   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
5 a1 N4 A* |) E) `" _0 l- C                                                       &error_code );' {, m& n2 i; g4 B: Q0 K/ h3 f+ \
1 x* c7 a) R9 n! ]! M/ ~
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, 7 K- f" H9 L  `
                                                 &error_code );2 j8 G9 B  g+ h2 E# f. A( p6 o

. B2 m/ T7 {/ d' w( {
+ V1 _, ~+ x8 N, ^9 H0 h8 c7 G   /*** This program works with the part files in the CAM samples directory1 E9 n8 {5 D7 J8 _: u6 R" b) \5 w
        so we need to get the path of the directory and the file name
+ m* C& f+ k1 a" f$ q   *****/
4 U- k5 v9 y6 B4 s8 ]5 _! B0 d: s; T   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );
9 c1 w8 y: ^5 \# f+ P! Y; q! E   strcpy( part_name, env_trans );3 b4 N% N5 ^% v+ x% ]( J
   strcat( part_name, "cam_holemaking_base_" ); , @. e3 _) Q3 ]; ?: |9 S: ^
# l7 q! ?4 U9 s
   /*** If no part is open then open the part cam_holemaking_base_in.prt
# `! i5 X1 D7 V8 M# u& l. P" y: N        from the CAM samples directory
/ J  I$ ~, O' Q) o$ Q        If not check to see if the units of the open part so that we can open
2 ]2 l0 e% r+ d9 X        the same units part 6 ?+ s1 V& |& n' j1 t7 F: K
   ****/
" u& t8 z5 C1 x, ]   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )3 Z0 ?  X! P5 @1 X' G3 j+ @4 T
   {4 c+ U4 f* d* G
       strcat( part_name, "in.prt" ); 8 }6 i! y1 ?2 V' A- ?$ g
   }
: c& j7 T) D3 M& {6 l( F   else/ ?, C7 `  {) N+ k( W( S
   {
' d3 W3 n8 d5 h. A( l1 o- b1 X      UF_PART_ask_part_name( part_tag, open_part_name );" N! p. Q. p: |1 ~
      UF_PART_ask_units( part_tag, &part_units );
* }9 A2 O1 E9 y- a4 }, }# M      if( part_units == UF_PART_ENGLISH )% ]" i' J- k- w# Z3 |. H
         strcat( part_name, "in.prt" );
9 P8 \9 v& w4 e5 X  [) R      else2 d/ R; J" b- O9 w: ?
         strcat( part_name, "mm.prt" );
7 H5 v8 O; Y! A- Z: g0 e   }6 u8 X  i. ^, p. b

1 p2 z1 v- y9 [; _2 T   /*** * h; F9 Z* d0 f0 `; Q: l: K
        If the file we are trying to open is the currently open file
" R0 H) t1 g, J$ }7 H9 t- p        then continue on
  G8 B" A5 E+ i9 j1 H7 j6 K3 R   ***/6 e! P2 n" ~, [' u' @& n# ~' D
   if( strcmp( open_part_name, part_name ) != 0 )/ U7 V1 ~: P. {% m
   {
+ p& D8 ^* @+ ^, ^1 Y0 v; X/ w: n      UF_PART_open( part_name, &part_tag, &load_status );
4 J# F& p2 p5 t6 S# G* o   }# R; o( I" N  I- k( p( {/ O
1 Q/ ]; }% e8 N# b1 A2 }6 p; g
   error_code = UF_CAM_init_session();3 Y  R7 J$ ]; a: u( P6 ~, v) }
   if( error_code != 0 )* w. T. k. G, c7 ]* \4 Q
   {* }' s' E2 ^: Z  Z5 U
      printf( "Failed to initialize the CAM session %d\n", error_code );
& M! {4 C2 e* ~1 `      return;$ ?6 L2 O5 j# D. ^6 J. X& H
   }
0 m+ o; h; w; z4 C" v
/ G7 M. k* O. S& J3 q( x   UF_SETUP_ask_setup( &setupTag );
, W3 d5 D4 u9 B3 P% A% B! i: T   if( setupTag == 0 )
/ z$ s9 |  a* l; t+ z   {: w. X) v5 n7 I' B9 T
      return;9 f3 C6 g) E! }! L: W1 N
   }
2 L8 r& Q& x! j4 U- j! \9 O, c# Z$ V: M* S+ h
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
4 S$ k; h& H* |% _- Y   strcpy( opt_name, env_trans );8 H2 Q- h; m% O) X/ I. d. A
   strcat( opt_name, "hole_making.opt" );
! y# Y1 k! n' H! x( z8 i9 e
5 I# A( I1 M- @( w5 P   UF_CAM_reinit_opt( opt_name );
8 h% c7 Z  q+ s$ z) e- Y" E
$ p0 U' n7 C# P5 F+ O5 f. @   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );) q8 a. p! `+ s: p
. \! G# n2 u( A  o; G! L
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
0 i" W, |5 O7 Z" s( V   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
) c/ {: \) y6 V. W0 e: _9 ?; f! D   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );: U1 @' k, }2 [$ h$ c9 z
   if( answer == TRUE )
# l8 |. Y% X& Q' F: \+ `      UF_NCGROUP_accept_member( wp_tag, geomTag );7 ^7 O8 E+ @. A5 r2 h! Y: f5 z
   else
$ p. v/ Y; D- N3 R# W      return;
; }& ?& l+ [9 Z& ?  M. J: L; K% b+ w
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
# O0 e* o* x7 U# O& L8 y2 E0 ^& l; m1 I8 H2 j, l; O
   if( count > 0 )
( G9 a7 ?; A( w* B      UF_free_string_array( count, feature_names );% h4 r9 \2 x* v/ Z1 V8 z
5 }5 e; Y, q+ W& m* f4 @& Q9 R
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );9 K5 e" o/ l/ Y$ v6 B% Q

% d3 i: Z0 B/ ^" d$ s0 r   UF_FBM_GEOM_ask_features( geomTag, &count, &features );1 x  C5 @( J: g9 s  ^, x

" b3 F0 J: ]! u# g/ m& U  d0 I   if( count > 0 )$ \7 i  j+ V- T3 i8 k6 ?! z
      UF_free( features );
4 {5 E# c9 G* s7 X   else$ s" _& `6 t5 F* V, ^
      return;
2 W, L7 `6 [# w. Q! B- X8 N
4 k6 L$ J% G% k  l& T   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );. K! Z- {8 `9 L; f
% N: Q) }2 T8 H2 D# O
   if( count == 0 )  Z0 J. Y3 `3 e0 Q2 H/ ~9 Y/ ]  x
      return;
8 [3 ~- j, `  d1 v. a( X
( V. F8 Z: f- G   strcpy( criteria_to_consider[0], criteria_list[0] );  ?/ p2 b" i! o( ^

5 X: [( R5 a8 Q9 x   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
  m: }6 B; }9 F' `                                     &num_of_classified_sets,
' b( ~; a" C  g1 B+ u+ {3 T                                     &classified_sets );
3 {3 X9 L; H' d5 L8 \' H( p8 ~6 V$ A* T
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
  X+ N8 w  N' F6 H' ~& }- f
( w; b" H' R: T% {   for( i = 1; i <= num_of_classified_sets; i++ )$ K% V4 q) H0 I7 j1 Y1 q
   {4 L$ R7 ]0 B0 ^3 d
      switch( crit_type )1 X' y1 t; |4 v  y; @1 w
      {3 M! o% f# O/ R* f! a, R. L/ R
         case UF_FBM_GEOM_crit_value_type_double:8 E  T& s3 }6 {4 M1 c
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
$ C: O3 Y, Q" ]: w& ]" [                                             criteria_list[0], # G% v+ i/ W8 q5 _
                                             classified_sets, i, &value );8 z  A; I& r: t9 C0 c3 d/ T; f
            break;
* T( K0 \1 t& Y0 v' }) h2 x1 T  Q         default:
: H* Z! \3 A- ^# R            break;
5 @/ j' O! l; Z. M  s& S0 l0 K      }
) E! D0 G- ]) L3 T) w   }, Y; l6 H/ J& B+ ^$ N) u
5 W& \2 ]' \6 N7 Q/ o  ~
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );0 u! J! y; x2 P: H# o0 L
( l% H% T+ d9 U) X6 {( P
   return;6 H3 F& C2 O, J, s# t2 w
}9 T1 I' h! S& f8 J; f

( j6 c# ?2 o* G5 i( aint ufusr_ask_unload(void)1 \$ G8 u0 c2 L, C0 S! D
{4 R% d! }7 M8 {' Y+ U
return (UF_UNLOAD_IMMEDIATELY);
1 q( T$ m! u( M$ H" ^3 M. o  n: S}
+ P2 q8 K) v7 I& t3 q5 I* N: M. U  O! |/ H. G
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

至简天成 发表于 2017-12-9 13:27:49

至简天成 沙发

2017-12-9 13:27:49

不错不错,正需要的东西
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了