PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
4 E- v0 ~/ [: l4 I
. M2 ~0 ]$ n1 ?& l7 p3 K& D

4 u2 K5 n/ d' C. C( Y. u/***************** Include Files *******************************************/
& ~: Z4 P& A- ^) ?  `; i9 W0 I( I* c#include <stdio.h>, E( \, x/ c9 \; V/ |
#include <string.h>
. I3 p2 E8 ]) c8 a; v
6 b' J( o' |& _+ P, w6 @$ s% N- d#include <uf.h>* C+ j' S4 m: }
#include <uf_defs.h>! V: {( W! l/ P: O
#include <uf_cfi.h>* R- L/ U: X: [2 q* o" `
#include <uf_cam.h>
' x& g2 S% a# b2 v: e5 ?- ~7 u  X#include <uf_ncgroup.h>
( {( M0 m8 d6 e: F- A6 a6 I4 Z% g#include <uf_part.h>
! Q& j& z; w+ g2 e9 `#include <uf_setup.h>% R. Y. |+ R7 J2 T
#include <uf_fbm_geom.h>; N. j1 ]5 U. e
#include <uf_ui_param.h>( }$ u: D$ L4 z% d+ Y* ^9 o

! d+ h' f8 x2 r/****************************************************************************/
  ~9 [- Q6 q0 H! T
# \2 c0 @8 u. y7 g0 l) Textern DllExport void ufusr
* O  B1 J9 J; U% f& m6 f  E(# A2 O4 f. e$ q% z2 k" Y
   char   *param,/ k) S* @, d% {
   int    *reTCode,# u$ q( q  P0 _$ g& k% U$ q
   int     param_len
1 w; v3 k! S2 |+ c)
7 x, ~% X6 m4 s4 }{
$ }$ k8 t, P! m. M. b0 z   int error_code = 0;
8 W& k0 s0 p* I' Y) a& q   int i = 0, count = 0, part_units;
/ h+ |8 Y* K/ j# c   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];( G, @3 ]7 ~* ^3 c
   char *env_trans;
. y4 u. Z5 C+ I   char opt_name[ MAX_FSPEC_BUFSIZE ];
6 ~- p/ Y9 P- X. J# l3 e& k6 N: @   char part_name[ MAX_FSPEC_BUFSIZE ];
& Z% {& \7 x) E: m/ p5 {   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";9 x$ z, B( l6 q! Z$ s/ v5 r* R
   char  **feature_names;* g/ {6 c3 v! c6 J
   UF_NCFEAT_t *features;+ ~1 K, X& U; G1 h

2 Y. L( _  e: v- y# M! s   tag_t setupTag = 0, wp_tag = 0;
' _/ Q! ~5 v, K0 j8 d- S   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
3 T( N% p% B- ?$ T' n* q) o   logical answer;* y5 s1 b+ C; Z) E5 [) \/ }

9 a1 j  g* R" |& Y1 P4 v   char **criteria_list;
3 `! a" N$ i% K6 ~   char                         **criteria_to_consider;
0 i2 [/ I" m. v  S   int                           num_of_classified_sets;
' {4 _" o: H- J   UF_FBM_GEOM_classified_crit_t classified_sets;6 c  v' ^3 M0 }3 j% O6 a9 v6 x
   UF_FBM_GEOM_crit_value_type_t crit_type;
0 j- Y. a7 C; }# G   double                        value;
" f! }7 @8 T  b; J   UF_PART_load_status_t         load_status;9 M1 }9 b2 P4 E; {- s  H) Q
  r4 Y) N+ l# I, g
   *retcode = 0;
8 d& Q. ^: F, R2 ~- q# H( p# J2 R" D  N; o+ A% Y
   error_code = UF_initialize();: s1 i( R& c1 c
   if( error_code != 0 )
- {$ {1 h  Q+ n' ?& Y   {; {, N* ^7 ~. l; s) [" |1 X6 ?+ v
      printf( "Failed to initialize uf %d\n", error_code );
' S# J: a- c( r4 B0 c  _+ s' [$ Y8 v; I      return;
) {) H" @$ S, E6 e8 ]! N" t   }
  F$ `& b5 R1 T  q! u3 G
( D  I1 V: x. f* v  T, k: z; b8 T3 N   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
; o) A" p/ u  N                                                       &error_code );
5 w3 a8 k: V! m, P" ?; K1 H* A
% u0 d+ t% ]& ]   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
. F0 [+ o$ X! q% W$ v                                                 &error_code );3 X0 R; w, b$ `3 Z+ F5 a( F

5 l4 R# j: [' S: p& o( @$ G0 e) i* E% h3 R
   /*** This program works with the part files in the CAM samples directory1 |4 V% h% w- J, k6 {+ t
        so we need to get the path of the directory and the file name
. b: M$ W2 C: O   *****/# d5 I1 G6 B0 f' o& I$ R" |
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );# M* d' U* j+ u0 U! e, q" z1 i. r
   strcpy( part_name, env_trans );
, d) C4 M* x7 Y1 |. y; {   strcat( part_name, "cam_holemaking_base_" ); + ~- \! j9 N6 d* X- ?! |

7 r% d+ v9 A7 K, G+ a   /*** If no part is open then open the part cam_holemaking_base_in.prt( ~4 m! B  S% m. r4 Y  {
        from the CAM samples directory
, \/ ^' ?) l; t" V- ~! J, y7 N        If not check to see if the units of the open part so that we can open
) j% `5 R( y# M; Z        the same units part % \) q0 w+ f& o& ~8 Z5 Z( }1 [
   ****/  {- [+ B* @  _
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )0 g; [  V; l9 E7 I
   {
. J* P4 f, b, R) w1 b       strcat( part_name, "in.prt" );
3 A; r8 l6 G$ R   }' {, l% y" v# x
   else/ }5 g/ V0 N+ ^+ C
   {* X7 i8 V. [3 _5 t
      UF_PART_ask_part_name( part_tag, open_part_name );
* \( C: B) V1 ^9 X8 v2 z2 N      UF_PART_ask_units( part_tag, &part_units );& c0 G0 `, q. s; d/ }
      if( part_units == UF_PART_ENGLISH )# M/ P! n9 M5 v+ ^5 [9 [
         strcat( part_name, "in.prt" ); 4 n- N* }( d- }
      else
. X' d! @( A8 S$ ]7 o  h; F         strcat( part_name, "mm.prt" );
0 h( Y: C, |+ \   }
3 J, z8 k( T) ^, J5 z" D
) s. R, h5 K6 }4 I; N   /*** ! M! R& W- s3 G) j/ a
        If the file we are trying to open is the currently open file
2 |/ R1 W7 y% D        then continue on
9 P9 d" ]& y0 F   ***/
% A8 x0 X3 c/ S% ~   if( strcmp( open_part_name, part_name ) != 0 )
3 `- `* }9 R1 K! ^% b   {5 F4 ~, i2 }9 J' `9 E& b/ q
      UF_PART_open( part_name, &part_tag, &load_status );
% B1 \( @) T' t/ I   }
- u7 r% x# j* H0 I+ E3 _% P+ L$ U8 V3 e) ]5 v( O; m7 i5 G
   error_code = UF_CAM_init_session();
/ s7 z/ w% C+ V! t   if( error_code != 0 )
( \, T1 I& E; |% f4 G# x4 o   {7 p8 c6 V, ^8 b. K6 L4 M
      printf( "Failed to initialize the CAM session %d\n", error_code );, u* H  s+ Z8 U$ p( F5 m
      return;
1 x! F5 P- p! z6 w: {- `+ x   }
+ [, ?; ]9 m; Z! h. z( I
( S4 l) @" ^' p; c   UF_SETUP_ask_setup( &setupTag );
* K, x- ~0 t* a1 A+ Z. ?! S   if( setupTag == 0 )% u$ |  H, {) \) `
   {7 S/ x8 s' M0 K2 l3 V
      return;7 ^4 C: k) h- J+ Z2 N
   }# m; r0 t3 z( [

1 K& D# y( R3 ~5 w( w; N/ J) w1 K  i   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );" V1 D7 x0 ~( h9 n- `3 G
   strcpy( opt_name, env_trans );5 r" T- M  l5 f8 ^3 ^! _
   strcat( opt_name, "hole_making.opt" );7 C0 k3 [+ H' {+ t, ?; V* _

% Q4 }6 i) v, H: z   UF_CAM_reinit_opt( opt_name );! E0 ~& p# k  z+ i
) E. \6 L7 R: O; O1 J, s
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
" Y' V6 S& N9 m( I1 {: D1 Y2 u) w, h- V  T! w
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
; @) q6 z% s7 I   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
* Q- |/ z. l& t) Z1 f  M! x   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
" i' V, S& u4 _) r+ v   if( answer == TRUE )
+ \# t) A8 |: a! r% R+ ^7 n  s" C      UF_NCGROUP_accept_member( wp_tag, geomTag );% ]2 f+ B" Q9 T4 I/ V, _% l. i* R
   else8 @# k& ?: s  R+ |' ?. Y! ]" {% Q, g! J
      return;1 ~0 N" M  J9 W1 M
; M! B6 k% P$ w
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); * _! x7 D/ f% k3 n6 U/ v
& t9 X9 F- W  ]) R
   if( count > 0 )5 A1 d. r2 V* i( J; R' Y
      UF_free_string_array( count, feature_names );
* N8 P6 T1 O8 [3 a' {
& W0 u' `% A. ?: W/ m: N0 ~8 P2 W' W0 p   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
6 U5 }+ k" _& m0 a- G3 y
& U. ^6 e7 t4 J4 p  c, \   UF_FBM_GEOM_ask_features( geomTag, &count, &features );! G" V: r6 O0 ?0 d/ `
) |- B; {) m- N  L7 \6 h
   if( count > 0 )0 A9 r* m4 Z  m' S7 u6 k1 l! c0 B2 @. h
      UF_free( features );
- d  p+ s7 |6 b. J4 V$ W3 `% G. g   else
, A7 U+ b9 J3 p' m' \1 ?      return;  {! p; X: E! D7 p* \

$ L( f; G" z6 h3 ~7 O   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );4 B7 k: U7 w) j' w8 n! M1 F

! N- E7 g. X0 L" \" g6 W( P   if( count == 0 )) X- m% X0 g1 |  a
      return;
1 t% i# j" C! r! o/ H2 q; I  b; |4 B7 i2 j& N9 W
   strcpy( criteria_to_consider[0], criteria_list[0] );
5 {8 `+ t2 V( W, S! w7 }
! J5 u1 P% P" N   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
$ r3 e% k$ g8 y. z5 A0 O                                     &num_of_classified_sets,1 {( s* o5 Z* X# z0 I4 ^3 n9 G& s0 J
                                     &classified_sets );
/ l4 {  I+ [# o9 h2 Z9 K, ?3 C
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );2 T6 u2 S* d* r

' g2 V0 c! I8 `- V8 e   for( i = 1; i <= num_of_classified_sets; i++ ); |/ M: t% }% m/ J
   {
% Q+ H3 P# |5 V2 U! w$ n' @      switch( crit_type )! A8 |/ C. G; K
      {
  G% I& C5 M3 f5 P/ n/ p! _         case UF_FBM_GEOM_crit_value_type_double:
& \4 I+ W" R! C" H, v7 E  K  Y            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
7 ]4 m1 d, p6 b0 O                                             criteria_list[0], ' C, |2 N4 x  t* G3 }
                                             classified_sets, i, &value );" ?/ i9 U2 ^3 z* D* V+ s
            break;
7 k$ r/ m( e1 T6 m' s         default:  |4 x& W$ x. A
            break;
$ f# i: \, Z: v* T      }) K' m2 E" b+ ]3 O
   }- Y; u% f6 j0 c9 T/ ~' c6 H
5 |+ J) _/ c3 @4 b9 G) i$ ~
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );; L2 N9 @4 w. p6 {/ j7 H

2 D% X/ A9 R5 X- ^/ ]   return;
$ ?7 r& h5 l$ w7 h2 J3 V}
1 n3 O8 \! b/ @9 E. ?; K3 m9 ^6 N2 z, {6 T' F
int ufusr_ask_unload(void); @- r! q; c: R
{
: u1 {) Q. z$ }, M return (UF_UNLOAD_IMMEDIATELY);
# d9 M5 Y" ~5 V6 [* q5 E; {}
5 v1 H8 o  @) G' j9 y9 g2 r
* y  k6 ~3 U7 O
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ 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二次开发专题模块培训报名开始啦

    我知道了