PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
- o+ ^6 n" G9 Q$ c; y& k) `

/ r/ W6 T# r6 W! r+ v/ N( V- `2 H) ]- T4 F2 e- P/ Q
/***************** Include Files *******************************************/
7 b# B* ~9 o( t! I/ G9 \6 A#include <stdio.h>+ t3 U6 L5 _: e3 U* I5 I9 C
#include <string.h>
$ M9 I* s* z& F. |  n/ H2 M: v2 z& d% t: y
#include <uf.h>9 `$ R0 X. q* v) \$ z, S4 j! U
#include <uf_defs.h>
5 m4 q+ E. _  {#include <uf_cfi.h>
, W9 S- U+ _+ H( p' h% _7 n#include <uf_cam.h>1 ?% g4 h. g! [/ }3 G: i
#include <uf_ncgroup.h>
; ?# h* k- }" c. g6 T6 L* }#include <uf_part.h>
* B" ^: |& j' X$ u( b- Q#include <uf_setup.h>5 O- N; U4 @7 h# q
#include <uf_fbm_geom.h>
* z4 x+ x! c; N#include <uf_ui_param.h>' `( C$ w$ h. `% m, Z5 D# g

" ^0 }; z: b& Q/ P/****************************************************************************/
& k& ?5 c. k% z& U  S4 B. F0 n# {" b4 {. J
extern DllExport void ufusr
& \+ i$ n' x/ V. ~2 M5 W(
; y& Z3 R5 s- i4 V   char   *param,3 z! [3 l& W9 g/ _! L0 Z! s
   int    *reTCode,
/ w7 s; W9 J( f7 C) G$ A$ u8 w   int     param_len5 U+ A' T# j4 b2 N, L
)( [* f9 p) g7 D" d  C+ _
{  A9 k7 s' ~1 Y) {/ X3 @
   int error_code = 0;' b8 T! t3 [7 D" F) Z( V/ ~8 K" u
   int i = 0, count = 0, part_units;
6 w6 Z7 p' B- `" F   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
$ y  P* i% ~1 `( b' x   char *env_trans; ( L5 y; U, j- ?8 a
   char opt_name[ MAX_FSPEC_BUFSIZE ];
& d, a* _3 @  T' F( p   char part_name[ MAX_FSPEC_BUFSIZE ];  p: ], i1 N6 p+ ?$ L/ Z& n
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";' ~  p* q: M7 @7 d& b5 T" X
   char  **feature_names;6 K+ L7 b2 m" N4 q0 `; r' A7 A
   UF_NCFEAT_t *features;) v8 B# H& T3 R' H( |6 w6 C
( h- N. _- l( e- ~! h
   tag_t setupTag = 0, wp_tag = 0;$ _6 r9 h# p' V) J0 _# t' |0 f
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
, D2 h% c9 H# L5 A   logical answer;
* N$ L1 O. f/ p0 K, [
' `, ~2 Y! M5 }   char **criteria_list;5 y1 _* Z0 E6 G$ |! m4 y6 N
   char                         **criteria_to_consider;
$ s1 X  L" z( ]2 d   int                           num_of_classified_sets;# U. g7 p% @8 |# l
   UF_FBM_GEOM_classified_crit_t classified_sets;
, w+ w! S' K  O3 [- F6 H   UF_FBM_GEOM_crit_value_type_t crit_type;4 P/ E; r; y+ @0 S$ w
   double                        value;' K- y0 O; [9 |5 X
   UF_PART_load_status_t         load_status;2 y8 J4 ?* V) X7 ~. i
9 D2 k) N) v1 O4 M$ P) S
   *retcode = 0;; V: C9 v& f/ k6 i  s$ f
* g; t' ]# z5 _2 O
   error_code = UF_initialize();
3 ^% b  X% a; p- Q# y- t   if( error_code != 0 )1 L" s- x/ o/ Z. Z, ?1 T" i3 T, F
   {
1 V8 K; d4 V) r$ p) E+ B1 {. ^      printf( "Failed to initialize uf %d\n", error_code );* |3 ]$ o* I, b' t, u. }" i
      return;
# a2 x9 B2 g1 ?7 r. U   }1 p. }& j4 b3 u8 o$ f# G

  o4 Q) @+ D4 }   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), ; M6 m/ g! H2 t' ~% G
                                                       &error_code );
3 C) I4 J# |! N! c4 R% C9 k  {. T* |8 P0 C
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, 7 ~, Y3 Y- `1 s/ ]' g- G
                                                 &error_code );
, }$ c3 J, u& ?  `- u
6 R. R4 a1 y' c* b+ s; Y
5 ~! z& F2 J8 r% o/ N" n; ]1 w2 r- Z   /*** This program works with the part files in the CAM samples directory
2 ?" ?. q; `7 r+ e$ `, ?7 \# E        so we need to get the path of the directory and the file name- ~( \7 j5 K0 r0 {8 F
   *****/# `+ y4 ^) h  C3 U. W
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );
* E) M* m. |0 G4 _8 b. Q6 G3 z   strcpy( part_name, env_trans );: q% o: n5 E, o$ ]- X6 i0 Q
   strcat( part_name, "cam_holemaking_base_" );
6 B: @& O; N+ `
0 @8 P! ^9 |1 {  C3 |& K   /*** If no part is open then open the part cam_holemaking_base_in.prt
  }: {: ~7 |! x        from the CAM samples directory   L2 y9 @- p1 {+ \2 ?) F" ^
        If not check to see if the units of the open part so that we can open; N& w, G6 q) C! _# r+ T, j" k
        the same units part
: v; p% N. ]) M8 j   ****/' L$ Z' S) _; C- {3 W0 h& |  a. u
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )/ q6 [% k" F* U2 @/ k
   {
, j! @' y% b. S8 Z' \6 G8 K       strcat( part_name, "in.prt" ); " p$ Z, E( o  x+ q
   }  E/ D3 a5 w* N% b& h9 g: t  g- z  ?
   else4 c+ R% U6 X6 l6 @9 ]  [1 o
   {& V1 g- ^! Y+ d
      UF_PART_ask_part_name( part_tag, open_part_name );
) h/ o2 U  k5 }2 G      UF_PART_ask_units( part_tag, &part_units );
) M4 W( _+ C9 [4 w& |* F      if( part_units == UF_PART_ENGLISH )
* G  a$ |$ @& d1 P3 |; N         strcat( part_name, "in.prt" ); : W. Q7 ?) E9 k1 b1 ~) Z* m+ l
      else8 E/ F" A% Y6 R$ ~6 ~8 r
         strcat( part_name, "mm.prt" );
2 L) Z. Y0 \1 g6 T8 m+ q   }
2 x  K, W- }$ s( P' ^/ T+ ?
$ M" h: e  V# l( u$ l. x   /***
  X* q8 D0 p% h# R( h+ b9 _        If the file we are trying to open is the currently open file8 h  k$ a% i. T, \
        then continue on8 \) e! X9 x4 D- R* @( M# V' J
   ***/
/ |, T1 D6 {7 n7 c) y3 I   if( strcmp( open_part_name, part_name ) != 0 )  }; Z& I: L2 z1 x+ R* ]0 S8 \% z. h6 A
   {
" H- n- J: y& `+ {' y3 ]      UF_PART_open( part_name, &part_tag, &load_status );
" W2 H3 Y/ y0 @. m4 ?7 c   }
! A6 q8 d9 E- d# S' {  e$ e/ F; A' w8 g$ Q
   error_code = UF_CAM_init_session();& `2 c1 s7 E2 U% H4 Z2 L* X
   if( error_code != 0 ). N$ w2 Y' ~" U2 c2 ~' f  ?3 \
   {- J( c0 r" G' o5 ^* j
      printf( "Failed to initialize the CAM session %d\n", error_code );
6 {) C- T4 g% [      return;
$ c( ]+ D9 w# v* q1 X4 c% X7 g   }7 u$ T( _7 o% y

( E) m' b6 T% f- G   UF_SETUP_ask_setup( &setupTag );
4 w7 a, z! t. x& X2 O7 L( e   if( setupTag == 0 )
2 A) K! O! E* X4 z" `  E   {
; _4 `7 f' m: t: V5 Z      return;5 Z4 J4 F( k% D7 n5 j' F! W- o, n
   }0 M, D5 i" B, k3 v- |, Z
0 z, h1 C9 c0 j6 g
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
' t. x! C% i7 Q   strcpy( opt_name, env_trans );
# O( q; a- O" G+ H* i0 b. I) N& F$ J0 Y   strcat( opt_name, "hole_making.opt" );( S4 S$ X7 p: q& |

; w/ _: S; C) G: T" g   UF_CAM_reinit_opt( opt_name );  _( e4 E1 L$ b  K

- L, P& f: |: v8 K4 [3 O; Y   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );3 T7 J# }5 M$ Q/ {& \
% m8 k  j5 L% a# a9 r7 R% I
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
, B$ h  k3 Q+ h. f* v& e   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );2 ^4 @4 @* {% Y
   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
7 Q7 g  A5 Q: o) V, X   if( answer == TRUE ); b- E  i1 p- E1 P, _2 i
      UF_NCGROUP_accept_member( wp_tag, geomTag );
+ R; O; k: ~6 z9 O- L   else7 R: F$ U% n1 ?  s
      return;
0 v: p" R" [9 p; ~8 U) [2 |( B; y- u, S6 b2 Z
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); " f# Z6 o! @  H* p4 N, c

4 I2 p+ L) z7 _! E. h( L+ B   if( count > 0 )
' g+ x! \9 X. E. T! L% U      UF_free_string_array( count, feature_names );* H' s) y: n. t# f- S; F- L
) q7 Z' D8 q! _9 `
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
3 c! R/ j8 u" u/ z, F8 H0 n) X
' B1 c0 E( X  ?& ]( N& F- V4 q   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
( g8 b! r9 l- \6 W; X- F  B+ y0 E+ p5 G; t
   if( count > 0 )- r% Z9 T4 ^0 W0 r; J6 Y6 @
      UF_free( features );
2 `# _( B5 H( E" l0 W$ [   else: u7 H- W! \3 l% W; v
      return;
2 R0 a& e* @2 t. O4 V. H6 ^) _) O: y# e* r, u& D
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
% G# D3 q& t3 R( i+ b4 W1 c: t; D
" Q: o0 U, [" d: _. d3 `  `   if( count == 0 ): j- o5 {& x1 i$ v: |$ r" }4 j5 {
      return;
( F  b1 s9 z+ N5 o% O/ I( w2 B
* Q( Z% n2 B4 w) k0 ?   strcpy( criteria_to_consider[0], criteria_list[0] );
7 `. r- P% ^% F) j' a
! k; k. t: F$ g' D; `9 t+ O   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
4 M) [) r  ]6 V1 e                                     &num_of_classified_sets,
$ N, m! \1 _  ~3 p                                     &classified_sets );
6 h- ?* I& }3 C% q6 k: W/ K& f6 T. x+ |: s, @- Q
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );2 T5 p+ T9 h) U  L: k( w, ?) o

& I* \: F8 h2 w0 O+ K1 |6 @  i   for( i = 1; i <= num_of_classified_sets; i++ )
$ b  O1 i# q( Q& h: n1 j   {
# Z5 v2 p  X& a  a      switch( crit_type )
1 r! E" L6 F( S  |; y' j      {
7 [5 i% e9 N. ~& T: {1 T( k% F. j         case UF_FBM_GEOM_crit_value_type_double:: }& N, G) `, g3 v
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, 6 M: ]( b4 s4 C$ L) n
                                             criteria_list[0],
6 M% B& y' A5 R' @) |                                             classified_sets, i, &value );
( {$ s7 Y4 C% g/ S$ d3 }            break;
7 Y/ L7 I, |. d5 z6 Q         default:/ X6 h3 R" G+ G' e
            break;+ H. [7 u* u& A2 E: r  p# F; y
      }$ [, H* X4 u% n$ D+ t
   }0 {4 Z4 O, n9 y
, ]; @- @# I+ p0 S+ D
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );* H) W+ R& q, x3 w6 t5 S
- h) f5 L& D& C2 c8 [* C2 k9 y; X( b) K
   return;; L/ V1 E. c( U$ o9 d+ w  [
}( k. Z) U+ U9 ^* W  b4 f9 g

: K! ]) ]4 ~4 C/ E; Q3 _int ufusr_ask_unload(void)
  k* }. _8 ]: T$ }& |6 A4 D{* G" e7 N6 b" J! w; O( B1 B/ v+ L
return (UF_UNLOAD_IMMEDIATELY);/ b; R4 {+ k5 o! [' q: y$ W' P
}+ N/ T7 c+ M& }; G: C& q3 y
/ X! e' ?1 G# a' }# m! m; ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了