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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

% [4 h$ M) v4 `2 S
* m1 Z, k" a  r( }- I6 w
5 o5 e$ T5 B# w* R5 u4 u. \8 Q6 b/***************** Include Files *******************************************/
+ H) s; I  N, b* {8 Y5 J1 D#include <stdio.h>
4 R" b7 V  B4 O# u2 p+ f#include <string.h>$ K* m0 l: p2 w9 S, O" i8 O
- ~# ]9 I1 h7 O7 \+ p" R( [
#include <uf.h>5 T/ l1 d; |; I: ?- Z
#include <uf_defs.h>! j% F, ?3 Q$ s  g4 ^
#include <uf_cfi.h>' f, Y6 l" l; p3 y
#include <uf_cam.h>( N5 Z* W( B# c; o& Y4 A* g
#include <uf_ncgroup.h>
7 h. j' a7 N# p5 F#include <uf_part.h>
1 O2 L- X% C1 ^7 c, Y/ r#include <uf_setup.h>
& F6 {" e7 S/ v#include <uf_fbm_geom.h>" Z) n+ q6 ?5 |5 M5 L- i
#include <uf_ui_param.h>
" u) x8 \  A2 i
' g- O8 j( T+ [8 U# Z" F/****************************************************************************/5 ^& `% q, w( m& b" `1 K% D

" U4 u; c$ j  i" f5 {extern DllExport void ufusr
- c7 u0 g7 X8 H# _1 \5 b4 k( A(( g5 L+ e  ^# Q( n% E5 G# n/ Y5 l0 ~
   char   *param,
1 C" T, A" [* t; _+ u   int    *reTCode,
8 H! e1 n% Z. \& n$ ^7 H& ]   int     param_len9 Y, ^& s3 E/ o" x: z
)
  {2 i0 e# R" W  x% X. J! |{. y4 }1 W) p0 ~$ M5 U- o
   int error_code = 0;
! S4 l/ X# \+ I( u- B" @- e   int i = 0, count = 0, part_units;
' L9 {& ^) `+ c6 |   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
- C4 f! }6 a$ i  H# U   char *env_trans;
( h+ b% q+ K5 D   char opt_name[ MAX_FSPEC_BUFSIZE ];
) r6 X8 a3 B! N" e* ?   char part_name[ MAX_FSPEC_BUFSIZE ];
9 `* O9 e; r5 s   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
, y, c0 G# e" o5 Q   char  **feature_names;
& f( d! m0 ?0 q* g: O' [! F! z   UF_NCFEAT_t *features;
0 ^' D. K5 ?5 Y8 `8 P9 m3 a9 h
; ]) {. R# P; F& e6 W# Y: d   tag_t setupTag = 0, wp_tag = 0;4 M7 a6 a# Q3 k, b3 ~: X4 e
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0; 2 ~0 b# Q' \/ X7 H$ b5 |
   logical answer;! x9 u: R3 i9 T1 @$ F% r

# O' n. v5 O$ j5 T$ g* L6 H1 N" r2 b8 M4 f0 E   char **criteria_list;
1 m' ?- q6 M' V! o% o# [% E   char                         **criteria_to_consider;6 ^0 w% G" [5 }1 j
   int                           num_of_classified_sets;
% [& m% ]  `, _. a+ }   UF_FBM_GEOM_classified_crit_t classified_sets;
7 p; V4 T: I" a! b; z% n  n1 |( G   UF_FBM_GEOM_crit_value_type_t crit_type;
9 L, r% [) J/ ]; g0 ~# C  b   double                        value;2 i0 w. O9 t" c+ k' Q7 _: l
   UF_PART_load_status_t         load_status;7 m# S0 O( Z0 Z. _$ g

+ Y5 h9 z9 s: ]" G  N* P   *retcode = 0;
; N# n7 g. U4 g, M3 N+ V$ r* Y, Y0 {& ?3 e( a! K
   error_code = UF_initialize();+ K% p8 r/ A$ f! t
   if( error_code != 0 )
3 B  V" g! ?5 P( U6 m/ ^6 |   {( ~+ g3 l, t. Y& r
      printf( "Failed to initialize uf %d\n", error_code );
" M! b4 |+ {: j      return;+ W  r8 k( `5 \' U) z. D3 ?
   }
: W7 d/ b) @6 u8 E
5 f3 M% M5 |! f4 R' q" S   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), + y4 s; a: l& M8 M/ p0 d
                                                       &error_code );# K' ^0 O4 Q, u$ p
/ ?2 X3 |7 `9 c. d
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
* x& V/ R* P( q& Y. h                                                 &error_code );! O; y/ L. q9 o1 G$ s
# @% j: v* ^9 h0 X: y

7 f* x3 x3 s& @$ D1 h   /*** This program works with the part files in the CAM samples directory. O4 b3 I$ I( V- x% j
        so we need to get the path of the directory and the file name
- x0 K) c1 f7 l* o* \+ t+ h8 x   *****/0 c! M6 Q' ^& J  s, b
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );# X! t- Z% Q$ m! c/ ~
   strcpy( part_name, env_trans );! E0 S# |% `4 n" s' I! S+ o
   strcat( part_name, "cam_holemaking_base_" ); * J0 n( W: ^- Y5 H0 N
; P9 ^4 U" H( L$ D' T) e( M
   /*** If no part is open then open the part cam_holemaking_base_in.prt% Z4 i+ ~% B7 N5 e, k! {
        from the CAM samples directory
2 C% ~- }* A2 N3 E$ Q- h        If not check to see if the units of the open part so that we can open- w$ c4 a9 J' B. V6 [/ U2 x; J9 W
        the same units part # s3 H8 w! G" i
   ****/, B; e# C3 ^# ]6 K6 q
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )* k, t1 Y) t( h7 a6 d( |7 S& [" j: Z
   {
- j/ F0 x6 [! k( s2 N       strcat( part_name, "in.prt" ); * H+ h& b) G% ?# T/ N
   }3 C+ a. k, m( x" x. j8 g
   else
: h4 p! G! N+ i% i4 q9 W; b+ |   {
+ U: V9 M# }0 q+ O$ l# ]5 [      UF_PART_ask_part_name( part_tag, open_part_name );; o2 ^5 E7 j: s+ n( e! f2 ^
      UF_PART_ask_units( part_tag, &part_units );( B# ]: w- N' A
      if( part_units == UF_PART_ENGLISH )$ B+ \/ u( z6 \2 t: N
         strcat( part_name, "in.prt" ); ! y" l; ?- K; R& v- \3 }! S* L
      else
$ ?/ A$ b4 L7 s0 `         strcat( part_name, "mm.prt" );$ B9 O( h3 a( O
   }! J# ^/ I# }- f) V. V7 v
& u1 W( J  p5 r$ S
   /***
; ~* a6 @5 H& d        If the file we are trying to open is the currently open file
2 Y+ O3 z% ]9 A        then continue on8 p' z$ E( G5 y, ^7 H
   ***/# i4 ?0 s! p5 t; ?. B
   if( strcmp( open_part_name, part_name ) != 0 ), u8 l& l) \7 p
   {/ P5 u+ e$ H+ u
      UF_PART_open( part_name, &part_tag, &load_status );. W* Z, M# \& t
   }7 {/ K* n) d+ ^' V# e
, n( C5 W+ a8 M0 I* c
   error_code = UF_CAM_init_session();
6 c! u) g& c& `& u" Q. d$ z5 p8 S   if( error_code != 0 )
6 S) Q: l: y8 j# m  Z. Q  |   {9 Q- ~. _, w& j
      printf( "Failed to initialize the CAM session %d\n", error_code );
4 X$ Y$ z, _" B, A5 x6 }      return;  B, ^1 C8 G9 [+ p
   }5 c! O7 b3 H& z
1 W8 T$ D& }+ s+ G7 `4 a
   UF_SETUP_ask_setup( &setupTag );
) C& b. M+ {' ^- R% h8 G. O! c/ f5 D   if( setupTag == 0 )
: s, J4 i% [9 m* u   {. y7 I' T. W3 E/ [" Q
      return;
! M4 t" ^1 t/ c$ s9 x/ Q! \% L$ V   }
/ ~7 c/ R6 f& V4 o0 A/ @- A- @+ ?; r9 l9 ~9 |) r* H! r
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
$ ]+ Z5 s4 l+ P) R3 @; G   strcpy( opt_name, env_trans );, P. p0 T' A0 {8 W7 v
   strcat( opt_name, "hole_making.opt" );  ^" e" n1 Y- Y4 c2 y

5 L% Y! z! R/ c   UF_CAM_reinit_opt( opt_name );
/ r! N+ i$ a* w5 t; X' j' m% E* ?4 t; a+ r! o7 l$ w
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );4 T  U% \* F8 y: ?2 A

7 X# G, D" S$ r- l* x8 P& p2 q! Y   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );! X% P0 n0 ]$ i1 C2 o0 V  ?
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
! |7 g1 A' j3 ^6 m   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );* m4 `% [+ E5 P; G- T& P5 x
   if( answer == TRUE )
1 C# |  R8 c0 T7 |      UF_NCGROUP_accept_member( wp_tag, geomTag );
8 I( P2 h/ V8 }- N# b9 C7 Q   else
: s: d7 {0 h7 ]% G! o. M% L" C2 ~      return;
$ ~; ?. e! r% D4 i" o4 |' f. B0 f4 Y4 \+ y
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); . j; `2 |- ^1 Z3 F9 J6 D: T

  E* e% _' D6 a6 N- T0 o* m3 A   if( count > 0 )9 M7 i& a9 e1 S6 P8 g" S
      UF_free_string_array( count, feature_names );3 N% a. q2 B4 R2 h' I& N

$ B( k1 l0 F" u' Q   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );& G+ }! ?! T6 E: x

1 F) o2 q% z! U3 b. ^  u2 B# ]   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
, k9 g' y$ b5 k& a3 V6 x3 H4 C: i1 [" z4 u: d- O
   if( count > 0 )
+ v* X* Q9 N# x" r7 y/ Z0 n; S      UF_free( features );
, [' X. V& M7 Q. ]5 B  m   else
' I6 }3 P2 T2 g9 o8 m      return;7 ]! ^9 ?% i1 b" T

; m4 g! L" v& ~& t& G+ _; _   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
  @+ \$ p4 p0 L1 u* f( Q& ~- |7 z% i  {5 T) c3 J, o/ o
   if( count == 0 )$ ^3 E0 A- w+ u" u& {  R2 {
      return;
# Z, t7 V2 }. \8 Z9 @2 j. }
: I* R: y0 X6 f6 E   strcpy( criteria_to_consider[0], criteria_list[0] );$ e" W9 g6 J1 D+ T( ^) S% m. ^

, |9 n  d3 S( B4 ~1 c3 n4 [- H   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
6 I& \  m3 V1 @% ~+ ~7 u2 U                                     &num_of_classified_sets,& D+ r2 F+ k8 u$ z# z
                                     &classified_sets );6 F6 E& ~4 [! W4 z/ J

$ [+ l; t  x/ c/ o7 @   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
9 b9 v, o3 u! f8 T4 g0 f+ E3 \" h, @
   for( i = 1; i <= num_of_classified_sets; i++ ): d% O8 x: C9 K1 L; f
   {
/ P1 y+ o. `* Q! Q1 N& ^      switch( crit_type )
3 C1 G/ E' w" }+ o3 d      {& _$ H( y2 Y0 Q( B7 I/ ]( W
         case UF_FBM_GEOM_crit_value_type_double:
2 M/ E2 \/ q& \' ?            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, : x9 R: ^' \- e3 v
                                             criteria_list[0],
. I" z$ S7 b; s                                             classified_sets, i, &value );/ T1 _4 G; `0 S% P) K
            break;
1 n) N0 R2 s; S; o1 W; u         default:
# d/ M9 e6 w% W5 k3 G) L1 y            break;" p" t% j9 U& Z6 d8 q: Q- C+ M' _! J0 i( t
      }
# D7 o, o" h& A2 j+ w# A# ^   }
2 h4 R+ i! M6 K* B  t* Q# y; @5 }! a7 m8 ?
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );# u5 o2 I, N1 g8 {0 ^" E; S. p- l

4 m/ G; f& W2 o   return;
$ s  e0 ?# }! g8 }1 J6 u}
: W9 z) w8 N+ K' U7 D8 P9 L! a2 l# X! z5 h" o! G7 O) ]
int ufusr_ask_unload(void)
; I3 i! f. p  W' [{
( t7 g7 |1 ^$ T; F1 O return (UF_UNLOAD_IMMEDIATELY);
$ D1 c" v2 C1 f. ~. w# [}- F$ P1 }% q4 f- z

$ C; ]. X8 r  ?  Y# P1 T' {( u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了