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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

1 y; U" w3 r6 Q; s/ L2 |, _' Q) j1 U+ C# N' s- ^  t' E
' \! [2 g, }3 I: x; T1 N
/***************** Include Files *******************************************/
$ Y6 _9 X0 u% C3 p#include <stdio.h>" l+ n' K! n2 l. c1 g; v0 r  S
#include <string.h>
: j1 s$ v3 B4 R! O+ ^
( a* C: S% w$ l( B& x, _#include <uf.h>
  A* z8 p3 F  E& X8 @#include <uf_defs.h>* U/ |8 ^8 [' x! Q0 o, E; H
#include <uf_cfi.h>
% Q4 u7 }5 T3 g- z0 R+ D& J5 f#include <uf_cam.h>' b5 d# k- L* M+ x5 q
#include <uf_ncgroup.h>/ P, t9 m4 X; r
#include <uf_part.h>7 j8 G; r, ?, i; v0 I; u9 r, G2 |
#include <uf_setup.h>
. V& |. l- s9 u  M/ O6 O#include <uf_fbm_geom.h>! E9 i# u" W. T) c( J9 Q
#include <uf_ui_param.h>
2 s' a2 t$ i6 s+ Z7 C% R6 ?+ c( `; s( I+ x  o0 }
/****************************************************************************/
5 ]# t7 M8 i" L! R8 J3 ?5 o0 E, I$ I6 j1 \& x3 T
extern DllExport void ufusr
4 t) t5 v/ o. M% x7 N(3 G5 Q  P- @9 j( f
   char   *param,
* L9 g! w$ b- q  S* j, h4 f   int    *reTCode,& o. Z: T8 d+ S6 v
   int     param_len
) _" _! N0 x# `7 n3 E  Q)
" h* i; u/ Q+ x" W& J# X{
% E; i7 ^9 ?0 A0 m$ \   int error_code = 0;
( o& S" V- d: C9 v  U6 F- R* J+ @; |   int i = 0, count = 0, part_units;. b$ T$ i2 E  {; v  I7 ]5 V, k) Q
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
0 N: Y, Q: U# \1 c& \' Q/ j   char *env_trans; 0 r* e( {% g+ l  ~
   char opt_name[ MAX_FSPEC_BUFSIZE ];
2 A" o. O) x2 v3 ?  O1 q: B0 R, H( l   char part_name[ MAX_FSPEC_BUFSIZE ];
7 m. T7 q+ V' _! ]* X3 ^6 i9 W   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
: u- j4 A2 s: f# D6 B   char  **feature_names;9 {) ~& k! |7 o: X4 }- H
   UF_NCFEAT_t *features;0 I4 G" j; m- f6 [2 M, {

3 K8 x9 c6 G) G   tag_t setupTag = 0, wp_tag = 0;
& U+ f: C8 ]* `- L, a& G7 Z   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0; 3 N/ X; _- M$ l8 I0 ]( H4 @
   logical answer;: I2 y1 D8 A# h  T

1 y5 M2 t; ^# B. g) j   char **criteria_list;. \6 o( Z% c" `% T, v8 Z
   char                         **criteria_to_consider;
' P5 j* e. i: T" x  |3 t" O( f   int                           num_of_classified_sets;
+ I% N& z, m% V) s0 E  V   UF_FBM_GEOM_classified_crit_t classified_sets;9 o5 A+ C. [0 J; w# m- ^
   UF_FBM_GEOM_crit_value_type_t crit_type;
, y9 b, T9 v  ~1 H# C6 @3 |* }% X! c   double                        value;
% o) R1 t# ~% W6 h. Z7 I: e   UF_PART_load_status_t         load_status;
, ~/ }& h* k5 Z" S) E% L
3 D$ j0 i- m5 w4 }/ s   *retcode = 0;) ~' j" |4 @% f, |5 J% X( S# Y/ E
# H" X. @# L3 ?8 f/ {
   error_code = UF_initialize();
9 N3 F$ d" e  ^$ u   if( error_code != 0 )% m: M/ {& L* s: H( y  {
   {
9 [7 F7 M4 j, I      printf( "Failed to initialize uf %d\n", error_code );( G- P! s( S9 D
      return;, f2 h" e$ w' X* P+ m
   }: `. d* {% [- Z% \. t1 ]6 p- c

3 Z" a/ l1 S% D4 C9 X   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
+ F9 f- v% x2 l2 B, g                                                       &error_code );
1 Y1 I" E9 c6 s, K0 O6 G) G* {9 k  c  s# l# R3 N3 c
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, 5 |* R' n$ p" d
                                                 &error_code );
! k# y/ W& e- ]6 G8 R  u( i4 u' y% m  T2 w1 P# S  d" F- S
; m7 x& Y! ~; W3 R) ]" d
   /*** This program works with the part files in the CAM samples directory0 X( ~( C  h, m, O
        so we need to get the path of the directory and the file name
, `  O; @/ `$ U! \& Y/ D   *****/
; Q5 [9 \  q1 _2 N/ F8 h( [. n$ N( z   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );2 A$ R2 F% W2 a3 f  M9 ]5 O" T' g
   strcpy( part_name, env_trans );5 o! t; v* P+ Z% ^& X& x/ V
   strcat( part_name, "cam_holemaking_base_" ); 9 u3 l2 V! H7 o# `5 g
) _' m% \  \; Y5 E+ ~
   /*** If no part is open then open the part cam_holemaking_base_in.prt
6 S4 E. J" H& O+ e        from the CAM samples directory % r9 j$ O" L# K! F! O$ n) |5 I
        If not check to see if the units of the open part so that we can open5 ~; B: ]/ K- g! z. C
        the same units part 1 V0 v% x+ L& k9 b. N  B
   ****/* K6 ~' D7 A- q- [5 G$ b
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
2 a+ s; {* A- R8 G   {
0 J' m  i" v. I$ g       strcat( part_name, "in.prt" );
% C* X3 W& l3 o+ B; ^  z   }8 X7 P8 m' {7 G, ]. t2 |
   else& |3 P) q  y6 l4 ~! e0 L5 @; @
   {
+ A& O$ m- ]' v0 s      UF_PART_ask_part_name( part_tag, open_part_name );' b  \8 g3 v9 x+ I% k) `. t9 `
      UF_PART_ask_units( part_tag, &part_units );9 r. T+ k! u. T' C4 z( n, U" e
      if( part_units == UF_PART_ENGLISH )+ f% @3 k( @5 k1 w, I( B- b0 H
         strcat( part_name, "in.prt" ); 9 t$ z9 p5 f+ {' j& h6 v
      else2 Z* m) n+ F9 l: |2 }' c- W
         strcat( part_name, "mm.prt" );
$ [( ^% ?/ r2 Y9 P   }/ d) ^$ b( A6 f: A! q
4 X; `6 H  ?1 D
   /***
& I1 I( e1 E# o4 f7 c) r$ g: K5 B* g; |        If the file we are trying to open is the currently open file
9 p) T" F8 ]  f. ?        then continue on
3 ]# ~3 v7 x1 O; N& J   ***/
# y+ p% C9 l. X   if( strcmp( open_part_name, part_name ) != 0 )4 T5 Z9 {$ A! s0 t: ~" l8 p& @
   {" g6 z0 V* Y# T& p
      UF_PART_open( part_name, &part_tag, &load_status );
" g3 n# |1 \! I5 S$ Z- f   }. B9 A" f6 S, O* L

6 n0 _+ z! L& a. z* f   error_code = UF_CAM_init_session();
( ?& U5 X# G- `5 B8 l   if( error_code != 0 )
+ c% h% I, }3 U$ v- G: l   {% K$ W# {/ p+ s0 {' {
      printf( "Failed to initialize the CAM session %d\n", error_code );) t- S; }( H4 p0 B( ?0 i9 _& C
      return;* P$ g: J" v- {. _. M  q; s9 w" |% K
   }' L7 Z, J. T' x9 e+ p! A
" M8 e( c% k+ E
   UF_SETUP_ask_setup( &setupTag );
- j* X. v& ~: p9 B$ N   if( setupTag == 0 )
# m* ~: a; u8 X8 P   {
" `$ n! O$ B$ j      return;* V, ]/ D9 W8 C, g* {
   }
2 R2 Q3 e' n4 d$ k2 c* P: s+ V  g2 {1 a& J- @0 y* {# l  o- T, p
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
* Z' P8 L3 a3 t) _. ~% U& b: S   strcpy( opt_name, env_trans );
- W6 V" X! T0 @: ~1 n   strcat( opt_name, "hole_making.opt" );
. b) b2 u* C/ i- `. c, S1 F- D: Y4 k. ~6 W% G
   UF_CAM_reinit_opt( opt_name );7 Y# B  m) u6 A  j
. O  N3 x4 S+ [; z8 O- Y3 h4 O
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
# J6 c( ]( S/ P/ }$ z
$ Z2 s% h1 e0 f   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
: C; v. v" @2 t  E: }/ }   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
6 f& Z4 `& _! W, c/ t   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );/ a1 f( |# r7 F3 e! Z2 f  Y9 c
   if( answer == TRUE )( y) e! ]& A9 S- N5 N4 U  D: m
      UF_NCGROUP_accept_member( wp_tag, geomTag );
- t" k! e0 o* I' j   else
, ~4 ?% e4 k5 ^7 |5 Y      return;2 V( q2 n. ]+ m$ e6 ?' x* _

% c" z, u% I4 z1 Z% X4 ?9 S4 J   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); ' v% s6 h: I) i5 i2 s- x
. p1 ~4 e# R( S" P1 o5 h/ ?8 ^3 G
   if( count > 0 )
8 X! r- ]: m+ o$ J9 ?      UF_free_string_array( count, feature_names );
7 d; ^3 M! p3 i1 ?7 B! s1 s
0 c( i, E' f; N7 w& c: {   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );6 j. }6 L- [  M1 x9 K

9 M( s7 o, l  v   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
9 E8 F+ i5 [; C$ y! @7 m$ X0 X  O4 D& c' }, ]
   if( count > 0 )5 N: y: G/ }% C
      UF_free( features );! c& e. r: D5 g! {& c! ?# Z
   else
, ^/ ^  _2 _8 b. O+ y1 b      return;
5 z9 b: K7 k' I( n% n( n( m% Y: B6 M! `: L4 A$ B* x
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );! G# B* X. U# w$ R
2 f0 e* J% j: z7 N& }' o) M
   if( count == 0 )
: l% u7 M* L/ r3 {. I: \7 h8 m      return;7 [# U* l: h; _1 f6 c! t

6 K" a9 p8 _( n1 o$ G/ Q% M4 p   strcpy( criteria_to_consider[0], criteria_list[0] );+ p1 D' M, h8 U7 O
) ^* R. G* j9 ^5 n+ F$ @
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,& ]  o9 H& n7 n. @8 j# a) y
                                     &num_of_classified_sets,9 B3 E# o! e1 {+ x( Y5 C
                                     &classified_sets );$ F9 a% T2 b7 [+ A3 x0 W) R! c7 h

9 G# l2 T( y* x. B   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
9 `0 o  y2 U5 ]' J; [  F' Z+ _' R' N, f6 b6 W6 b& z/ n$ p( K7 K
   for( i = 1; i <= num_of_classified_sets; i++ )" V6 |# i* i/ t( e
   {
' u9 J5 [. u! a) p, W& ]      switch( crit_type )) y* k, Q. W; y3 r% p
      {
+ u" p2 S5 ?2 [% _0 g         case UF_FBM_GEOM_crit_value_type_double:4 P4 e- e0 p7 i" f0 ~1 v
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
& I/ h8 a5 `/ D' }- m                                             criteria_list[0], + E; w$ m7 x2 D& G- n4 e6 o4 g
                                             classified_sets, i, &value );
! O+ V+ x7 g3 r3 S3 d0 g. F            break;
$ R; D$ p8 Y/ W: b1 n: r         default:5 n; V) D& h& l7 P) o
            break;
  F* |7 d. z' X& S# s      }' o  G  U) F8 U
   }( d6 w3 n0 |( D; u9 Q
. }" p! C1 s) }
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
; x/ g5 s* ^$ u1 \1 t! C% u9 @1 s- X1 r
   return;, }6 J0 Z- A0 s; ]6 e7 a
}
" }" _% L9 |: m
: e$ G9 J  n7 R( q  d( {1 N6 Yint ufusr_ask_unload(void)
+ k1 z& }2 f3 d0 x& k( \& V{/ K/ J" k8 h+ F  z
return (UF_UNLOAD_IMMEDIATELY);! ~. W6 V0 m( S. l8 B
}
0 C$ g8 q1 i4 ?& x' _1 S
$ P. Z* S" M# A# e5 r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了