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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

6 z* {( o3 h) {1 |+ k
( j8 u1 }( _$ d- q3 p) C* ~( [' R. n+ M( X* i  @0 H
/***************** Include Files *******************************************/0 [0 W6 k7 U) l2 w+ m' |9 w
#include <stdio.h>8 N3 X# l& E" I! p2 T
#include <string.h>. f6 {$ T& A0 b$ W2 s9 V

3 z3 R3 X+ _9 Q7 O2 M% V#include <uf.h>) h# t5 M) q1 p7 L. k6 S' L) T) n- p
#include <uf_defs.h>  ?. e* q# d; D
#include <uf_cfi.h>
' D# r! }6 t9 {" ^8 v#include <uf_cam.h>
9 R: o# I5 t! p/ B. h3 b: V4 _* U0 `( V#include <uf_ncgroup.h>9 D" z9 c, K& D, o! v+ F
#include <uf_part.h>
- p* e" d& w3 x& ~6 z2 T. A#include <uf_setup.h>2 {# ?/ }) |: R
#include <uf_fbm_geom.h>5 ]- m2 H! s  }
#include <uf_ui_param.h>; p0 A! i/ }% [/ o& ~" \

6 _; r/ ?' l! L5 \) K& s% t/****************************************************************************/
, O8 z  C2 g4 ^. Z! r
- ^0 B; }1 k; s: Q2 f! |4 Oextern DllExport void ufusr 7 l: m- I% D0 K+ l& F
(
5 E9 F* ?3 N4 F( u+ y5 {- l+ T   char   *param,
! Z) ^( m" Q$ R7 ~   int    *reTCode,
+ c, G% N* s3 C( X% r4 d   int     param_len) _, }! b+ ^" n4 N7 h
)
1 o) J: {% [/ E& U' R{
6 l, r0 v; d' Q- _   int error_code = 0;
% d- o9 G# e* F0 V" h' L+ V   int i = 0, count = 0, part_units;! N0 {; l8 l  v' Q! Y
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];# n7 h5 V/ Q9 c( k
   char *env_trans; ' u4 J+ H: h/ j+ `! t3 y% r
   char opt_name[ MAX_FSPEC_BUFSIZE ];) z1 i) H9 q% T+ q0 ~4 C) [
   char part_name[ MAX_FSPEC_BUFSIZE ];0 O, a& n. @7 ], F& B$ `
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
, [2 N. X# z8 V( O   char  **feature_names;3 y3 Z. B2 ^- m( m0 @7 D
   UF_NCFEAT_t *features;
& a0 E0 z: Z9 W5 J. f' @. Q+ _$ o% O: O+ j
   tag_t setupTag = 0, wp_tag = 0;
2 m) T, g! X0 w, l9 T$ q   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0; " x7 u( b* T+ }' I( I6 E% r
   logical answer;3 o( P* C, G2 v. N' z* ?

/ S  Q& O, P# s2 g- J   char **criteria_list;, Q& E' k+ Y- g& h1 _& n
   char                         **criteria_to_consider;
0 R# I* j" Q  P2 V  A   int                           num_of_classified_sets;) x# L8 v/ B4 w; q
   UF_FBM_GEOM_classified_crit_t classified_sets;
# ~, Z6 A2 `$ H  H   UF_FBM_GEOM_crit_value_type_t crit_type;
3 ^5 M8 D3 L* X  o   double                        value;
6 x" w* x! U" D   UF_PART_load_status_t         load_status;
- j2 R( r, n6 P6 F' {0 g, A# J; c0 g% K( o9 y
   *retcode = 0;- @+ l% J0 R* \% g

5 K2 E0 u7 a" G   error_code = UF_initialize();: d4 R& p! E+ j3 T9 q- n9 O
   if( error_code != 0 )- r8 ?9 ^7 k* s" c/ V
   {- s% ^- P& A% c" w! R+ l: z9 P
      printf( "Failed to initialize uf %d\n", error_code );
3 M9 m; A% r- F* d; ^      return;2 b( p' ]& i- D/ n9 @- {: J
   }1 R$ C7 e- e9 f' @% h7 f$ ?1 F
$ d, o4 h/ x2 w2 G
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
/ z$ u% x4 t, n0 B* k% h" A. I                                                       &error_code );' A9 J$ S- ~- c& h! M& i  p6 z
- B9 \+ U! ]9 Y4 F0 P
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
, v, ]1 G. U4 }7 k2 U                                                 &error_code );
7 Y  j  U* Y3 v: _" `! \/ Y
& ^, Y9 G# n. ^& n' \4 t$ c
9 \. d0 d) k9 w   /*** This program works with the part files in the CAM samples directory
6 O4 Y% }3 N; w        so we need to get the path of the directory and the file name
$ N3 J+ Q+ F! a" Q! L& Z: P$ N( ?   *****/) {' J/ n9 t. z, ~
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );* @& g+ X% c+ t5 `3 d; T
   strcpy( part_name, env_trans );
& O( A  z. y! f; @+ [* v0 S   strcat( part_name, "cam_holemaking_base_" );
- v: \: I) |$ o: ]% \( \/ e+ {& j8 u; G; v
   /*** If no part is open then open the part cam_holemaking_base_in.prt2 Q6 J5 d2 M3 M5 E- X
        from the CAM samples directory
7 z6 l% T6 N( @2 h& K9 K        If not check to see if the units of the open part so that we can open  C! z; ?* L0 N; m- B5 ~0 [
        the same units part
# U0 g4 x# e: K' B/ [6 b   ****/
0 O6 C" F' D8 n( L   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
" ?9 W+ Q8 g' L! n( [  M% y" g   {+ ?5 _% ^% A9 }% g) l7 Z
       strcat( part_name, "in.prt" );
/ V" Z9 c5 s( i  x   }' _( h6 i2 t: m2 h
   else! @( h3 D" X' k+ {
   {  k4 ?6 I5 J* M
      UF_PART_ask_part_name( part_tag, open_part_name );: j4 f# o, \2 c
      UF_PART_ask_units( part_tag, &part_units );
6 N% H2 P* V3 P" ]- B  W. n      if( part_units == UF_PART_ENGLISH )7 O6 ?9 q* r: \
         strcat( part_name, "in.prt" ); * ^3 g9 Q( W, K2 m7 E6 j8 m
      else
. c8 @6 [# k$ c. l  z5 ^         strcat( part_name, "mm.prt" );/ n* Y* \! Y  z2 N. \% E6 g3 ?
   }
1 c6 H$ |( h% f& a" ^7 ~$ M
7 j: _1 x& Y- `' S' ^7 J3 s- ?* m   /***
! S5 b( L0 n) E5 l$ w  q0 j* m8 C        If the file we are trying to open is the currently open file7 Q  y* G" L# q. C- h! K1 c
        then continue on( M( B, }( h! w2 u" ^" g& u
   ***/
' S: V$ t% |2 F3 M   if( strcmp( open_part_name, part_name ) != 0 ); @8 N: d+ C! r- C% U, F
   {$ I2 D$ V; ?! v; T2 ?9 [& S
      UF_PART_open( part_name, &part_tag, &load_status );
: }& q  Y- O& u8 p0 T   }" s# `4 z0 n8 K

$ x* `7 m( q- b4 j& M3 s/ R5 N8 N, f' ?   error_code = UF_CAM_init_session();8 U" U5 s) j: l
   if( error_code != 0 )% R! ?2 h; o* K. ?- _/ a; P! ]
   {
) {' `0 {( u- m  y# P. y9 f      printf( "Failed to initialize the CAM session %d\n", error_code );# Z& a# F/ F& F- {  K  S+ n; }2 a
      return;
+ m9 f$ i- j  I0 E   }6 q$ |" |9 ~5 @- ~3 [4 `

, U5 X0 \- p+ A, E% \5 t- @- s- F   UF_SETUP_ask_setup( &setupTag );+ ^% Q5 Q5 X( K! q" a/ M
   if( setupTag == 0 )  [/ c" }9 v; S" p+ r" z( A* I0 s* M$ N
   {
. s5 x2 a0 C+ q% a) m      return;* b: |5 O, Q7 Z1 {( ?0 J
   }% T: E7 z0 ^0 _8 i7 p
& _# M$ T, t; R+ E' b" f
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
/ a! x* j& j8 q' z+ v" O" u   strcpy( opt_name, env_trans );
  d% _1 O& o1 o0 Z4 \' X$ `   strcat( opt_name, "hole_making.opt" );6 j- H$ [" w3 u& y5 u
2 Y$ {; ?( t$ F/ m) u1 P
   UF_CAM_reinit_opt( opt_name );
$ b- y5 S& R; H1 x* ~6 O+ L  t  v
3 ~. S- i- h2 I   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
) Y; D" G) ?% I, L: ]( L/ I
+ g$ e4 W& J7 r" Q   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );# x$ n1 _" l+ v* t& b6 M( G! _5 x
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
" v- S1 E) r9 M4 X   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
2 T' G* w# {5 Z: P7 {! Y   if( answer == TRUE )
& Q: D. U& @3 a& u% c4 I) s' u      UF_NCGROUP_accept_member( wp_tag, geomTag );
! L! u6 p8 X5 p! S# ^6 ]+ Y   else2 E3 O) }& k' E1 Z( T
      return;
* Q8 f. o" Q9 a8 e" V$ p( {. y2 o
7 w" t5 g0 y% p/ z1 t   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
: [$ d" l" {* H/ X. g% |+ L5 z5 X! A/ }9 h8 n! T
   if( count > 0 )
) O6 u- t0 J  T- x& D/ g      UF_free_string_array( count, feature_names );3 x  }5 g# {3 `/ v  Y$ O8 Q/ U
" h% p6 p5 q2 {9 s! l5 G4 j
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );. [4 p- |  w8 _

/ \, {7 Q8 B- |, U% V9 u( P   UF_FBM_GEOM_ask_features( geomTag, &count, &features );9 D/ b! U! e7 \& _$ a: `
8 [, P+ C$ W6 d% t) [
   if( count > 0 )' _9 \; I( W1 a/ n' r
      UF_free( features );
2 ], b' h" J2 I* Q4 e- |) z   else
8 a* `' u& P/ Q6 h: B3 M' \2 t( y0 y      return;  _3 R" `& w  g+ y7 Y

4 W; N9 h; V# ?. C   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );+ H( U4 s  C! R8 ~
  s. R& t$ w5 m3 d9 J7 I
   if( count == 0 )
, [2 z& ]2 J( I5 a/ e. @3 x, a1 [      return;' l: d& \1 F- R5 y/ H; O
; L3 R( O2 N2 i  f$ L" H
   strcpy( criteria_to_consider[0], criteria_list[0] );
# n6 d1 c9 i- \# h3 K# M3 y
# D( M9 L0 e5 X% m- k   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
1 Y# c! A- U+ v4 k0 n0 O                                     &num_of_classified_sets," z0 |% V: ~* q5 M" i
                                     &classified_sets );
, g3 l' Y- a: u. m
" r2 z/ n+ C) V2 O# R) e   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
: `) u; r' B  L  N! J: Y9 \4 q, `9 d' ]. t& \
   for( i = 1; i <= num_of_classified_sets; i++ )( Z; s+ Y3 G) a- z
   {5 k/ B+ w% i, _2 R. {# T
      switch( crit_type )9 z- E5 Y* K( {: v. T
      {
. J, j6 N: F4 I: O! D+ Q& }         case UF_FBM_GEOM_crit_value_type_double:
& Z  F& P+ _9 X: l6 q8 ]  g            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, % h& C8 y* F  }3 r( Z
                                             criteria_list[0],
( E, v6 b! |+ N# @# Z$ Y& x                                             classified_sets, i, &value );
$ o: Z% M, [7 }2 `# e            break;
6 l1 h4 O  U- o( k# w         default:
' {6 l- f/ ?; a" d            break;
- L- S0 h9 G, Z) o* @      }
3 B! I. n( r% A! G   }' c) ^' ?+ J. D
7 Q) n) Z1 M5 |6 z
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
6 L5 H3 r( j! L6 S* n8 Q& I; }  z; t
   return;2 C2 u' m5 m, e0 h, Y
}  @/ F: y" P- u( j

$ k; J9 o& s( K; n! Q1 Bint ufusr_ask_unload(void)
- Q$ @7 G/ N) E8 l{; }% C% b) T+ O) X
return (UF_UNLOAD_IMMEDIATELY);
# J+ \* ~! ?, c) R( |}& k; T# p" w7 V3 ?3 h
" I/ [2 U2 v1 o) F- x
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了