PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
. g+ k; ?4 l1 X# A2 @
$ A" w: A  S7 R6 v

3 ^/ y* S0 p7 L% @) m% `/ p6 p% [/***************** Include Files *******************************************/5 W. U4 Y7 p  I: s" I
#include <stdio.h>
1 U1 M/ ^$ B5 ^: `+ Q' Y#include <string.h>) a& I0 y$ H7 W+ R3 C

" P5 @( k3 n- k3 L+ w. i, `#include <uf.h>: c+ d& N: I6 g6 g, B5 w
#include <uf_defs.h>
2 ~& y8 i! Z8 l8 l& B" `7 b#include <uf_cfi.h># F& \: s) r, q3 R0 W0 W0 @
#include <uf_cam.h>3 C& f! f. A; e# }  r2 i/ ^
#include <uf_ncgroup.h>
5 v$ J5 ?- e5 H9 L0 ~  V#include <uf_part.h># [  B. ^& D9 [2 G; P# b. J
#include <uf_setup.h># D' l# T; s5 u* \7 Q
#include <uf_fbm_geom.h>2 M0 ?1 c) D) s) B6 Y& W
#include <uf_ui_param.h>9 _( V( i8 [& X0 t8 |

3 s9 z# J7 ]/ @/ ?! b1 g1 a9 W/****************************************************************************/) _* b# G2 m1 T5 j- v
- j! R! p3 \' _9 P+ c
extern DllExport void ufusr
2 b% p, a0 g  k' h% s$ q8 V(
$ Q( X, A+ N. N7 X, ~! T   char   *param,
! x& V, x" z$ j   int    *reTCode,
4 L: s! |8 x* u- S5 n% Y   int     param_len
& _4 F- g( J. }( i% V! o5 h): T$ [; E1 `/ _) h/ s
{
1 U$ v0 ^% ?% b   int error_code = 0;9 W& G5 l! n8 Z! v' A! Z
   int i = 0, count = 0, part_units;
4 P! |* a( v- }   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
! k- i( }) T3 O8 C+ y   char *env_trans;
' ^' Q4 w' S, U$ \( T   char opt_name[ MAX_FSPEC_BUFSIZE ];
' s$ L3 z* ^. G1 X) n( L   char part_name[ MAX_FSPEC_BUFSIZE ];
( m! f8 X* }; L9 t   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";5 A* @, q9 i6 f. J3 `
   char  **feature_names;
6 R8 R( C8 d% U5 q& q   UF_NCFEAT_t *features;# V3 j9 s  C9 ?: Q% x; l! N- C; v" K

" R* P  H% e* @! Q   tag_t setupTag = 0, wp_tag = 0;1 C  I4 `, ~$ Q: [8 C$ y% \
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
! H. i; A3 ?2 k* @! a$ U2 _   logical answer;2 O4 ]8 b/ j7 l
% c/ p' T/ T2 t; Q* W
   char **criteria_list;
# [" i! C0 U. x7 P# ~   char                         **criteria_to_consider;
3 G7 p+ [+ v. h* f  d   int                           num_of_classified_sets;
3 g; X% d! u# ^% ^   UF_FBM_GEOM_classified_crit_t classified_sets;! v$ c) ^/ f# |3 O& @- r+ ~
   UF_FBM_GEOM_crit_value_type_t crit_type;: r& g! V9 ~* l0 n
   double                        value;
) B1 M. H- B# P$ I9 i   UF_PART_load_status_t         load_status;
' b: A# g: K" l  A* j; p3 P, b2 w' e: A. D2 v; K6 |* y5 n& r
   *retcode = 0;8 G) c( h# h4 S/ O! ~8 `# g

% _( K3 n2 J1 s! M: T   error_code = UF_initialize();) K! \5 `9 _! j! ?/ [+ i3 ^
   if( error_code != 0 )- m% U9 w7 W/ S/ K: k0 Z
   {2 M; n! g% [' }& e" w: \
      printf( "Failed to initialize uf %d\n", error_code );
0 `) Q: ^% |: U; n      return;- Z1 }4 ^. |8 ~* @9 C
   }
$ d7 t0 y& q3 P$ h- p) N. C& U4 H( Z' _. _
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), 0 a2 p" E  `& w, ?
                                                       &error_code );1 g* b/ q1 [3 u

/ [# p5 W& q9 }) s. X2 P) c   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, % U- r5 [. c. Q& g6 v
                                                 &error_code );
% ?; ?! _/ K/ C0 v; l. ]4 u
/ J$ ~: E/ R9 k1 x& j7 }) X% I9 z9 I9 F% ^
   /*** This program works with the part files in the CAM samples directory
, M- l* F1 \7 j2 B. z: g        so we need to get the path of the directory and the file name& I: n4 b% m# z- \
   *****/; N; Y& h) t( e0 z
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );
6 @& [5 U/ W, Q% i, K" V   strcpy( part_name, env_trans );
) s+ H; P, R5 Z! u* V2 a4 g   strcat( part_name, "cam_holemaking_base_" );
! n& o+ `; `: l8 U5 y. D; J8 P6 X* t* w( K) G
   /*** If no part is open then open the part cam_holemaking_base_in.prt- }* V; s# _+ g2 k$ Z
        from the CAM samples directory 1 ^* D- @) ~6 V
        If not check to see if the units of the open part so that we can open
6 _" K  y0 k& w        the same units part - n4 z1 }. T7 d6 b& Z7 E7 R
   ****/# e& u; Z8 O- \% B
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 ). d! w, m/ ^7 @) f! h8 V  V/ E
   {3 l+ i' w6 ]: Y+ t8 Q
       strcat( part_name, "in.prt" );
9 n4 T; M( Y0 {3 t" k  p. C   }1 g8 @# Q9 L& {, b: G( l
   else
3 y' [$ L7 z1 r' |5 p2 t   {
# |, o9 [. Q$ n  _4 d  e4 f      UF_PART_ask_part_name( part_tag, open_part_name );+ y9 X$ W1 [# Y+ C
      UF_PART_ask_units( part_tag, &part_units );1 R& s) i$ q& {- X. R- k& C7 n
      if( part_units == UF_PART_ENGLISH )
5 H% B0 `4 x" a$ A         strcat( part_name, "in.prt" );
3 @" x, R. x7 K1 I% w* A" }      else$ `- D' D5 W0 [3 N8 ~/ n* {
         strcat( part_name, "mm.prt" );! v0 @/ O0 ^7 M# W$ a+ k! x
   }
% S3 |6 ^8 D# {
4 A5 l- |  h( x# H   /*** ( U& d! z6 {9 x
        If the file we are trying to open is the currently open file
7 ^, u8 x+ r" ~        then continue on1 p) g+ E" Y! d5 m0 U
   ***/
* x% ?6 T& s) w   if( strcmp( open_part_name, part_name ) != 0 )
: L0 ^2 Y$ v$ R1 q% m   {
  T& R* `; y/ v; d2 N0 A3 I, F      UF_PART_open( part_name, &part_tag, &load_status );
' k# w$ H, |  }$ C8 W   }$ k( l1 ~- M  h: X8 g) B% K

: {9 _" o  M) b" P- k7 ~   error_code = UF_CAM_init_session();
4 {" J( m% Y' f3 N) ?8 F   if( error_code != 0 )
( \" @3 ]4 A+ Z   {! G+ i6 o& W6 ?+ ?3 ]. f' O, @
      printf( "Failed to initialize the CAM session %d\n", error_code );% u, p0 z" ?" l& q
      return;
5 b$ i; {9 k5 _& i* M5 E   }
+ u7 v9 U1 U/ G4 ^% g* H/ |6 O, x' P! w
   UF_SETUP_ask_setup( &setupTag );( N) a, t! s* K' ^8 `0 \
   if( setupTag == 0 )
, V5 u7 s  f4 M: J   {* ^. L, D) S! F6 G
      return;
# p8 c+ |* I& W1 q   }$ v/ v& T5 F) g2 D7 J8 [# y% o

9 V; V9 M# {5 T$ B   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );7 ]% f# w7 L$ `/ _; O
   strcpy( opt_name, env_trans );+ d7 K. d9 y9 G
   strcat( opt_name, "hole_making.opt" );
3 r3 V: C4 P% \0 }% a5 }$ g7 G6 @) N8 W
   UF_CAM_reinit_opt( opt_name );; P+ _2 M$ f9 T& y9 j
( G$ P: d5 w( u5 x  u
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );& S% C- ^/ M9 G( K  B

: P/ ^. @+ a" g5 }* o   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );/ R' l% D; y7 j3 B! I- U7 x
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );5 U/ y8 L% }; W0 V
   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
6 T) N+ b7 s( @: S9 r   if( answer == TRUE )
. L: ^1 s! j7 p: j2 @      UF_NCGROUP_accept_member( wp_tag, geomTag );
0 F/ ]7 ^+ i1 j$ ^: b   else
2 B+ w1 w- O7 j" h* i      return;% O; p( C  F6 k, W

  D& C* |* t( s4 {& B( L- o   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
$ K+ p9 N; H- i' Q0 _0 b1 U
# A: a) R2 G) P   if( count > 0 )
, x6 v$ b+ V( Q. U9 b) ]      UF_free_string_array( count, feature_names );
/ L9 M' v3 n; o; ?3 s$ O. {! M1 m9 \9 _/ S7 k
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );3 k- f: m8 L0 q  |
* J/ m  p1 r! D1 T4 @/ ~
   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
* {' X% T2 G; E# X. b+ {# \7 \3 b! l) v1 u; U& H
   if( count > 0 )# t) W3 D, ~/ Z
      UF_free( features );5 r1 [- Z: f; k) \' t! f; w% ^
   else, G* z, O; E$ _' A
      return;
% d5 l) s( F. S. G  ^. M/ e: ~% ?* l* ]- n$ e: B$ `
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
7 q) E2 o6 L5 J1 U: ^' \1 a$ D& R0 T
   if( count == 0 ), g. p6 z# Z1 U5 x+ A* w6 y
      return;
: }7 K7 `3 m6 X% h/ R8 |0 D+ `: k$ {9 F8 B' \
   strcpy( criteria_to_consider[0], criteria_list[0] );
7 D1 o5 z, s. v5 S. I0 Y0 V+ j
- ?/ Z) K/ E& D( U' B$ {   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
* @! g, b' r2 Q$ t                                     &num_of_classified_sets,
6 g* y1 ^' ]& Q$ ~( S' P                                     &classified_sets );! z# M2 p! m* L" c6 y% D

" R6 p6 _/ T* E( Z   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );) [. ?4 Y9 M; K- I7 {
; M4 n% \5 H; `4 J1 B8 g
   for( i = 1; i <= num_of_classified_sets; i++ )0 E/ {$ K# m) f( f1 U
   {  w2 |1 ?8 `$ j: E( O8 K" U3 h
      switch( crit_type )
4 d. ?( A0 a* w( p      {+ K- H, D. b, N
         case UF_FBM_GEOM_crit_value_type_double:
- E1 I: z) l  [: Q. l            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, ! S1 P3 a+ U! x0 {, C, `, U  o
                                             criteria_list[0],
) b$ C" D0 c: {$ k2 T                                             classified_sets, i, &value );
# ]' ]. ]* u# P: f            break;
+ `5 V( i) {! j6 |9 z         default:
* I7 k) ^; D9 ~. e% Y/ b            break;7 X6 b9 U$ F4 M3 B9 u
      }
5 f! ?" v0 I& s$ b7 N   }
1 X+ z9 i9 B' D( M$ ?
# [' p9 r& r4 Y. y   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );, W$ E- p& K6 B6 ?
$ Y& P6 a! B! t6 u+ J2 j2 W( J
   return;
& a- |! K4 t0 [: o}. `4 C( S. l3 F; b! S1 |6 K/ j! x

0 o3 q7 v$ P' }  r, y0 S7 a; k: o, dint ufusr_ask_unload(void): q. l8 I* B& I$ r. O+ q) k, q+ K
{
! y& I  E1 h+ _  [3 O7 t" j- s  N5 f  E return (UF_UNLOAD_IMMEDIATELY);; @& _/ p; |! b0 ]$ N
}6 F9 a8 X0 p1 z8 U) b

1 u" H) i: u# x' ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了