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 4949 1

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

admin 楼主

2015-3-17 20:41:02

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

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

x
+ t6 W- `7 C* d  W9 `* [6 Y
5 H0 a& W. Q# r# T2 |! ]
+ R+ V2 G" I2 F8 j. y
/***************** Include Files *******************************************/
" H, M" L- |3 I3 F( O( _4 X#include <stdio.h>
' v( d! C! g& s#include <string.h>8 d' x! f% D2 \# a9 Y6 e/ G
2 }0 |5 o# Q$ g6 q
#include <uf.h>7 [. h" ]3 J' h; K& U
#include <uf_defs.h>
/ e$ h& c6 U2 q$ o0 }#include <uf_cfi.h>! N8 |" t# Z9 G) b8 F5 x
#include <uf_cam.h>
$ b! @/ Z( L- |* M+ _#include <uf_ncgroup.h>+ D, f+ Y4 }- x
#include <uf_part.h>
3 g# O* w5 Z* [+ T* ^5 r#include <uf_setup.h>8 D/ c  m! }& |$ n
#include <uf_fbm_geom.h>
3 R, \9 @0 ]% \5 S, x3 `  \#include <uf_ui_param.h>, |, l0 r+ T( T+ x2 H" ^/ a6 h
/ X6 `, ~$ a7 d, G' m5 q
/****************************************************************************/
- B* y0 n2 A" D" O7 \# n0 O- j1 X( j, r& E+ s7 \; P
extern DllExport void ufusr % W2 E5 M( R: z
(
8 T/ z( i- q. `( }1 K( j; Q6 i   char   *param,
) r, C6 F/ d4 E; r  a7 }   int    *reTCode,! g' [+ r$ [( @! h- B
   int     param_len
" f6 _3 J/ E& u7 H7 N% L0 i- H)! c# i3 P. u1 e
{- V! W: N* b8 X' e$ T# r
   int error_code = 0;! C8 [1 B4 V% h
   int i = 0, count = 0, part_units;  e. m# f6 Y6 [, w; j, h
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
) h3 |& l- t( U& K( U3 l) S   char *env_trans;
6 q( K! \# _) A8 o8 W  o! ?+ U   char opt_name[ MAX_FSPEC_BUFSIZE ];
. v. M$ R5 I! i( E& R   char part_name[ MAX_FSPEC_BUFSIZE ];( q5 n$ \; p) P7 P# L, c, @
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";+ }2 W6 o- G! n
   char  **feature_names;$ N" F4 j. b4 V0 G* B5 }9 a
   UF_NCFEAT_t *features;% S/ P5 K8 v3 G- P3 G5 H; z

2 a; T; Z* j8 M- S+ g2 s9 X7 k4 g5 a   tag_t setupTag = 0, wp_tag = 0;
0 |  s8 t5 @5 n; T5 f   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
0 Z3 G5 F7 _4 }" n   logical answer;
) T4 ?; C5 Z4 C' V% k) ~+ f) k' R" [# g( j6 ]6 u
   char **criteria_list;
. F' E, D& Q  s- @   char                         **criteria_to_consider;
7 q7 C/ K, W2 G3 @   int                           num_of_classified_sets;' d9 I  T3 D9 f" [8 s  E1 K2 r
   UF_FBM_GEOM_classified_crit_t classified_sets;
% o  O& m' r  g) ^+ A   UF_FBM_GEOM_crit_value_type_t crit_type;
4 ?( R7 e7 K7 l( u  y   double                        value;+ F; h# m# k/ z* a" t) c. f
   UF_PART_load_status_t         load_status;5 E: [: V  b) z% E) @

* e0 M6 Z7 y3 @: O   *retcode = 0;
- ?5 M# ~8 h/ y# W- f3 k+ W5 D
( x( R0 w5 i/ e3 ?7 F   error_code = UF_initialize();
' G, F* r- ~) o1 E, R   if( error_code != 0 )
% `/ k& [8 E& y. Q8 _* C   {
: n: k7 t# F' K% a7 f+ m) y7 H      printf( "Failed to initialize uf %d\n", error_code );
4 z) w; M% E' R3 ~      return;8 E" `/ U/ U0 p
   }8 h5 O4 r# D: u0 v6 x1 z# A
" Q- q( h  K( a, ]
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), 0 q, Y+ ]: A( ~' O+ Z  ^; e
                                                       &error_code );
" h& Q# G' `" c  F; B7 t" z$ y2 Y. ?" e5 p! N* k" B
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, # U' G4 M5 S. e# t$ [
                                                 &error_code );' |: b9 [3 _! u) h

! `* N, u2 \; B
/ t% M! _  k# y( Y, m" `. \   /*** This program works with the part files in the CAM samples directory6 D8 p" J2 W0 I+ p, i
        so we need to get the path of the directory and the file name
  L/ d  A2 N  L6 P   *****/
1 X. `* A$ @  Y$ X# r, u   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );, k1 _3 p+ F/ g! m
   strcpy( part_name, env_trans );
2 z, ]  P4 i. u8 N6 L) H   strcat( part_name, "cam_holemaking_base_" );
. ]; t% `0 b" C5 X) ?# o& f* u7 t  p; ?1 x6 @+ S! c. b+ ~$ |! {. E
   /*** If no part is open then open the part cam_holemaking_base_in.prt8 g: e. g& d' K$ e% g% f6 q$ W
        from the CAM samples directory
4 r& A: d1 Z) s+ Q, L0 M. b        If not check to see if the units of the open part so that we can open" g- X6 E4 k( F8 t% s1 L
        the same units part
9 k% o6 I' N  e2 D+ g7 V   ****/. l3 P+ e1 `* U/ S! D# q0 a. C; g
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
' l/ ?: G  O3 |# \: \- L% t   {
, M0 D& U% a- j3 ]$ z% @% V       strcat( part_name, "in.prt" );
9 t0 e7 s# T4 f+ }, a   }8 j' Q! I! P/ x; J) l& M
   else
/ [% `+ W" d4 L) z/ \% \" W( i   {) K/ ~5 b5 x4 R3 P& h
      UF_PART_ask_part_name( part_tag, open_part_name );$ \2 e1 ?2 d" s8 a: j) w( I. W% k
      UF_PART_ask_units( part_tag, &part_units );/ [+ L6 l0 t/ O* z. E3 l
      if( part_units == UF_PART_ENGLISH )
# p/ N3 ]" Q" E         strcat( part_name, "in.prt" ); / c/ g" o5 f$ U2 @
      else& Y  _6 _  a) V* B* @1 k* M
         strcat( part_name, "mm.prt" );
6 m+ h* f2 w, i6 N/ \- d   }
; z/ M8 Q# S3 x4 m/ {6 P$ {: J5 X7 L9 V2 V0 V% l
   /*** 4 {2 r; I* [& ?/ m8 t
        If the file we are trying to open is the currently open file. H' {% n' B1 V2 m/ H  X) M! y
        then continue on  E, z4 t% D4 F/ `* k
   ***/0 }- B3 l$ x- B2 O
   if( strcmp( open_part_name, part_name ) != 0 )
4 _/ A0 R! @% h* B; z7 F$ z* q$ o   {
$ ~6 b$ n% q2 B1 ]9 P      UF_PART_open( part_name, &part_tag, &load_status );
: s/ D% a$ `' U: n9 h   }; N/ `0 \6 _4 i
/ i* q/ H/ L; |* j/ P
   error_code = UF_CAM_init_session();
/ R( d' j  ^3 l( o  u/ L4 ?   if( error_code != 0 )4 }( X" r' |' A) C
   {8 J" [+ ^2 Q+ ]& v
      printf( "Failed to initialize the CAM session %d\n", error_code );
5 V) S$ B& v/ [0 ^# c% }6 w0 ~      return;0 m( \5 V1 i3 B9 B
   }
; n3 m6 b* b$ ]: z0 p$ e2 I. N; m* G; o- L" A* H2 s
   UF_SETUP_ask_setup( &setupTag );; {$ e1 t3 z) n0 `  T# Z3 ?+ ^5 e% C
   if( setupTag == 0 )
, A. a$ z6 {; c/ ]0 B- ?   {  T( E, P9 w3 C5 j! K; {
      return;: w, d- T$ d5 s: B  X" w
   }
% J# R4 X  y, \: [' G
  |7 Q& h) E1 E$ b4 V0 ]- i) P   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
, `' g/ g  }; H* P   strcpy( opt_name, env_trans );; s$ J* l& G, ?% r
   strcat( opt_name, "hole_making.opt" );
3 `" `( e' B& b, D9 J, [6 V$ V2 ~" W3 b4 [
   UF_CAM_reinit_opt( opt_name );
. z9 H5 v- c( n9 t) P( Q  a4 Q8 k# C* L9 {. U5 W( x
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );$ r: o9 }: @1 [4 \4 ^  l2 N% g
. s' K2 d' z. f$ o- c" R6 H, ]
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
3 {! b' ^% \  m) i& d3 }2 _   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
# A1 M9 D# `* l3 k   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
! e% }& L' Y: K( _  Y/ l  l% x# \   if( answer == TRUE )' d7 A2 H7 t; m  Z+ R
      UF_NCGROUP_accept_member( wp_tag, geomTag );
# w7 Z  J. n2 E4 ?, ^   else
( H9 L: \6 x! V7 ]) d) C9 Y      return;
; I, u( R3 y3 t- h
; _/ P  O0 V' H/ h6 v! W# C   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
) u' |. S7 Q" B# V$ h1 i' W
, j- w; d1 [. Q: o; E$ R' a' i   if( count > 0 )+ ]6 X: t7 {$ w
      UF_free_string_array( count, feature_names );
: Z; o  ?, U0 U: \7 S
' x% B- k# R4 x7 ?. t/ \   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
6 m6 q7 r0 f+ V8 @( u; S6 F( f' `; i# N8 L! W
   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
1 Z+ d9 w, Q2 R7 ^' @# o  f, d6 }6 O$ W& D4 @) A6 S' L- w, z" B
   if( count > 0 )" L4 a$ W, L1 M7 A* c
      UF_free( features );5 Q* I" }& R: Y0 b% |2 Z
   else
, ^6 r2 \0 w8 D$ `      return;( i9 b+ b  s5 E7 U

0 _3 Y- a+ i1 f: v. R- x* L   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );/ \! `/ C8 ^9 M8 X, D7 m: b& ]
$ \0 k5 t4 A. v- q' W8 v5 }1 F
   if( count == 0 )0 x( S5 U, e7 U, o% S3 K& G
      return;, U5 [# A4 v: y* l) h, v; f+ L
& M- e* ?' N" x$ e5 C
   strcpy( criteria_to_consider[0], criteria_list[0] );- |! j3 M. N6 \9 O
" V2 p! e: j  K6 A( `
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,2 M) [# m/ D. B$ a' ]: p* I& U
                                     &num_of_classified_sets,8 t# w* ]+ q( A8 W
                                     &classified_sets );, d0 H! h; b( {$ k2 y
$ o5 V8 \* H" O- l# C  W: b5 f
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );1 y& h9 ^: m) E) Y

4 l& g" R- [7 T% _5 z( C   for( i = 1; i <= num_of_classified_sets; i++ )" R& S/ n( y# t1 w1 I. Y
   {2 j* s( r) ^7 j" P' B2 S
      switch( crit_type )8 F! |9 m( {  ^: [9 s  |- L" t5 c
      {
& E7 u7 a" y; L9 a3 [# D6 w. d         case UF_FBM_GEOM_crit_value_type_double:: X6 G. i# }! r% j( V. h/ R3 |
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
9 d7 m, s: _# R3 w2 H* j+ g                                             criteria_list[0],
; a3 E; e5 H$ s7 ]7 e                                             classified_sets, i, &value );" Z$ M: _/ y/ a4 [% Q* D
            break;( E$ E+ D! x  W/ |
         default:
, F1 `5 j! [( C4 ^7 e5 K% K0 h            break;- T* e8 z+ \, r( V2 a4 c) _2 d3 P7 |/ M
      }' L1 L& `' S9 W+ V# ^1 g9 m% m/ j
   }
+ U0 P- D7 M3 P& n6 o1 p  H0 n+ e: {+ }, d/ J( g
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
- u6 V+ x) Q2 l3 v6 o- L+ H0 h" Q, g$ |+ Y$ N4 i( e6 H
   return;
+ f& g. c; K+ F: ~4 A* G4 J# P}: A5 Y9 u: C1 g. h, b: w# _
3 O4 ?; \. @5 y3 \7 S" X# u$ L1 Q
int ufusr_ask_unload(void)
6 _0 c( o  [* @8 }) j{& B6 ]9 {) m5 `) j4 i) T
return (UF_UNLOAD_IMMEDIATELY);. q" a! t5 r5 l; U3 y0 ]& a
}) A7 j& G" ]+ ], v6 c

! o. Z, }& ~- S% k6 x9 T% B# i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了