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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
1 a% g8 D6 c$ y4 M
4 _* s; X6 g% H0 H" S0 K

( R* d3 Q3 T* G; n& @3 N/***************** Include Files *******************************************/
% ]# \+ {, V( B& X( }0 X" |#include <stdio.h>
: s+ [2 @$ _) @- K! r#include <string.h>
6 H6 m& d5 O* G# E) b3 V2 X
: [3 a3 k/ s9 u9 ]8 u$ V' F7 k1 e#include <uf.h>
. a8 ~. A1 m! d#include <uf_defs.h>7 a# V6 b- \2 P6 J
#include <uf_cfi.h>
3 g' f3 H! V; o( H#include <uf_cam.h>  x3 V2 r$ h  [& [6 N. l# y) h7 ]# r4 o2 N
#include <uf_ncgroup.h>* Y) [% ]1 Z% |( C
#include <uf_part.h>% e; `; h$ b  G
#include <uf_setup.h>, J7 }' r1 u- Y1 u, k1 u
#include <uf_fbm_geom.h>
( c3 Q6 f* J0 C( d  u#include <uf_ui_param.h>( ~# b/ A  b: F' c/ e* q
* w% W( v5 S3 f' v, b0 B
/****************************************************************************/
6 e6 ^% Z$ z. J$ ?4 ~, k) }
9 G1 V) {8 S3 ^. `8 M. G0 Bextern DllExport void ufusr
  C" N. d! k" w/ `4 |(, L( R8 H6 }" C! K- p
   char   *param,
" A3 s( e& w2 L. }; L   int    *reTCode,( ~' O8 Z0 x, ^1 z
   int     param_len( f/ L! _5 K4 B! t2 E
)
- C0 x1 o, W% }/ \{# Q0 [6 I4 ?  h) r1 S! _
   int error_code = 0;
9 J' q, B2 V- L" W/ c+ Y* s   int i = 0, count = 0, part_units;
3 a5 D8 j: r$ m8 C/ {   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
8 l' E0 A' u+ h   char *env_trans;
' g% W; U% l5 \# O8 r9 q- Z2 @   char opt_name[ MAX_FSPEC_BUFSIZE ];4 m* b5 E; K( @; r8 C' x0 F4 Y3 {
   char part_name[ MAX_FSPEC_BUFSIZE ];
1 }3 c; G8 V, S7 P! c   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
! A" u/ ~4 r: A0 H   char  **feature_names;9 e' @5 @( p% F  O
   UF_NCFEAT_t *features;2 H6 s$ a$ J9 U% `
/ W. e% y5 h  H
   tag_t setupTag = 0, wp_tag = 0;
4 B: s6 D' R) l" \9 g% o6 L   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
' T, ~6 y, Z0 V6 O5 J   logical answer;# U4 O8 Q: `% x* C# K
0 v4 ~; w: Y/ y6 ~1 Y2 |6 q, ]; j
   char **criteria_list;
; C- W# z" |+ \# [, P9 J   char                         **criteria_to_consider;
" w  G8 y; e( R" s   int                           num_of_classified_sets;
7 h0 Z+ a: |. M1 I; `5 b/ |   UF_FBM_GEOM_classified_crit_t classified_sets;
% L3 c/ b: j6 z- X5 |6 O) k. }/ W   UF_FBM_GEOM_crit_value_type_t crit_type;: b  ?9 J. Z" t
   double                        value;
- e& B3 T. r; S) c& E/ D) b   UF_PART_load_status_t         load_status;
. s1 `5 C! K, X* O6 z( Z3 m; |
/ @5 t* \! k! q: n* k" n   *retcode = 0;
+ h' i$ }+ o  h7 k$ E- C( q. f9 _6 @8 ]: Z, M9 T
   error_code = UF_initialize();7 F% _, w5 P6 @) \
   if( error_code != 0 )5 `0 O( B% E  w) E1 t9 ^
   {9 e- H) j+ {$ R
      printf( "Failed to initialize uf %d\n", error_code );  r8 r4 p/ {9 W7 e
      return;
. i) }3 b$ p/ p! I# ^   }5 Y( K7 [& n  U! P

$ y+ ]/ |# b) x# g+ X2 Y2 u/ a5 L# C# E* P   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), & F' h( h* g! ]1 [
                                                       &error_code );
: x; u# M2 r* O. _( S3 ^4 E) E: V9 s1 e, c' X
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
# K5 d0 K% f9 b4 l: T; A# `                                                 &error_code );  x: W0 y* E$ j2 c  p
3 C/ b$ N- }* Y$ @) {' s4 \
) f0 m+ V& u& i" y  e7 m, c
   /*** This program works with the part files in the CAM samples directory
7 e% C! B) }- c        so we need to get the path of the directory and the file name
% f9 n( _  m" J7 J/ T1 e( \& M' R   *****/
# E/ c: z) q3 V5 M1 V) K   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );/ q* N: h1 O  \+ w7 w
   strcpy( part_name, env_trans );
" h/ n0 j* z% Y& \   strcat( part_name, "cam_holemaking_base_" );
; e& I. B* h4 Y/ o3 a7 J  K7 [3 f
/ `* K, X9 S* u# d- s; I   /*** If no part is open then open the part cam_holemaking_base_in.prt) S& ?' l! _, u
        from the CAM samples directory , ?; F5 d2 |9 ^% i, |9 _
        If not check to see if the units of the open part so that we can open
( j* Y3 I& W* A$ {; P# t# e        the same units part & E1 Z% }% O, v! Q+ w
   ****/
3 J( o# ^. U, M6 d' W1 ~% [   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
+ E7 o: r5 u; N9 s6 q, N   {4 z  f* h( i* _% Q# }0 z
       strcat( part_name, "in.prt" );
: G& p1 y# O; ]" g   }  S4 y" f( a) j6 r, G
   else4 ~( [2 ]( _' r2 x' ?
   {4 B, ~, H0 i' w0 c/ d9 r
      UF_PART_ask_part_name( part_tag, open_part_name );
8 t2 v& E- [, L( I      UF_PART_ask_units( part_tag, &part_units );
' j6 J: S6 u1 _1 ]0 @3 U7 x8 Y      if( part_units == UF_PART_ENGLISH )( y- b( T3 b( P4 q' i7 ]
         strcat( part_name, "in.prt" );
# R& n( l* O( h8 K$ W      else7 T7 X7 A$ y3 g% {+ |
         strcat( part_name, "mm.prt" );$ J0 S1 ?% ?3 g% j/ B1 [
   }% w. y. Q  B( S( U# ~

; J8 Q  }  W" z   /***
* b- M* M0 E) j& M- G6 i        If the file we are trying to open is the currently open file, t5 u, O9 X( p! y0 U# x$ P% o
        then continue on
$ ]7 G9 a: A; t$ ~$ m' S) O   ***/
; [$ h3 q3 Y- U+ E4 c$ [   if( strcmp( open_part_name, part_name ) != 0 ), Y' S  Q1 {! v+ n- }* L
   {# W. V5 L5 S% W/ P$ _1 n
      UF_PART_open( part_name, &part_tag, &load_status );
$ b. b$ `& l% A   }
6 v1 U; v! R7 [% @" o! ?' v  n$ y
# |2 C9 a, g8 A   error_code = UF_CAM_init_session();$ S& u, Y" y9 ]7 p0 j4 s2 g+ t  o8 F
   if( error_code != 0 )$ S: L; d- B- B; _( j# _6 B$ r* n
   {
0 f: c$ C: z; N; B      printf( "Failed to initialize the CAM session %d\n", error_code );3 x$ x8 ?% o4 B4 r/ R
      return;
( ^! t2 q: D1 ]   }
; X, F; G1 X/ J8 v4 k* h2 c/ u! {: ^3 ^
   UF_SETUP_ask_setup( &setupTag );# Y: J! _$ R# \& c2 ?' B
   if( setupTag == 0 )- h/ j* [, M; I
   {
. a  [. k0 l. O6 P1 ]8 r$ e      return;
) m+ {7 Q$ T5 [   }
% M- g/ m5 c5 s5 ~7 X/ T1 Z$ _5 j# m$ ~
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );8 L/ x$ T, }. j6 r9 L9 z# @: E
   strcpy( opt_name, env_trans );
2 S. }7 d! u; ?# j' Z   strcat( opt_name, "hole_making.opt" );
( D5 h: m: U- h" e' i
6 b, q) ?) C. t( _1 q9 s8 o  |1 G   UF_CAM_reinit_opt( opt_name );8 z6 \: W2 e0 o2 W  T7 f

) K3 ~! h' s, H) m/ D, s: i' i   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
3 g" Q- U7 J- K1 I0 k1 G" H# t! Y# P- {# u# M3 Q7 [$ j
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );, M% M8 L8 `; R+ U
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
6 H' G3 J6 O& p4 [4 s8 A   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );+ h7 D* O3 T: m$ r' t* w
   if( answer == TRUE )
% l  ~% U* g9 u/ I! `4 w: z' b8 r6 L      UF_NCGROUP_accept_member( wp_tag, geomTag );3 e0 s7 I$ K+ ^1 D
   else
$ t0 p/ M) M. d+ }. ?      return;
9 ]& f& w" B' _" D+ B
  t3 z3 z4 O1 a( q6 s# f; q5 p   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );   h" z- O7 ^9 H7 R5 K+ C

( }, z( F+ K  Q  ~; q   if( count > 0 )
! q. Z+ a+ b) M) ]' x" t# Z      UF_free_string_array( count, feature_names );
: ^4 _' [! W9 h( P: W  `
6 ]+ M& o& ~- M1 \' J! y   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
& ~* k, E* [1 t: Y) w
) M7 _4 m1 l  s8 z6 z6 n# U   UF_FBM_GEOM_ask_features( geomTag, &count, &features );1 n$ u) z# b$ v8 X$ L4 P
9 O) f/ j; l8 y+ e- c* n
   if( count > 0 )
5 W8 m% J( E/ e8 Y      UF_free( features );
9 N: l' ~6 c0 X8 g$ N   else
8 F, G$ R; V/ P3 K' \4 K9 i      return;9 e. r4 p6 h( r& f
) ]+ Z; M8 z4 `. `4 x7 l& X- ~6 R
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
% X& {( x" ]4 ?0 n
; ], k  j$ ?3 O% H$ B4 l   if( count == 0 )4 y  s$ X, r- @4 Q
      return;
  v% b2 p4 p1 G$ ?& f  h7 |# k/ n
, P- d5 T& Y6 }) n) k0 o: @   strcpy( criteria_to_consider[0], criteria_list[0] );
3 A4 O; n0 `- j- v' l
5 ]9 @! l7 x! i* h: e   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
7 r1 C1 @4 x& u/ n' W) P                                     &num_of_classified_sets,
9 A" C  z8 M' |' u                                     &classified_sets );
: {7 J* u3 ^# F/ o% ]8 c: G  J4 t% z
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );# z- t5 m1 H# R1 ?" A# }4 h

4 Q3 M0 H7 k7 Q% I; Q/ z   for( i = 1; i <= num_of_classified_sets; i++ )& a. n+ J& {4 o/ @& z( ^6 {
   {
: U  {* `) Z0 L7 ^- I2 U      switch( crit_type )
* j- u. D2 B- y' c1 Y      {$ g( K% O) a  O. c8 p- t2 J
         case UF_FBM_GEOM_crit_value_type_double:
" U7 c6 L# ~  W; i5 \: T3 i            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
; p* [* |; i1 B# R                                             criteria_list[0],
( U% m3 Y" X& {+ ^                                             classified_sets, i, &value );/ h7 [* H1 l+ ^) `" A( z. X% h2 L
            break;
2 R  m! m; v. e( A& K         default:
: l  j* i3 f+ X% D( A4 r& s5 h. k! c            break;
4 `/ \. g" @0 }  Q! C8 \# ^. F      }/ }/ B/ i. p) t1 E
   }9 m4 U6 |9 ^( F5 x# g/ v8 j, x8 l

) L, Q! e. H0 h  R1 ~6 s   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
' ~& ^1 G# [1 k  V: X1 {$ n. }+ R$ Z2 u& D6 Z/ K, E% X! Q% i
   return;
0 u# \& N( g1 Y5 J: y" T& i}
7 E) t# d: r' G! \. c5 d- x+ s5 ], h7 t( u7 ~
int ufusr_ask_unload(void): u# U7 r$ J5 K7 C
{. S5 g% P, S# L, p, b" v6 I
return (UF_UNLOAD_IMMEDIATELY);
7 d" c. k: U" t, l}
! j( {. @  o5 V8 P- z
8 a, g. d3 X! Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了