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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
+ S, g4 R9 B3 L& e2 S

6 e- C1 M+ w5 @  u7 B( |
5 P; S9 C  y- ~4 e0 Y* O/***************** Include Files *******************************************/) I! z3 m- O- V( P/ P" D
#include <stdio.h>
) ~2 e4 N5 w3 M$ u$ K  H#include <string.h>3 d, s7 j: G- H
. |. Q6 _1 v' S. c
#include <uf.h>
, C% E) V6 s5 i#include <uf_defs.h>& [- _& N0 O3 d$ T
#include <uf_cfi.h>
2 s" ]/ v! n6 v/ t1 {#include <uf_cam.h>( [+ f1 k& a6 A
#include <uf_ncgroup.h>" N1 f" i& j! n* h0 c
#include <uf_part.h>
, {8 K+ G, M" Z9 H8 Y+ z9 r) ^' I#include <uf_setup.h>; y7 w6 \' B; J/ s
#include <uf_fbm_geom.h>0 _% p# }6 R& V/ G' a/ v, ^- K; e
#include <uf_ui_param.h>
' r  t( E, }. F; v6 M5 o0 F/ S# D- O3 v) f+ B. c  a
/****************************************************************************/. K! s; }( e1 a. v9 C- s- H

7 w# ^$ `" b* ?6 lextern DllExport void ufusr
2 |, P1 i8 M+ u9 |( c6 o; I(
5 g: @3 S% Z  U, B2 j, c6 p$ `   char   *param,! o! S+ y9 Q/ j5 \' u/ }# x) s; p. ~
   int    *reTCode,
2 p! h& {+ m) ?4 q5 E8 D   int     param_len
% B! M4 Y( H, |' }' v)
3 _6 W# Y7 g- W* N{
, V$ `/ ^0 V9 R4 r   int error_code = 0;
; O3 \  F- n( S% {0 W7 s   int i = 0, count = 0, part_units;
2 |: M. b- o7 ^4 m9 a   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
0 g0 J8 s8 G/ ]( C   char *env_trans; , n) t7 L! m1 l0 H
   char opt_name[ MAX_FSPEC_BUFSIZE ];
+ |) A2 @; [, f3 x  z  ?& s1 `   char part_name[ MAX_FSPEC_BUFSIZE ];
" E# N( J: W* P9 X! V, o   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";  {% `7 R; Y( h! I/ P; e# ~3 t
   char  **feature_names;
$ e, F2 V& j: V* K5 t   UF_NCFEAT_t *features;  Q) H% h+ {4 E

* r) j0 Y& ?# @( |7 z- _   tag_t setupTag = 0, wp_tag = 0;
+ i# ]0 ]0 r) y0 B/ u6 B8 n( z" ^/ Y4 \   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
# ]2 S, r8 u  @5 E! K6 @; V  ^3 U   logical answer;+ {) V' }$ t# U0 ]# u% n1 }- S

9 S# L# L. M& @" y4 a; H/ Q/ \4 U   char **criteria_list;
- O  }4 z, M) A0 U' E+ u1 T% V& p   char                         **criteria_to_consider;- m+ P5 U( M6 g; N
   int                           num_of_classified_sets;
2 w2 Y( R' L# L/ _) F   UF_FBM_GEOM_classified_crit_t classified_sets;
7 K8 w: y# F. w/ [2 u$ M   UF_FBM_GEOM_crit_value_type_t crit_type;1 ?$ n6 h/ ~4 Q3 U& Y# I  Q1 ^2 T
   double                        value;
  Q. j$ m8 F3 ^3 C5 v5 f4 E( i   UF_PART_load_status_t         load_status;& |* q$ \' N7 Q8 N% ~6 `9 O

, V  z$ r2 f. g9 ^% o, d( {4 _   *retcode = 0;4 A0 Q. Y! [( O; F4 T0 x
+ D3 w7 w8 l1 {( k
   error_code = UF_initialize();4 e" }2 I2 \% ~% o2 C0 Q5 Y
   if( error_code != 0 )( q6 A' B6 g' b6 Y$ t) P4 W7 _
   {/ i; l- e6 z  {1 i: D# P! N$ w3 x9 J
      printf( "Failed to initialize uf %d\n", error_code );
% ~9 `4 O0 w4 P0 |$ ^      return;9 i0 i, O9 U% u5 u; r5 j9 z0 `
   }4 q( x8 u3 @/ b; D  ^1 p
* D9 W% H! C: ^
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), ) h% C$ m8 C' I: R. s2 N
                                                       &error_code );% [9 W) M! d$ P1 M

. p/ l; J: L/ |/ F0 \+ D6 d   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
8 W' M9 u: b, G# Z  J) b! c                                                 &error_code );
( O0 B4 U& r! C4 w) @# M* ^
8 w( X5 m) F3 s- l9 n- ]
( D% X1 m/ H' S: t' d   /*** This program works with the part files in the CAM samples directory
4 w( B. c* _/ R, b7 E        so we need to get the path of the directory and the file name3 p: @2 y* [9 ~0 {9 ?
   *****/
! X3 U/ n8 A1 Z3 H- A2 e9 ?   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );5 R* Z3 j2 k7 w& A! e( _( ]
   strcpy( part_name, env_trans );
6 l% h, o6 I. V/ b+ w   strcat( part_name, "cam_holemaking_base_" ); 7 d: G' O5 I4 }% Y% f0 N

/ Y1 i  |6 B4 Z& u& i! g   /*** If no part is open then open the part cam_holemaking_base_in.prt
, f' f$ n; T( P" @7 r        from the CAM samples directory ' t/ _; ]- |" ?/ r% ?
        If not check to see if the units of the open part so that we can open8 a7 Q! W( L2 E/ `
        the same units part
$ `/ z* I' q1 K% m   ****/: ?( B; e. W$ ?! {$ L* C7 {# E( ]
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )8 q1 j7 w' }" b2 L. [( s* x6 Z
   {
5 D! U2 a& C/ ^; ~+ ]9 Z& f4 w! T       strcat( part_name, "in.prt" );
8 @$ \, o  a. ^4 W! o+ Y5 a) T   }# Z& Z; z2 J% K% B3 ~; ^2 \
   else
6 `! F/ c- W" P6 j2 T  t( t   {
! Z9 Q) d4 B7 e* U" e- q      UF_PART_ask_part_name( part_tag, open_part_name );# p& r1 l+ H  g* e* Y* F
      UF_PART_ask_units( part_tag, &part_units );. u' g* l$ D5 W7 N
      if( part_units == UF_PART_ENGLISH )
) X; O) r. D) {1 \         strcat( part_name, "in.prt" ); 7 C4 F$ E- C- e: a* a6 u
      else4 ]: {$ l8 c, g5 d
         strcat( part_name, "mm.prt" );4 P0 Q7 S. U- q6 r- r3 c, p
   }' D/ T3 R: @! ?0 t5 ?
( E% ]2 U' _& z3 ?1 Q
   /***
+ ~2 o+ R( n% f5 \/ w- N1 T        If the file we are trying to open is the currently open file
1 ^* d- f) I) j4 U# B+ {) R        then continue on& `6 b' }, r) e9 c2 N
   ***/
  T& M9 a; u2 A4 M& g   if( strcmp( open_part_name, part_name ) != 0 )
/ S" A0 P) w) e   {
* f0 a! l7 C  c5 W9 f; X" r5 T' |+ M% T      UF_PART_open( part_name, &part_tag, &load_status );$ M1 E9 P3 B9 y
   }. z7 V" k5 @% Y1 ]. |

& B& s; R  x- u0 C   error_code = UF_CAM_init_session();( [2 U! }3 z( x; K5 t; D9 c, d; h
   if( error_code != 0 )
  r/ A8 k5 T4 r6 ?   {
) y( e( a) z0 W- w$ b( w$ T      printf( "Failed to initialize the CAM session %d\n", error_code );
) o5 _( s4 A+ V5 A      return;
& z" E7 P" F4 C: O  q0 ?   }
0 b, K  g/ j+ D' B- ^, ~) _" m# c; L  \# L  L+ O! D2 x" B
   UF_SETUP_ask_setup( &setupTag );
# W" u" g/ O( V$ A% m7 p   if( setupTag == 0 )
: D% h) Z2 {7 b4 k: O6 [   {
* b1 t  e; C3 ?' u, ?3 h$ W      return;, S' M7 B7 H0 D
   }
( N/ \, m% k: v) m6 Y" l) H6 b7 y" v2 x; w
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );; u) H4 L+ x- g# g
   strcpy( opt_name, env_trans );
: P% Z3 X% n# A, [% A  M0 C   strcat( opt_name, "hole_making.opt" );
% b* i& ?  c* i+ ?: N" [, T; R" M" z" s8 F( x6 {9 a, G1 j
   UF_CAM_reinit_opt( opt_name );
- ^/ O8 @7 L( _6 U7 t. H5 P4 S; c/ E+ D% B1 }
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
& k  f+ z/ c) W4 J" a+ N# t; K' [8 e& f: Z; s3 K& c. _
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );. t, a5 G0 m0 q; g2 q, U# S
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
+ M7 ~* i) @6 }5 T2 B4 T3 d2 C   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
  y; [, b6 H0 J, }, z5 _2 B   if( answer == TRUE )+ ?. Z' W7 u7 x" j0 t" H
      UF_NCGROUP_accept_member( wp_tag, geomTag );
* K5 m: l/ w( k* g   else
: e" i" l( @9 f      return;9 a, ~0 r5 A8 ?/ T1 s) O# Y) G
% Z4 M1 W+ X# s% l
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
( L+ u0 }- s- Z2 t5 f, J: W
% d% w2 b" U4 Z, v$ g   if( count > 0 )
  l4 q9 ^3 x& \4 m6 P' Y      UF_free_string_array( count, feature_names );
& Z7 A& F3 V6 o  d% p6 T/ {0 w' d+ M$ p& ~9 B0 E0 C2 h
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );2 t$ W* U1 `7 K: Y4 g4 V
7 S2 o: _8 P  w! ?4 d; w
   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
! L( `( A& Q2 Z; e- L- n' o# q3 g/ j- |& k0 Z
   if( count > 0 )
1 G4 f6 |2 E8 R4 T2 k; u( q      UF_free( features );8 z$ T2 I9 U3 o6 c" z) R
   else
! m$ ]3 q; d6 k9 b2 f      return;
$ k, J5 C- {0 s$ \/ ~6 R9 H3 X4 m' [  g" {1 x1 j% Z
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );  a. ]. n/ j& m, S' e

" e: P# r2 j* }   if( count == 0 )# f, c0 Z* S/ e. A3 a: q
      return;0 r3 f3 [) {. U. |9 p! O5 q

& w% v9 x( u9 \# [# ?; \+ o   strcpy( criteria_to_consider[0], criteria_list[0] );  l" T+ M9 }9 y  Q0 V
9 J& s0 o8 d7 |
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,  S3 ]7 o5 O, U) `& w! i
                                     &num_of_classified_sets,
1 K& z$ N& D* d" O4 N, z                                     &classified_sets );
& B& P* L' q7 J  T4 h  b: w8 r
) y, Z  y# w; H$ a$ Z   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );4 Y/ O- Z+ B9 U! H6 u- p
5 Z# {% d. a" ?3 O$ k# \, c
   for( i = 1; i <= num_of_classified_sets; i++ )% {1 }, v) T* K2 ]
   {
) o% m1 G* y% V1 a1 x3 ~      switch( crit_type )5 s2 x' C0 d/ H  H- L
      {
8 {: o0 Q( J6 L5 ?         case UF_FBM_GEOM_crit_value_type_double:! w4 @% w2 d% ^9 n* F
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
6 I# }0 o# S6 x8 }. D- r                                             criteria_list[0],   G9 x$ v+ R: u1 D: E' c
                                             classified_sets, i, &value );8 @: r7 E/ g& A
            break;6 D1 n$ T: _) r/ `+ Z, M$ d) p5 `1 b$ P
         default:  K( |* @7 d  b: ?+ h; |
            break;
9 t  v3 y: M3 t+ i7 F      }$ [- s  |3 m3 C8 K( ~. s" X' Y
   }( g( ]- W& i% ]' ]
/ L  a- E( e# A
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
" k3 N4 n8 O, b+ H
: [( _& b( g# |2 m: e+ _( C   return;2 L- }% U0 I2 \4 ]* Q
}, @% M% v# Q! ]. `% Z3 \& X; Q
- p# Q( N6 \; S% T- J* X# p9 H
int ufusr_ask_unload(void)
1 r5 e" D% W# G: q. ^$ j/ H+ }+ j{# _6 a% T1 J6 G: F% a8 Z/ v8 f
return (UF_UNLOAD_IMMEDIATELY);5 ?. ^: k2 a& |- H" e
}
& v6 |$ g1 ]9 R% d8 H, d
5 h/ e# U* g+ n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了