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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
0 R; g/ j; a) s1 ?

) c: U; x, p! W( R: L# ^7 e6 z+ J3 \$ @0 w! i1 L1 y  ]! A6 ?# h2 C" I
/***************** Include Files *******************************************/, l, W1 t$ Y& E$ s5 ^6 j* u5 S6 |
#include <stdio.h>) L3 w" O# h. q$ o; h+ E* }: ?3 ~
#include <string.h>
& A5 L2 Q- i) B" y5 w. i
* ^  C) u" Y& T( C" V- t) r7 Y#include <uf.h>
) |0 [* x2 D9 T" i#include <uf_defs.h>' C3 C) i# w/ `' u
#include <uf_cfi.h>/ e  |1 ?" K5 B" x3 f/ Z
#include <uf_cam.h>
6 c# C& N$ q9 `9 ^1 Q#include <uf_ncgroup.h>
' n2 k- O1 J% ~# \% i#include <uf_part.h>
$ j+ }* d4 u( n#include <uf_setup.h>
/ |+ P2 o0 n: j8 i! B#include <uf_fbm_geom.h>
( K0 l9 V$ G8 r. ?" f#include <uf_ui_param.h>6 F) V" w- @! {$ Z' d- z# H
+ f( ]/ \" @7 t# q9 `
/****************************************************************************/8 }6 ^8 h9 ^0 W3 V: f0 U0 K

( ], U5 H7 Y7 \0 Q8 q! |6 rextern DllExport void ufusr   N7 y% H, G/ T! h/ @
(
( I+ {1 _/ d* }# ?   char   *param,
+ w# N3 M( K1 [* F  @( P' s1 e   int    *reTCode,
! m- x- R5 o5 I9 z+ Z' b   int     param_len" N4 ]7 ]! t" G
)
7 `& Z! y8 H( ]3 T3 h{
9 V- ^0 N! w! ?* a/ _   int error_code = 0;
8 p, [$ @1 j$ \" _% j2 {   int i = 0, count = 0, part_units;- q* l' B- S2 d- v( m$ x
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
6 L$ N! ]- ?& f; }0 C; b5 m   char *env_trans; * V4 o3 }. E' u  W5 w
   char opt_name[ MAX_FSPEC_BUFSIZE ];
2 q5 a+ C! I; o  g# x' o   char part_name[ MAX_FSPEC_BUFSIZE ];
4 R( B! ^! k. h- {   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";4 B8 l1 j1 i2 m9 j/ X
   char  **feature_names;
8 ?' B+ c5 p  d+ R( |: {2 [   UF_NCFEAT_t *features;9 O9 @$ x% J6 j
; H/ q! n& A$ P7 }- N8 D; k& X
   tag_t setupTag = 0, wp_tag = 0;/ O, Q2 @6 G. u8 H
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
: P' O) G0 `. \   logical answer;1 L0 Q5 M' ]7 p) M3 ^

9 }7 b( L/ k! Z+ p6 f4 E   char **criteria_list;5 W  }  v0 O% U) l
   char                         **criteria_to_consider;
+ t' Y3 n7 P! \" v  l' u$ i   int                           num_of_classified_sets;
, t) M5 G/ y( u   UF_FBM_GEOM_classified_crit_t classified_sets;
& ?" I* f$ O; g4 k0 {1 C   UF_FBM_GEOM_crit_value_type_t crit_type;9 I  J) ^' R4 |2 }, W
   double                        value;. i3 t  h6 S8 Z9 }
   UF_PART_load_status_t         load_status;( E2 @0 q6 t0 Z; `- Q3 ?
* A+ W! o! l( U
   *retcode = 0;1 g0 j  j, U' ~. R- T8 b. h
" t" f0 t; O9 S7 e
   error_code = UF_initialize();
: v! J# s9 v- D5 x( `9 R   if( error_code != 0 )( X4 \. f, \0 w. a/ K+ h) N
   {
# M) ?( n4 |* S& Y# [0 L! ^. `      printf( "Failed to initialize uf %d\n", error_code );0 t9 F" n5 l" R' p1 I7 }: b8 V
      return;
2 _2 \8 c' G% q- U. S& B' \$ r+ I; b   }# o/ w% z- U8 m5 U6 E9 Y

. s- d2 x  i, p& M) g5 H5 f   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), ( h! w% a0 r5 i9 b2 h9 R
                                                       &error_code );
/ E8 _* `7 B- S: W, Z* W8 C
- m/ O- N. v4 k0 `% p% P- a   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, & W4 }' L1 {1 {: N
                                                 &error_code );0 f0 @8 M1 g' a8 H- P
8 d( P) J0 T* E9 c0 ?

& M% E' @8 A7 }- h2 A& J) Y& Z   /*** This program works with the part files in the CAM samples directory
) u# V0 K, }/ v  ^        so we need to get the path of the directory and the file name
9 [+ ~; B( X1 Z9 w   *****/# H0 |6 X% Y7 F5 m
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );! |% N1 u: b' U1 K. F( p
   strcpy( part_name, env_trans );0 a/ k3 m# h. N  o
   strcat( part_name, "cam_holemaking_base_" );
5 u/ r* y$ |$ u  q
+ v6 v. M) E# W7 U/ r7 |   /*** If no part is open then open the part cam_holemaking_base_in.prt
3 ?7 E) M5 X5 }. }4 f        from the CAM samples directory - ?) M. I) |- r6 K, w) s# L
        If not check to see if the units of the open part so that we can open
  b6 `0 l8 P# u  k8 P3 S        the same units part 8 z8 u( n8 [- H! v- w; @
   ****/+ t* Y) e6 T! ]) W' y1 R3 S3 h
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
6 V) O% |& M$ R0 z  z1 [/ O+ \   {
& B2 i3 [0 l. j6 |       strcat( part_name, "in.prt" );
0 w  f1 r) u* i   }
+ P. k# H* c  e: }- V& C/ m   else9 j2 k# _4 E- u# }8 l' r
   {
* t) j. @- K. i, I5 \      UF_PART_ask_part_name( part_tag, open_part_name );
5 |- i0 o+ O0 k      UF_PART_ask_units( part_tag, &part_units );
) G# [: |7 Q3 {8 m" C      if( part_units == UF_PART_ENGLISH ); g7 u& S! l; `3 [
         strcat( part_name, "in.prt" ); : f1 o1 i' b4 F( l: T* B$ w% c# ?
      else
$ b2 |. i9 m8 ?. h3 o2 y6 C         strcat( part_name, "mm.prt" );
1 S- J- |; j- p5 O   }2 n8 d& I: E; y2 y- o
& _0 x. v6 h! i/ N5 ^8 I) h
   /*** " \) @# z& j  r; M
        If the file we are trying to open is the currently open file' D$ r0 H& n: D- e$ T/ Y4 ^
        then continue on
7 B# \9 K* O8 O   ***/
( a1 e+ x. h* ]9 M+ J7 W, R, Z   if( strcmp( open_part_name, part_name ) != 0 )
. l: z  K& I) }4 v8 {* ^   {* e; K7 P3 G) c/ n6 ]
      UF_PART_open( part_name, &part_tag, &load_status );
( o( ]; _  b7 d6 ^  N" ~   }
# P( O3 y, v0 P6 l. d0 C' a0 [; d$ W2 E: D8 C, J5 ^+ L4 J
   error_code = UF_CAM_init_session();
! H, R5 ?2 _( G9 |  }+ P   if( error_code != 0 )9 C' }( [: S& X/ y9 w
   {
8 s9 X" @, M& q% i. ~) y      printf( "Failed to initialize the CAM session %d\n", error_code );
& F- o" F2 M3 ^+ X& r      return;) [2 _- n* k+ k: Q& X
   }
6 C2 v( H) P2 w3 @$ z: j- ?9 [5 E; B) b. T" R3 R$ f
   UF_SETUP_ask_setup( &setupTag );
* N* R5 Q9 }5 y: Z; ~4 U   if( setupTag == 0 )5 C/ ~# q; V7 q# D
   {
9 G' Z4 v7 l8 o  p- K, {      return;
; g. L$ B( o% [1 l+ g   }( t, t1 W% y7 L% v0 X% F

+ j* U) s1 U, S7 i   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
! G& l2 \+ ~& G* d: L8 ?+ o   strcpy( opt_name, env_trans );6 C- u# U8 n  k1 b1 ^+ h" p$ C1 I, }
   strcat( opt_name, "hole_making.opt" );
% I& L% e" u3 {9 K4 P) I6 o; i  i) y+ N
   UF_CAM_reinit_opt( opt_name );2 r1 S' Q" ?/ T5 w  T" h
: `) U2 \- ^& L! J: H2 u  N
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
9 E+ x" p9 r) ~; f9 z
* H, o" c- f. @! H   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );) c! o% r8 q8 J6 R! X
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );* D9 r8 P/ _5 e2 {% u- J
   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );) D% ]. O4 A" f8 v( P7 k
   if( answer == TRUE )  G% L5 S: C9 b9 D$ j, k1 Q
      UF_NCGROUP_accept_member( wp_tag, geomTag );
; @0 W' D+ E8 A- F: M   else
6 \; L! P$ y% O- _/ b      return;
  G! e8 ?) X4 l" S) |0 M8 Z9 Y( k/ t2 z7 y; H# Z) S6 [
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
- N# y/ B9 V# E; W4 |# c
" i- O9 B: `& C# p   if( count > 0 )* Y8 i3 [, G: l
      UF_free_string_array( count, feature_names );
2 h0 V% m  u- ^) z9 j7 S& l
- p: C! j' k2 e7 B$ ^2 A   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
1 B4 n& I" k" ?2 N) B
, }* d2 E  W. Q& f' L8 s3 Z   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
, K% |# q3 A# R) G9 J3 T
5 `( v1 C0 D$ H+ g/ }" C! d   if( count > 0 )
& X1 w9 j, ^" g) d) p! T  [! h      UF_free( features );
' P& E# T; Y- P   else8 n. N8 i; `7 ]: y3 _
      return;
8 k) F$ a6 Z2 i( ]' B9 U) i2 B' b5 b% ]0 ]/ h/ i4 F
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
$ P# T* ?+ x$ _. P
7 K- Q) U( T6 B$ ?" y( H   if( count == 0 )/ L' w1 Q$ H3 e, x% J9 Q$ b/ n
      return;
) R. l' N4 }- c) H9 U) e( A" E
   strcpy( criteria_to_consider[0], criteria_list[0] );
! U( p% k+ E; M7 Y' G: f# n2 l8 U9 J
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
  P- u8 |/ c3 m. \+ N- d                                     &num_of_classified_sets,: G* Y9 s; a% Z: z9 k# t1 O0 L
                                     &classified_sets );: Y( o+ A) H9 L% r8 Q

  G. `; `/ U+ }9 I# {6 U, L( {8 R- u   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );8 O+ ?, N! t- y' J
1 Y* ~3 J# a! `
   for( i = 1; i <= num_of_classified_sets; i++ )4 Z; v) j: F" h) ?6 N2 h
   {
6 V9 V/ V5 O4 t7 Q3 |1 R; }      switch( crit_type )* E0 ?6 O5 u$ |/ s6 x7 P
      {
5 j) d7 R. a) p9 T/ J  H         case UF_FBM_GEOM_crit_value_type_double:- ^3 |+ p: C' W, m. S# d
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, : l: G" {) Q2 J9 ]$ A
                                             criteria_list[0], ' `5 R  T; W* x* D
                                             classified_sets, i, &value );
+ t' N. b/ z* ]5 w1 j; c( `            break;
, F+ G: D6 ~& R( L6 D( ]) u2 s         default:, ^- Z/ X: _' T# y" Z7 Q2 H4 Q+ a# u
            break;
6 C- C2 ?6 p' }+ N      }
2 b6 d; q. r& L7 {; r   }  O' H8 x+ S" x, n( v
' T5 L9 N( I: ?9 {* d+ M+ }
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );# s* q, L( p7 b' q

3 K& Y# u% m- H) c8 t% X0 @   return;  v' P1 d( P; i- b, r3 P
}  o7 {' z; j& y6 L1 {
3 j# [1 r8 O8 a
int ufusr_ask_unload(void)
. H3 ?( d$ t* l" z{
/ h& J! n9 J/ w8 \ return (UF_UNLOAD_IMMEDIATELY);
. x2 r9 L, M, U}! c& f7 }6 J& c! |' G

9 T/ \8 @% X& K6 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了