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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

- C1 N4 ]( ~+ a
" m' ^! T5 z; s) |1 [+ N
6 x, j- `( G$ {# a2 D' k+ `/***************** Include Files *******************************************// q4 e7 [+ t8 p+ V) ]  d, V
#include <stdio.h>
$ c9 j; g1 l: r4 q$ q#include <string.h>
& M- K+ Q8 S$ e$ G  D* o! L8 l; V& H& C- y
#include <uf.h>  |. p9 k0 x" A" K$ y
#include <uf_defs.h>
; y# _. _  @7 J0 U#include <uf_cfi.h>9 v( u1 I" u8 }; h. r
#include <uf_cam.h>! h  ?! n, @& x4 p1 b0 G
#include <uf_ncgroup.h>
. i9 F8 w- G$ Q- T5 {, H#include <uf_part.h>  M$ p" Z* {" x6 g  U0 w5 {
#include <uf_setup.h>
3 v9 e+ Y& _0 C  _8 |#include <uf_fbm_geom.h>0 P2 S7 }' j1 v0 p: L  S6 L5 Z
#include <uf_ui_param.h>  J( |6 z' ?+ F$ M+ Y: N' b

+ V& Q# z$ I$ Q/ _. V/****************************************************************************/
0 W- L  d- D" B; C) P
' e2 M+ M$ d, o' f: g  Pextern DllExport void ufusr
6 p# d' Z. `6 S  U  @. f: K2 R(
8 L0 x# V( J) w0 _* i* l   char   *param,, c- ]# T8 W6 s* E0 a' T
   int    *reTCode,
. T) Y8 N( ?8 r5 W! N   int     param_len
  j2 e0 H$ P3 M- m1 A)
: \2 k5 r, V: a7 h{
8 \$ U) n% T" E1 H8 O# ]; `6 G   int error_code = 0;1 z; G2 d, z/ S8 E9 ^- E& I
   int i = 0, count = 0, part_units;) [4 d" M1 u* s: U. K; R: o
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];  B0 r& [; C) [5 G; K- X
   char *env_trans; $ }# n" h: H4 I- D+ `
   char opt_name[ MAX_FSPEC_BUFSIZE ];
/ ~: j6 h5 t/ _   char part_name[ MAX_FSPEC_BUFSIZE ];" V! w, I) n4 o( r2 f7 S
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
7 B; H: J  [# [; K   char  **feature_names;9 [% e) ^, J+ c: F
   UF_NCFEAT_t *features;% S3 ^$ H9 I: \! d3 _8 C

8 t3 V: t& V! O5 m+ V   tag_t setupTag = 0, wp_tag = 0;
! _6 t( c% J7 ^, G$ ]" G8 ~   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0; 0 |5 v0 x& m+ k: A
   logical answer;
$ c0 P. q& {: ~9 p& k; r6 [" `1 N# Q4 J% ~2 Q1 G
   char **criteria_list;: _2 J# W7 [  V
   char                         **criteria_to_consider;
4 v2 ^; t  s! t   int                           num_of_classified_sets;4 R. w: ~; n7 \( o% Z5 M
   UF_FBM_GEOM_classified_crit_t classified_sets;6 W8 l5 k$ e6 O
   UF_FBM_GEOM_crit_value_type_t crit_type;
- ]# R! f& d& X7 z" h. I. m   double                        value;$ y9 x1 q, a' n% ]$ [0 U
   UF_PART_load_status_t         load_status;; @7 U% G, e+ P1 `0 i& V/ s
4 M' r+ t* n/ |, H. U; \
   *retcode = 0;$ f& I1 r; o  o$ j6 h2 s
. E: z% K, Z$ F$ {5 w3 B+ y! o5 V
   error_code = UF_initialize();9 B8 |. M/ X8 X; P- h2 C
   if( error_code != 0 )
5 |% c1 x3 h' e& ^   {. i+ V% J9 Y1 B* m1 F
      printf( "Failed to initialize uf %d\n", error_code );
) ^. r! k; u# L) a$ Z% A      return;
( H9 q8 k% a( C7 L7 w; x   }8 H& C) Z  F- Q  x5 K; e' M5 K

" Y( S0 Y  z" p   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
1 b0 S& K9 o- J                                                       &error_code );5 o0 a7 U! F. c, b3 W3 ?

7 p8 Y" V. S7 h  d   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
5 o- U# }4 S- F4 o                                                 &error_code );. O5 h) @' I' Z4 \+ ?- L

8 t' e& Q5 O0 H* P; D# I
# b$ Z+ p0 b, f( d8 `2 n1 e   /*** This program works with the part files in the CAM samples directory, g/ E4 n, S. ~; n* s9 j% {3 m# [
        so we need to get the path of the directory and the file name
0 {* i2 ?$ m8 W; R2 V   *****/  w$ _, F( D" h: P, K& X; s
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );
; ?9 w6 P5 {' q; [  A7 c   strcpy( part_name, env_trans );
9 k: q: `6 X  [% c# S   strcat( part_name, "cam_holemaking_base_" );
: j) L- y* R8 P( \& W" k* j0 J4 o  N- K% [- `
   /*** If no part is open then open the part cam_holemaking_base_in.prt  E* r( H# x7 E: B; `
        from the CAM samples directory
' s. F: z3 n7 _5 K# W; {7 H7 p        If not check to see if the units of the open part so that we can open  |' b# J6 O7 V9 Q1 C5 B
        the same units part 6 F  Y5 H6 u- X. J
   ****/
/ F& k0 a: Z0 W% d( ]& I   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
6 k- ?7 E+ D6 q- _3 M. O3 s/ I% @   {( d  E9 g- b5 ~+ j, M
       strcat( part_name, "in.prt" ); 9 X+ b/ _. Q+ P" u" j8 k9 S
   }2 t1 g8 C3 O+ ^+ a: f
   else% v1 D5 `2 S3 D* L& d
   {8 `" {. r/ L9 Z0 N6 @
      UF_PART_ask_part_name( part_tag, open_part_name );
2 l2 {1 H6 T: _( o7 L/ O: N. _      UF_PART_ask_units( part_tag, &part_units );
5 l/ l% P  f# L8 e' \      if( part_units == UF_PART_ENGLISH )2 C$ e; i- [; ]8 u8 d/ K
         strcat( part_name, "in.prt" ); $ q: H2 h( R# ?. D) Q
      else
  {6 H4 G% X5 @2 F1 @7 R         strcat( part_name, "mm.prt" );
, w9 }% g/ w( c. K& A6 c$ S; f/ n   }& b3 \  K/ l$ W; b+ m; a: V

' f  W5 T3 A0 y1 b9 j( S   /*** & u0 T/ i7 G% h+ ^& C- _; A5 z) O' n
        If the file we are trying to open is the currently open file
; _  _- n, K. p/ R; q        then continue on
9 t! A6 {5 w" s5 \: L: M( A- d   ***/
. U1 e4 b4 U* O   if( strcmp( open_part_name, part_name ) != 0 )
% Q, l9 h- [: m- w2 F   {
+ ?* V3 ]4 R' j      UF_PART_open( part_name, &part_tag, &load_status );
9 K* z1 B/ O. U2 [; x! k# x   }( [# g( @5 z+ b; x+ q( I: h
8 J7 O. ^) S4 |; \% M7 h" i% D; s
   error_code = UF_CAM_init_session();+ A$ Y5 O8 q5 t$ l
   if( error_code != 0 )9 T, C1 @; s# @) P0 L7 M
   {. t9 d! m; B; T1 \- G$ J2 _
      printf( "Failed to initialize the CAM session %d\n", error_code );
* e8 S1 F1 [. Q/ N5 ?+ y      return;) _3 q4 u) a2 p
   }* j5 p- w+ ^; k" f6 T- L, w

6 R+ P* l( [. c# C6 w8 b6 r   UF_SETUP_ask_setup( &setupTag );
+ k. k( E# ^7 x6 c9 A/ E% c: y* a   if( setupTag == 0 )5 c6 T8 A0 t3 ^! V% O' a
   {
2 w* V, v) `/ M' E1 K      return;2 [1 q: ~1 B6 [% M7 _) M6 L
   }7 g! T2 p* W* T7 {- W; T

9 X$ \* y0 _1 s3 _   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );* g2 ~# ^' _7 [
   strcpy( opt_name, env_trans );8 f4 ^3 G% r( P3 x9 u- g; ^
   strcat( opt_name, "hole_making.opt" );7 Z* |3 Q% D- _6 |; \3 D

7 z) }# t' X/ n+ z6 t+ z   UF_CAM_reinit_opt( opt_name );; |! _. z# k  t& I

' |  P9 a, `# T, ~   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
& q; i" J  ]0 T
  A5 O5 ]0 v3 p2 e/ W. r   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );6 h& A9 @7 u) j+ h# [% s. n1 O
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );6 {) e0 t5 ]+ E% i8 R- [& w0 S
   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );4 Q5 S& f- ^5 j5 ]" H+ ^
   if( answer == TRUE )
. S9 Y" ^) r; L- X# o      UF_NCGROUP_accept_member( wp_tag, geomTag );
$ C- W3 K0 A8 A) u9 c& W( I: U7 L   else
* ?$ m. s' N1 e* M      return;, M: Y6 Z% X4 J* P

8 p' m$ K7 p, z. T   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); ; G" j, ]- B: k# K- `
9 c! z. V2 z  e# G/ p, i
   if( count > 0 )
+ d0 N# l+ \* h4 Z( H7 o- s      UF_free_string_array( count, feature_names );
8 I! d* b% d4 q, l8 Q( r) B: N
5 Z; \3 h7 K* _' z   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
# [5 P0 G1 c4 L2 a0 _
3 W) }7 O( l7 ~   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
0 T$ ?$ \& `! T5 E( E) ]7 S$ N/ u% W) T- j5 W- \- ]
   if( count > 0 )) ]' R0 |7 I* u5 P+ W# E% j1 w
      UF_free( features );
0 [7 U3 m' V$ c2 p) H9 {   else
! p! f) f) j  J+ f2 }# [& h      return;8 o  L' f  w. X& R6 r/ X

; ~- V+ Y  g; o# B; N/ e. P   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
8 t8 [; O, P8 m8 _' y2 Q- H( [. v" {; ~/ l
   if( count == 0 )
) F$ {2 r2 D3 f9 _) `, ]& O      return;" E' j% G( M$ s, q( a

+ ^4 T7 ~  R1 R5 J' J   strcpy( criteria_to_consider[0], criteria_list[0] );
2 l! F& E' n5 x: k' c4 ~9 e7 o# p
4 ?6 C( y" `" b( z( F   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,- U, ?$ e5 {4 ^& Z9 C
                                     &num_of_classified_sets,- n# l5 Y" l1 V
                                     &classified_sets );. h8 a; E, s7 D; G. G

; Z8 W7 T2 Q' Z   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
& H/ Y4 w. r! G: j" `5 G5 g6 H' ~# w: v; h
   for( i = 1; i <= num_of_classified_sets; i++ )
9 v9 u( L" \) h/ {6 p; o   {
3 G$ r+ N3 s& q+ Z" R) t! K      switch( crit_type )
$ i# G, H6 u0 R. i. J) r2 G! N      {; U# y* Y* i4 r1 P" ?. d1 c- U5 E
         case UF_FBM_GEOM_crit_value_type_double:7 N$ \8 {0 p4 y" V7 Y, s
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, 1 D; ~" f! `6 P" ^/ }; v+ H( X, ^
                                             criteria_list[0],
, L: X9 \+ c1 {! @/ m7 i. }! p                                             classified_sets, i, &value );
( e8 A3 Y) @/ Z            break;
- M) `9 X$ W5 L4 u         default:
; j" I% G1 J- a, T            break;% w- k( D' A2 d7 z. q. ^
      }/ C3 p, i! [0 H5 M! k! S( W
   }
- E3 b6 x+ j' j/ a; w
7 C; F! z' d# R6 ?" e   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
/ o& l/ G( s$ t1 ~) W
2 ]  ^0 |2 O" c0 t; h$ E   return;
6 T2 K% i! n" L2 i% j}. I( B3 f" i4 e$ H$ u

2 A! U! E- Y; X. ]. [int ufusr_ask_unload(void): |2 }( U5 W$ h: d9 y
{
; |' D! p' W- W) \ return (UF_UNLOAD_IMMEDIATELY);
+ p# j" A7 e6 K0 J- a8 ~& ~4 b}5 Q5 I- v' L3 _$ D* N. m

9 m- B( A/ z8 B0 o/ 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二次开发专题模块培训报名开始啦

    我知道了