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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
1 i) V  L) }( q: @. Y/ i+ A
$ i! i' [" J' k8 ?$ E

7 S$ E" g. g8 O+ n9 g8 x/***************** Include Files *******************************************/" s) f6 g( h1 E. }* u% B$ D# |
#include <stdio.h>
; @7 j6 Y+ F& O$ _! V#include <string.h>3 h0 E9 A- t4 M+ B5 g' |% w

" Z; X$ e! K  \  u/ o2 u' z+ S1 W#include <uf.h>
, N& ^! l) s1 W. {, M9 q#include <uf_defs.h>
- Y4 p( h9 V. _& R#include <uf_cfi.h>) C& c1 v* n. l0 k) N
#include <uf_cam.h>
) x1 P. n# o& _" X6 _#include <uf_ncgroup.h>8 [( X7 x, m* O5 ]" i
#include <uf_part.h>0 M+ a+ f9 k3 k# j7 ?
#include <uf_setup.h>% ?/ T( c9 A% b+ _2 k6 k
#include <uf_fbm_geom.h>
  U; V$ A3 Q- l" V# `#include <uf_ui_param.h>- \% }1 ^; Y) I) m5 u
( `- S9 d7 x/ |
/****************************************************************************/
" S3 O# K/ S  D0 F4 M% E- r& R9 ]3 c9 b) V
extern DllExport void ufusr 0 E0 j( E4 }8 t1 e) H* O0 W4 r
(
0 D& w- u& D( L8 J   char   *param,
, f7 B) p+ r  i( N( T- k   int    *reTCode,' z; t' j) t8 y4 U1 Y, R" Y
   int     param_len7 I/ U: |) f& X' o# U- b
): R7 d7 n  u' _" m
{
: B: P5 i. C  s% }: X  j" c   int error_code = 0;" G. G% Q, R% y  f9 J% W
   int i = 0, count = 0, part_units;
. x5 {  j) y. T+ \9 ^   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
! R7 d6 M6 F# N- x) a   char *env_trans; " T; t* o9 \8 h
   char opt_name[ MAX_FSPEC_BUFSIZE ];6 e) f. L( F. K( q
   char part_name[ MAX_FSPEC_BUFSIZE ];) W$ `; x% H( Y8 R
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
$ y1 W# Z1 w# p) L   char  **feature_names;- T2 r4 W6 G' s. H. ~. w) o
   UF_NCFEAT_t *features;$ V1 @7 b; T7 ?/ l2 H
4 }0 K, V3 ]2 s5 p0 V' Y# E( D
   tag_t setupTag = 0, wp_tag = 0;
9 l7 s' g0 c9 A   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0; 8 r# b4 Y9 S: f- n7 ^% M  B
   logical answer;, q2 J" w* I1 B" [
. A3 ]0 ~  U4 @& P# Z  ^! \6 Y% }
   char **criteria_list;) C( M' f. p. Y
   char                         **criteria_to_consider;' d! F- q) H5 {& ^  K4 C' c, N
   int                           num_of_classified_sets;7 O4 M5 U' z: J/ P( ?  i0 J
   UF_FBM_GEOM_classified_crit_t classified_sets;
- q8 q3 o5 M/ F   UF_FBM_GEOM_crit_value_type_t crit_type;
* X8 x. v# m; }" }  Q! k   double                        value;
* x) `( }% o  f% i6 d   UF_PART_load_status_t         load_status;
) c$ s" y% Q* f" I
/ ]2 b1 {' L# g- l$ d   *retcode = 0;
7 Q5 B1 g' y2 Z: }/ C
/ Y* b/ A% u5 R7 r3 @1 [   error_code = UF_initialize();
+ g) i8 {, y# O   if( error_code != 0 )( g$ S% {3 u, y' |
   {& r( O) q) j' g, R' A6 g. u
      printf( "Failed to initialize uf %d\n", error_code );1 Z0 i/ U( N+ T
      return;" ?2 d. D0 ]+ `0 B: A  I& z
   }$ j: q3 q- n! U- a8 \' S$ k5 d
4 R7 k8 |9 a% Z, ]7 q
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
9 L3 j8 z+ u3 z+ e7 f$ Q                                                       &error_code );
! W& b/ \: Q3 `) l- {: t& ]( W7 d4 T8 J6 _' h
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, . _, s5 P; d8 N! g$ b/ i
                                                 &error_code );! O. k2 W; m* A+ O4 k

  d( V+ c) u9 E9 C  u+ d2 I
/ K0 W0 {/ k0 d1 y; b3 w( E   /*** This program works with the part files in the CAM samples directory1 z  h; G9 w, D" t, P
        so we need to get the path of the directory and the file name$ A! k8 k$ M2 D% m; U
   *****/
" O, s' w/ M7 \# C% c0 U   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );  R) O$ E8 ~- p' R5 u
   strcpy( part_name, env_trans );
$ C2 i* d3 z% r9 b   strcat( part_name, "cam_holemaking_base_" );
# ?5 ^( x! ~+ a6 l
7 A1 n/ ]7 \* X. @7 T: o9 D: A+ O   /*** If no part is open then open the part cam_holemaking_base_in.prt
6 c4 l- F: k" Y        from the CAM samples directory 7 H0 w' p' v' G4 }: C4 t
        If not check to see if the units of the open part so that we can open5 s9 y$ j# [6 g
        the same units part
' g/ W3 U. [" j: }, P   ****/, O% P: y2 `8 R- U9 K$ ?, e
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )5 e( _" X! X1 B7 f
   {
8 F( @, s' x7 L+ X8 ?+ U0 p9 x       strcat( part_name, "in.prt" ); 5 _  e  ~/ T% k+ f4 r
   }4 w5 ^: G. P5 U& ~
   else# @8 x3 \  P* t- d4 E
   {
) ~: a  J1 \/ `8 L      UF_PART_ask_part_name( part_tag, open_part_name );( d( j! Y7 W3 s( ^. z( W  Q% k
      UF_PART_ask_units( part_tag, &part_units );9 W. o" E% V6 C/ G7 T* X
      if( part_units == UF_PART_ENGLISH )
3 l$ o# ~, f3 Y, s) Z( J7 Z; c# i         strcat( part_name, "in.prt" );
4 l1 n" L) }- t+ n      else2 f9 D! H) ?. e8 J
         strcat( part_name, "mm.prt" );
( n: F3 G! E* Q: p/ @: x% U' C2 H   }+ u, ^- h+ W' k, U1 ]; V) ~4 |8 [

3 b1 b+ R4 @2 G   /***
4 }" }1 S5 E4 V/ u! c# n        If the file we are trying to open is the currently open file
+ C' V4 I6 E, Y: x$ A8 s4 }        then continue on! G; |2 u1 v* N  m# r
   ***/- ~  ]% t' u& x  D
   if( strcmp( open_part_name, part_name ) != 0 )
5 V: R) S  V2 q  H% @; o( X   {( g4 Y3 x4 w/ A
      UF_PART_open( part_name, &part_tag, &load_status );
% f7 v3 X) e* X! R4 l   }; s: J6 i1 G$ o6 r; f; E6 C! \' z
, J; Q- L( c9 h8 t5 `. u) z
   error_code = UF_CAM_init_session();
- u) R* I4 b* G5 [7 S   if( error_code != 0 )& I  U' w8 e- c# V5 x; J# ?! x0 {
   {
9 n, L% p6 k9 U$ O1 h2 p8 e# m      printf( "Failed to initialize the CAM session %d\n", error_code );
( v! |1 v7 Q) Y4 k% h* ], W5 M& X  \& J      return;
+ X$ q+ p; q$ @/ |5 d+ W) z/ S   }( f$ k9 k6 a3 K' l1 T
) v- _+ F- e0 c& h+ O
   UF_SETUP_ask_setup( &setupTag );9 h2 k$ i/ D8 ^/ s9 p+ \
   if( setupTag == 0 )( Y' U/ D& k! C+ h( f
   {
& H9 @9 l/ S6 N& f; p+ ^      return;
' U4 ^( D2 F# I0 \+ \   }
+ E4 Y1 J' S6 @# `
3 z* B1 f* s; F3 w# ]( a+ p   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );8 G4 Y7 P8 Q; E
   strcpy( opt_name, env_trans );9 a/ ?( N( A# n2 o
   strcat( opt_name, "hole_making.opt" );
" A0 u0 j% r7 q- U' L8 I$ `# L+ ~* `3 G
   UF_CAM_reinit_opt( opt_name );
' [, q* n$ @. p. p# X0 i4 C& d, P1 p! j
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );; Q% I. W' V1 J$ d! Z
9 ^7 X" S* p3 C* e6 R' n
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
. d8 q4 \! ]: ]4 g   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
9 v, l9 {! u/ \- R   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
; Q+ F. ^1 g6 ~5 J6 D! y   if( answer == TRUE )
' M1 Q, w- F2 t' B/ ^; Y3 ^      UF_NCGROUP_accept_member( wp_tag, geomTag );/ y8 L: O4 D5 O5 m6 i9 I! s
   else
5 A2 a+ }% v3 X5 u, q2 u      return;
1 @% v' b2 ]" e
- a, z3 q* M8 e* n6 g   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); ) y! D9 _* P0 `1 K

- `$ K, y% J9 C   if( count > 0 )
$ k! H4 e; H" i/ Q$ l4 @2 g: _      UF_free_string_array( count, feature_names );) {  V. L3 _' [5 Y4 `" w

% C! i! ?! d5 n! |- l9 h  ^   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
+ r6 i! J! @& |) w4 B3 c) S3 `8 M- p$ b* j. c5 e* m/ ?
   UF_FBM_GEOM_ask_features( geomTag, &count, &features );& c4 I' O6 @4 a3 f( B: H! E

0 N9 o- x# g7 {& b& a8 ]% H   if( count > 0 ). Z- s3 \, D  k7 x5 e" u
      UF_free( features );2 r7 _) a0 O- u- _9 {& a: n+ e
   else
. q* a; y# N- C6 O0 X& _0 ^( ?      return;! `& H+ A% O; g% B
  M2 ~4 |2 E$ ^' P5 M
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
3 D7 Z+ g6 A, i( u, d7 _3 q) d" f7 I7 [1 u; a1 K7 _( c
   if( count == 0 )
. `" ?$ J0 O' N& i4 ~7 R; U      return;' Y; K0 e/ R" A7 n3 |. z

9 l% b3 ^* x1 r- z   strcpy( criteria_to_consider[0], criteria_list[0] );' N+ s7 ^# i/ b8 K  K& H9 f

9 V" B' d6 v! P$ P+ d) k/ q; V   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,* B! o# }) c. e3 s
                                     &num_of_classified_sets,
8 f+ y; h1 V2 P) e6 K/ N$ C                                     &classified_sets );
7 Q7 z* X# W4 S8 A9 M8 c6 y
! f& T/ F/ J7 u- p8 C  m# e1 E   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );% l' H+ r/ N  k3 t' k- d
! F0 z8 C7 N; o2 r
   for( i = 1; i <= num_of_classified_sets; i++ )9 m5 K( ?, _1 h: w0 M8 F+ U+ M1 ~
   {
2 {% F% }* p) c# Q      switch( crit_type )5 K0 ~2 C9 P, c6 v4 _9 v) I$ X  A
      {  }3 d" m" w- N$ O
         case UF_FBM_GEOM_crit_value_type_double:/ @' O. _7 n0 O- X9 P* G0 |
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
% K& R% `* w* g0 [8 o, A) _                                             criteria_list[0],
3 x: i+ Y  B, J+ i4 Z4 }% v, w                                             classified_sets, i, &value );4 \% B- P$ g8 @' l. E  A' g. m  {
            break;
" }# j9 A/ X. B% ~' }         default:
( z1 }4 u7 G- H" j            break;8 t5 T2 F$ _2 P- Y9 ?) p( \% q
      }' W5 E  ]' ^5 G9 f# B/ `; Z
   }
& x' h/ o5 _9 e) ~* Z2 q1 K4 N* h
$ a7 A2 S/ Z0 d$ e, e   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );/ J% m% P2 A: Z6 w7 j
% |4 i! z+ D# ^4 _
   return;
! u. J, y% f/ _6 Z}
3 `2 P. f$ ?9 h
) H9 e+ E& {0 g8 Wint ufusr_ask_unload(void)+ w: ]9 W6 a% t, M
{9 i, Y% |" J& ?9 {
return (UF_UNLOAD_IMMEDIATELY);% F0 ~8 ?' T# K3 K3 t4 I' {
}
/ W& @" k) k5 F# r
, @& O5 _* {% |9 x" H3 m- [- W0 G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了