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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

2 {8 E) E- F: K  g
3 N# C& D7 i* a0 x+ v& e
, t, r2 u" i" ?) Y/***************** Include Files *******************************************/
* N6 x0 M  p; N; v1 A#include <stdio.h>
! U+ f/ p* l+ [. @#include <string.h>9 T+ E. ~9 Y; n
4 |, Q' _  n5 Z2 R
#include <uf.h>
# f' N: D0 n; `% m#include <uf_defs.h>
+ j( ]- A0 ^' `! b& @- p0 }- U- z#include <uf_cfi.h>- r1 z7 Z) T  V$ }3 x  k7 S
#include <uf_cam.h>( d2 A4 A$ P1 y: V3 {# }
#include <uf_ncgroup.h>
6 b+ B2 p5 T) u- e* a. a( T#include <uf_part.h>
  t4 ?3 T  a1 K1 }" h" z#include <uf_setup.h>7 u& j; Y# c; a7 K) R
#include <uf_fbm_geom.h>4 |" O, b4 d3 i# M6 {
#include <uf_ui_param.h>
2 l+ p# h) a2 O. A, O
) o4 k) O/ C+ G& ]& u& E/****************************************************************************/  `7 d1 M  V; l/ `
/ ?0 Z8 t# c) B* S- k2 y  @+ ]5 ?
extern DllExport void ufusr
( }3 z1 ]  H8 L6 n(
6 D8 m: c+ K! j# _* j- Z# j; ~   char   *param,
' I( S# k9 }" e. D+ }# v   int    *reTCode,# @/ C5 ^! i$ A
   int     param_len
/ y9 f! A" l  A% i)1 u  q9 U+ }, w% F
{# m  o9 O/ d: T# J* g, _
   int error_code = 0;
, _/ t  }& {/ D+ B' @% M   int i = 0, count = 0, part_units;
4 ~) C1 ~9 d6 p/ o7 B   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];$ C& m# `6 U4 @* F6 |
   char *env_trans;
/ m6 l3 @  x7 {) x   char opt_name[ MAX_FSPEC_BUFSIZE ];% i# R6 s% A2 ]3 o( x" q1 g
   char part_name[ MAX_FSPEC_BUFSIZE ];: ]9 g1 \0 v) |" G$ m! g( q
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";: u$ U/ P2 }" C; V% k
   char  **feature_names;$ k- N  `. M1 J% Y+ ?9 I
   UF_NCFEAT_t *features;& H" J7 y! }8 \" x  `
/ X/ i. J" _* B
   tag_t setupTag = 0, wp_tag = 0;
6 d2 w9 Y$ _2 ^  I2 B9 @7 U9 M3 d   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
& I. p, D7 e- q- j   logical answer;; L/ Y0 P; S+ n, G
! ~+ s3 M! J; B1 P/ D# N% ]3 Y: f
   char **criteria_list;
* g, u, @- b/ F5 D5 w) ]   char                         **criteria_to_consider;
$ y! s9 T- r" |   int                           num_of_classified_sets;6 p# q1 {# i8 N3 [2 _
   UF_FBM_GEOM_classified_crit_t classified_sets;% Y! l* Q- Y  b  k0 i7 Y
   UF_FBM_GEOM_crit_value_type_t crit_type;
: y% b& A/ |7 J0 w9 p, P3 b' e% D   double                        value;$ Q0 y5 D4 ^, p  ~& U3 d) l
   UF_PART_load_status_t         load_status;
- T2 D* x" W5 ]8 W! C+ j/ w" f$ n/ C' G7 L3 F; i1 j
   *retcode = 0;. u) e9 R! O, i3 N+ q0 e

2 Q! ~* B$ M" o" F: x   error_code = UF_initialize();
$ H) d! y8 F- n& w   if( error_code != 0 )
8 G5 m. W% T/ G4 a- q% v. @- a   {  K* ^; p# O; G* _( Y# J8 w2 d" b7 \1 o
      printf( "Failed to initialize uf %d\n", error_code );
1 a3 Q6 l, N: A/ ^. O      return;
) y' D3 O7 R; H, y5 u   }8 ?7 ?, P9 e6 d" O% j( j
# w. i$ q& ?% u+ t, A% x
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
& X/ X/ M( p& }8 o                                                       &error_code );3 G5 S; ]7 h4 N8 e

" U$ K7 H" F0 T5 j( [   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
2 e! D4 D8 N$ n: v                                                 &error_code );! v" Y& {2 @) {

/ B, i0 I: x6 Q3 g& u3 c3 {4 V2 Y6 B# _) S
   /*** This program works with the part files in the CAM samples directory
& v% N1 S$ n" h7 O7 g* j        so we need to get the path of the directory and the file name! D/ Y' U: D" k' C- {) |
   *****/
' h$ Q: H9 O, P0 @0 ~7 W   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );
) @& a. L/ C! A2 _   strcpy( part_name, env_trans );
8 ?2 ]4 I  Y  o: Q6 {   strcat( part_name, "cam_holemaking_base_" );
4 f. N$ k, k0 @0 C9 w/ X4 y" E+ N! {- b0 }
   /*** If no part is open then open the part cam_holemaking_base_in.prt4 O+ \( O/ ~5 C1 h3 i# |6 \
        from the CAM samples directory ' q* T" K- G. }" U3 L; d& e
        If not check to see if the units of the open part so that we can open8 j% ^7 e6 c4 }6 n0 M
        the same units part & _# j: |+ ?8 Z$ X3 {
   ****/
; a- A  ]/ o- e* R5 `  ]- s/ R   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
/ p! j& D5 D& n0 w2 c4 u   {* }4 T& K7 O! \9 v# e, ]
       strcat( part_name, "in.prt" );
- d7 Z# R* E2 h  W) D! Y! w   }, y0 ^+ _6 S" D7 y& p' I! ?$ v
   else
8 C! t, t$ O, T* w( ?+ N   {. D. w* {9 u4 _2 t
      UF_PART_ask_part_name( part_tag, open_part_name );
9 n' S! F  O/ a5 c/ L& ?- c      UF_PART_ask_units( part_tag, &part_units );5 R0 l: D5 M; t
      if( part_units == UF_PART_ENGLISH ): D$ l/ _& @" t& e
         strcat( part_name, "in.prt" );
  i& r  b$ X  X9 F; i      else' W  W7 U7 i, U& W8 b* f; R
         strcat( part_name, "mm.prt" );
; U- E" `! z" ?9 E- T! s! d: X7 }  I   }  n8 e$ u$ P3 m' q5 o" v" Z" U

8 B+ `+ ~+ Q. n+ L5 d% [; h, n0 X   /***
1 k) a' m/ h5 e" P$ y+ U% t        If the file we are trying to open is the currently open file
$ j) T+ Z4 n3 c9 |6 A/ K        then continue on
6 t5 N% G6 c7 F6 J$ Y3 d, W   ***/
! D. p( T7 ]; a, ?. _- E9 O   if( strcmp( open_part_name, part_name ) != 0 ); `! Y. \1 z' j5 I$ F
   {
3 F# w. _( e9 V- b, @      UF_PART_open( part_name, &part_tag, &load_status );/ G1 K- D' N9 b6 ]8 w: C5 s* R
   }
9 U+ t* O" R2 E; t9 d$ B/ D, @% K& M0 [, Y' t# W
   error_code = UF_CAM_init_session();
) l6 O2 x. A+ P; Y   if( error_code != 0 )
# B5 C0 W! i/ i3 d2 \7 z   {
: V- M) _# o# Q( r1 s; s& U      printf( "Failed to initialize the CAM session %d\n", error_code );! B8 T/ a% N9 n1 c, C6 {: J
      return;
& f. o3 z" ^9 t0 A- |   }
7 b9 U# D  t7 a% d: w
1 w1 G9 p& ]: T& c   UF_SETUP_ask_setup( &setupTag );
, H9 ^- l6 }% A- n; l   if( setupTag == 0 )
% e  {( G& S0 ]* R0 p   {9 Z: ~/ r- \" S. ~, Q0 V8 ^
      return;
  x, |) M  z# ?" I( [% [" y' A   }& v3 A  |: r+ J" N

6 h) d- p- y% _# t   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
9 M& h+ x/ s+ ]9 }3 ^/ \   strcpy( opt_name, env_trans );
$ `1 {* u! }2 \" k2 F8 N4 e   strcat( opt_name, "hole_making.opt" );, L  j" O: ~' K+ }1 b

+ c% |1 w8 V/ n+ M   UF_CAM_reinit_opt( opt_name );
0 T5 G* M% J6 C( a) Y0 V" V2 Y- u6 h3 G3 n
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
: @8 r0 z& I4 \# v8 b! V$ t, u2 _
5 g. y5 f0 k2 y  [   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
/ U# w7 j4 j6 G8 `; s& g3 V3 c   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );/ U; v9 x) U, U8 {/ ^' e
   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
' R: F& X2 ?, l   if( answer == TRUE )% W" V6 y: ~  h+ X, y$ U
      UF_NCGROUP_accept_member( wp_tag, geomTag );7 z. ~$ s$ ]$ d3 N7 i+ t
   else
9 C" L( X; ^" o7 I4 H      return;
0 L5 r5 `2 d' C7 a6 T8 b- F2 f8 O' }; L
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); ) X. r# P. ]! x( Y

" R! L. h! l+ x8 Q1 H- Q7 i1 Y   if( count > 0 )) j0 A' l, l+ d% `
      UF_free_string_array( count, feature_names );6 ?" z; ]' L9 r6 }: `; w
' b+ K. j' C6 J2 }
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );/ o9 h5 y- p8 f- z' M
6 F  G8 G" a  |& q  I8 P
   UF_FBM_GEOM_ask_features( geomTag, &count, &features );# F# _/ f! Z! g+ _$ G) Y
; J' ~6 r; s0 N/ p# [5 U( Y: \
   if( count > 0 )
$ K: N( z) X5 D7 {      UF_free( features );
9 R6 G- P$ F1 k, G7 X   else' n* H8 R' y( g( q, v
      return;
; B+ T6 K5 y2 e( `7 ^( Z) o2 w) o7 b) [
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );7 R- x' C/ v  z7 S! N( c# [

& B. w6 f- v% e0 [7 Z* J# ^+ h   if( count == 0 )9 B, p8 j( s$ ]9 ?
      return;
* P9 g% Q8 b( X, r4 _& l+ z; f4 M, }; d* p9 C
   strcpy( criteria_to_consider[0], criteria_list[0] );
4 R: \$ u( @( r. i$ Y/ S0 e& V+ m- X$ }; c; {6 t
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
  I% w8 k( u1 f# c                                     &num_of_classified_sets,! U$ \. n3 }8 Z
                                     &classified_sets );
8 ~' j6 `! n# o) Q+ H/ J* `5 ?2 L& {& e
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
% ]6 |9 r  L8 M- P% d, C6 V& i3 K
3 {2 r) t; P* d1 [) i" l) N   for( i = 1; i <= num_of_classified_sets; i++ )+ s* J9 b; ?% N7 s$ D( M/ {0 O  G- V
   {! E# L' G: V5 h5 j  M: B
      switch( crit_type )
7 U, {$ S8 ~/ L" k0 J3 v8 y( P7 i      {% B% z: X* S' l! |
         case UF_FBM_GEOM_crit_value_type_double:3 f6 C' H# f; ?7 {. R
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, + V* x7 x- I' W# s3 r- j
                                             criteria_list[0],
1 Y1 ?" L3 ~' `# C. M" B                                             classified_sets, i, &value );
( M2 Z" C, e3 q/ p5 D            break;
9 t: v6 O/ H8 ^7 d5 z7 K) ?         default:  P$ i  d. B& v0 o- |
            break;6 q2 }  R! U% \( G3 j7 w
      }8 J+ t$ q4 k& w
   }
) g5 v+ C4 Y! c. p% |3 r% ]2 ~6 O' C- R' t0 @; Q% h
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );( Z- J2 K4 ~# ^  S3 G( Q

5 O* c3 m$ Z5 M/ u8 B) f! a/ d! X   return;3 A  M" u, C+ i  `. m" v
}
3 @  A+ T0 `, l; S3 r# ]& E& c" z. r" [# j$ Y& B8 @
int ufusr_ask_unload(void)
# q" `1 F9 f/ g6 M0 D{# B  \/ d) G, F2 `
return (UF_UNLOAD_IMMEDIATELY);
1 z$ v# S1 t' m( I) Q}8 G7 k/ y& \5 S7 B
$ z$ j6 _6 Q- \, Z8 U' 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二次开发专题模块培训报名开始啦

    我知道了