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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
# b" b8 b" _7 P+ C

1 R! M/ |5 e; x' ?- [7 v! C$ i# @" d$ d! y% D
/***************** Include Files *******************************************/$ A# h7 T: x& b+ Q: `
#include <stdio.h>
# u8 S9 z0 x( R2 V! m* g#include <string.h>
; F4 E" g4 Y( ?( ?; `$ [
. z$ B3 O3 d+ W1 L6 U* e" z! Z" j#include <uf.h>
7 L2 p/ L1 M: L- C7 F#include <uf_defs.h>
: B" {; I7 H, b; t#include <uf_cfi.h>
  y$ Z# B) a, q: k7 m* Y#include <uf_cam.h>
+ `; f( V8 C+ \! {1 `/ E% z$ b" V4 i+ {#include <uf_ncgroup.h>
9 y) W( o" _2 \$ Q2 n#include <uf_part.h>
  M2 v! D6 f, k( X& @5 `* _#include <uf_setup.h>  w, ]6 M% c3 S0 K" G/ v
#include <uf_fbm_geom.h>
+ k3 c1 o7 U$ C; a#include <uf_ui_param.h>
4 P! e# C  T( ~4 l7 }, P  L
% ]) p3 W  A' r, N, C/****************************************************************************/
% J3 K5 U- Q$ e9 ?: j+ A( S) _2 A2 |4 j9 p' z6 _. W
extern DllExport void ufusr # |# `7 I9 O+ y& m3 Q7 w: x, N# h0 i
(
3 _0 ?; A$ S, Z. D+ i   char   *param,
, q3 q8 g1 s$ k4 K   int    *reTCode,6 `, r; g6 T( Y/ P; F4 `" \1 a
   int     param_len$ U1 x( N: x8 O$ M9 k
)$ X3 a( ~; Y! |1 T: |1 B1 \
{
' c$ |# G' M, z   int error_code = 0;7 x9 V( t% l" m/ r! [+ d+ t1 ^
   int i = 0, count = 0, part_units;8 {0 n+ w+ D$ C, F% |9 [
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
* ~9 o0 G2 J6 _( j- u   char *env_trans; " x! N. ^3 H% ]
   char opt_name[ MAX_FSPEC_BUFSIZE ];
  j+ M/ I. J% Y. l% {   char part_name[ MAX_FSPEC_BUFSIZE ];, I1 z8 m2 m; U5 @5 v- e
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
& j3 s# e+ a( r2 @% V1 e   char  **feature_names;4 c$ Y) [# j9 s: l
   UF_NCFEAT_t *features;
0 a$ ~; b% e: o" N
1 F0 I+ I; ^' o5 [   tag_t setupTag = 0, wp_tag = 0;
' r1 f  O  N; S/ G. ^   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
- P2 _" J/ e. [% w2 @( A   logical answer;! L% C% W/ A; H! @- A$ D; R
7 A' L* f7 j* G' Y- {) a: ~# R
   char **criteria_list;
, S: ~; O. c/ Z$ i   char                         **criteria_to_consider;6 [- R+ h: Z! ^2 \0 M3 B
   int                           num_of_classified_sets;0 k  ~" M1 J2 U- U4 t  o4 e& ~
   UF_FBM_GEOM_classified_crit_t classified_sets;
" o, p/ p* s; F; K9 V5 @   UF_FBM_GEOM_crit_value_type_t crit_type;. d8 V! I/ _$ i' c9 [" a+ ^: S, s
   double                        value;
  X! Z7 r4 c* J   UF_PART_load_status_t         load_status;
& ~4 z( n1 O6 f
9 @- t2 F: t1 c) L   *retcode = 0;
, C/ U& d) L- o' d8 @* z  T/ O2 z1 B/ o  [! E
   error_code = UF_initialize();
1 D8 o; a6 E( V2 `: \   if( error_code != 0 )7 D3 d' W& O5 N2 {/ O: ?. L$ x# Q
   {
" ~( [- k! o! u      printf( "Failed to initialize uf %d\n", error_code );  W1 X! P) a% T- ~
      return;
: f# D* F0 b3 [; e5 k   }7 S0 C# S0 T& g& m1 @# J
* H: L* T) E; ^3 U' w) B% R
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
: b5 Y) y' U: ^# T                                                       &error_code );
7 @9 s( C( b7 V% q
9 L/ }( V7 L6 F, {, H2 ]" I   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, ; \2 \8 U' R3 d9 }' R
                                                 &error_code );
. t. u, Y& X: ?, N& E
& M, N6 ]$ J* w. ~
' G0 R3 |# ~5 h" D   /*** This program works with the part files in the CAM samples directory. V5 W4 D8 G. d' W8 T
        so we need to get the path of the directory and the file name1 D7 v) L* t8 N; F# z3 Y
   *****/' }. S  P7 ?* i- }0 t9 l5 X
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );7 [& ]/ u8 z1 I. O; Y
   strcpy( part_name, env_trans );% E$ O2 C2 W3 j* ~* M. U1 L* {
   strcat( part_name, "cam_holemaking_base_" ); 3 w2 f# f& t3 Z! g' K

9 W( l  H- x7 d   /*** If no part is open then open the part cam_holemaking_base_in.prt
" L& r9 U; Q. M( U& {4 c% ^* D        from the CAM samples directory
( I) ]& W, Y2 Z3 k. F# k        If not check to see if the units of the open part so that we can open) S; D# J% j/ b7 a9 I
        the same units part
& g3 E+ b6 P+ Z% p   ****/* b' O2 C3 l" B& A" s; b% m
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )/ @; a' s" Z* Q/ V  z- A# F# h
   {, w# D1 {" F* L0 X
       strcat( part_name, "in.prt" ); 4 p4 |0 J% Y/ ~, N9 d: L
   }
6 w8 a, T3 ~  {% Z  z/ {) t   else3 T1 Z! ~) b+ q; R& [  f, }7 N3 o
   {4 h8 ]5 l' Y6 u7 D( f: j% A- i" ~
      UF_PART_ask_part_name( part_tag, open_part_name );
, M+ G  ~, z8 v' v      UF_PART_ask_units( part_tag, &part_units );1 A% e8 a$ Y* b" Y& [- J
      if( part_units == UF_PART_ENGLISH )
7 o4 S0 V- ?' B! u4 s, |         strcat( part_name, "in.prt" );
( X8 d4 Z8 p1 m8 m2 s2 w" ~5 }      else
. a" q- H/ j* Z; s2 }         strcat( part_name, "mm.prt" );
( d6 x0 _; `# O& S  I/ |7 C) ~   }7 I' {6 O; h" t. m/ Y9 W  {# x

4 f9 C9 h8 p# N; J2 o: t0 o' N0 m; J  c   /*** & B( U# S% m$ ?2 m
        If the file we are trying to open is the currently open file5 M4 D5 t4 H3 h/ O' x! p& U
        then continue on+ D  [% L) c4 k& ]2 G0 @: [
   ***/
) s9 ]7 r% t( p9 H3 r; a* r   if( strcmp( open_part_name, part_name ) != 0 )! s% r8 b' \. i" [& y
   {; x' A3 l# b$ ?9 a& d1 j0 O
      UF_PART_open( part_name, &part_tag, &load_status );, ]3 R9 g# f  W6 ]& x+ P0 ]
   }
# u0 k; q# G2 m5 P9 h
, @8 @( P4 j! o3 O- n; m2 Z   error_code = UF_CAM_init_session();
7 k. i2 q5 i, s  S- X6 P   if( error_code != 0 )
. W& z2 E3 N" k0 O" |& X& B, a   {
& x2 l4 c3 |% D2 S) j. Q      printf( "Failed to initialize the CAM session %d\n", error_code );
7 ]& `$ k' C$ Y! Y( Z      return;5 P' w. D& Z' ^2 e1 P- b; a& t
   }( c$ Q( N( U" L  u
0 S5 {( r2 l$ A( m2 {" S: {9 h2 |
   UF_SETUP_ask_setup( &setupTag );( E. N9 g- N7 Z; t2 Q1 h
   if( setupTag == 0 )
* p9 _. Y* @6 Y7 |+ |# S% m3 L, q   {/ `: P% y+ c7 k
      return;3 @- f0 v# _2 T$ o- y0 b& G
   }& a8 c( \$ Z$ |& v. E

! T  v# h. q1 g$ I2 l2 S- `& m   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );; v  Z! P; e; ~( U+ ?( j
   strcpy( opt_name, env_trans );" N( ?, a! g, V  e: @7 L$ e4 b8 D* ^, j3 Q
   strcat( opt_name, "hole_making.opt" );
8 O- }" c% w9 B3 v3 `5 T3 c' {$ N
* S2 m3 |7 J$ Y; `! N& P   UF_CAM_reinit_opt( opt_name );. L9 P( J5 n0 Z$ |1 g- m

6 W5 n1 ?* Z" k$ W% V   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );1 U& ?, g# ~( D, _2 D
% E- U7 d. l! O* j# t
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
! N& h9 N5 K5 D( h; v2 z   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );$ V2 ^9 ]3 r: i3 y
   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
2 v9 t: j6 t8 X1 o   if( answer == TRUE )# I( ]3 K: l8 h! L( h7 v
      UF_NCGROUP_accept_member( wp_tag, geomTag );
! q- ]4 r: m! q$ a! Z   else
. K9 Q- S! S7 ^6 I# e* s6 r4 v9 e      return;& I9 t. l' L0 J0 m; W9 s, C6 n

! D$ {2 I1 x8 ^8 v   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
8 [! A0 I! r* o" I! z- D) l4 s. w8 O
/ S" C5 ?$ p8 h8 T   if( count > 0 )/ [" B4 \  K3 C" s6 K& {
      UF_free_string_array( count, feature_names );3 Z5 f1 s# ^1 A" a  M6 J, q
/ L5 a/ |6 R3 W6 a9 Y0 d$ |
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );" m, F  c1 h. k9 t

0 _7 R& ?2 C% T+ X' M   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
6 ^7 T2 M% L8 Z9 q7 S8 l1 z" ~* R$ ?% b- M( v- p7 V
   if( count > 0 )" c. ?7 C% u7 g/ O) n. a% t
      UF_free( features );. g8 k! _9 q& U* Y, q5 r& ?3 h
   else
& {' S5 u  x; u/ |/ [      return;5 _% \1 Y1 O# V6 {7 q0 G/ U, f5 H

* V; P' F6 c$ B; b; T   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );* {1 h5 w+ ], U
2 N. o' e2 _3 c  u9 K! W1 O$ c4 c
   if( count == 0 )
% A& C; z$ L. l* }      return;
$ |& g, S7 H: U! D5 E6 F' c  [/ a$ V
   strcpy( criteria_to_consider[0], criteria_list[0] );
4 l5 O4 W) q- `9 E; f; G6 ?+ u  Q* @- w7 ?# F5 J# J4 K
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
1 x( m( O$ e' A" a8 Z7 m: \                                     &num_of_classified_sets,* H& d% |: j) S( Q
                                     &classified_sets );$ J. y: G$ T) U6 C

* Y8 n6 m! }4 r( D, M   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );7 m4 d- |: |) v
1 x( D( k! v0 j
   for( i = 1; i <= num_of_classified_sets; i++ )
9 G# h0 g7 u8 M0 V   {6 v% e- r3 ?  R4 M) B
      switch( crit_type )
' L$ b" w: H6 W! `      {' N. ^" z2 f" r* Y, e
         case UF_FBM_GEOM_crit_value_type_double:5 k: @9 o  {* |. H
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, + o, d/ X7 ^, b( [. W7 c
                                             criteria_list[0], - E. V" h& z  d" B- q$ r, b0 h3 N0 E
                                             classified_sets, i, &value );; X! J. u2 Y" i3 n
            break;  d6 A6 ]: S* S* Q& a4 F
         default:
- ?2 @1 u* J8 y! o) k8 e; q. l            break;
2 d: G0 q% }# s$ `1 }" |      }) B$ l% Z# |" }
   }
: Z1 Z* A8 l4 O1 w2 Q) y- R' B0 l8 ?8 I3 i3 V+ S; I8 J" G! X2 ]
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
! ^  o, J$ ~1 z
- y- A  f4 ^9 m   return;
5 E0 E1 V9 n$ a& l2 g! S4 @}
) O3 ~) k+ ?  V( E9 s- N" Q5 K" H
4 F. G; _0 ?/ F, `: Sint ufusr_ask_unload(void)2 V+ h+ b! `# H7 k) _& ^- S* s
{
" C& F3 @& y) C, w$ c' \ return (UF_UNLOAD_IMMEDIATELY);
. F5 \8 A  E* P2 \}$ a$ t6 K7 I6 {$ j' f

0 M  @: }+ F' R4 O9 z6 d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了