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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

2 G: W; R) W% c5 Y0 f% e$ M8 R7 M! o) V( E
2 {. T. Z' t! \2 w3 \  p
/***************** Include Files *******************************************/, E# A( v$ i4 t1 J
#include <stdio.h>
: @( r) v) u- b, E! `$ {2 f" G#include <string.h>
  ^. l# g% o' u+ w% [! a& `5 U* |# Q
#include <uf.h>: d  m/ h! i5 ~8 V5 R
#include <uf_defs.h>
  Z/ u* b) k; @( N1 w0 k#include <uf_cfi.h>9 Y; W6 a7 I- z0 o) v
#include <uf_cam.h>
0 c9 X0 t; \* U#include <uf_ncgroup.h>
% r9 @9 I* r' y$ ^#include <uf_part.h># H) g7 J- z8 `' Y4 j9 T
#include <uf_setup.h>
# Z  ?0 C. t4 t% V#include <uf_fbm_geom.h>
: V  R: C( P* g: _" N#include <uf_ui_param.h>6 T& m& d9 _. p8 T' {
8 P) E. T9 h4 D7 _; u( b$ ?2 T
/****************************************************************************/7 `9 w6 T+ x$ x* u
: I' q- C8 g9 B, K* {
extern DllExport void ufusr
7 q. ^, V$ M, D( ^& q' t(
; t% k% e4 z% `7 Q0 S, b* b   char   *param,
6 ~2 h: w/ j) f% y: q0 H6 E   int    *reTCode,
1 }" p! \" Z7 U, Z& s   int     param_len
! A8 p4 ?, G* r7 V# M- {0 u, r  [)1 ~% ?) {5 R; f+ w; P( G
{
6 W* Z, o. c) B- i# O   int error_code = 0;" S8 y3 K) @$ h9 H" V
   int i = 0, count = 0, part_units;9 d- T8 K/ x# a2 A, p0 F5 D. ^/ T% f
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];6 J' H& }$ J! F, P$ U0 b8 a% O& [
   char *env_trans; / \& H+ ?# @: \% U
   char opt_name[ MAX_FSPEC_BUFSIZE ];* z4 b7 x& {5 Z$ E% k7 g
   char part_name[ MAX_FSPEC_BUFSIZE ];9 I/ q7 q7 F& ^9 T
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";7 D' e( q( L8 o
   char  **feature_names;0 t3 s; N7 I, M* I/ T+ h, s& W
   UF_NCFEAT_t *features;$ ~8 u# ]9 V+ [4 |% Q3 b# u
, S9 G+ {6 {" }5 d% }% Y
   tag_t setupTag = 0, wp_tag = 0;+ b- T4 l; l/ N. Q$ s
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
  x8 l7 W8 D8 }3 t4 M  c   logical answer;) v* C" Z) ^- j$ m5 }
' S% s$ n4 p/ T$ g, [- t
   char **criteria_list;$ e0 }/ _# V# R" X
   char                         **criteria_to_consider;; Z3 R2 X6 V- x  T
   int                           num_of_classified_sets;6 t6 r+ U4 v8 Y5 |" {1 f
   UF_FBM_GEOM_classified_crit_t classified_sets;$ ?5 V4 T4 U: E
   UF_FBM_GEOM_crit_value_type_t crit_type;9 D& y$ {. ~- P& N/ a
   double                        value;
1 p7 z/ [2 `$ S3 {9 a   UF_PART_load_status_t         load_status;8 {' a" t! m8 ?# a5 i' V( V
9 L, Q+ x- L0 e5 v1 Z
   *retcode = 0;
, ~, }! D# U3 Z% O7 [  ?: p* v8 d' k0 ^( j+ O
   error_code = UF_initialize();" q* ?6 R3 q2 |' t* E6 R8 n; k
   if( error_code != 0 )
5 z) l2 r- T% C/ ~   {
9 }6 P5 T; ^- @8 B( x% e$ [, Q      printf( "Failed to initialize uf %d\n", error_code );/ L2 T& G, P) S
      return;
1 y- F) p2 r& W1 ~! s   }2 d' q3 U! ]/ X; a( @2 W

, X' j* N% D) W3 k0 `, b& B   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), - i: Q# @% n9 Z+ I- M4 ~7 s& _
                                                       &error_code );1 l. m* X9 E6 G

$ n- I2 {5 L3 O   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
* Q. E$ X- g& j' E/ ^. T                                                 &error_code );3 Z9 h) Q6 j1 }4 Y9 g$ ?
: D' ^* N* `1 ^7 t, y2 _# a

+ r2 }2 u  _8 F8 ]& G( F. U) W   /*** This program works with the part files in the CAM samples directory
# G( o; Y0 U; v7 d' n5 _( E% ]        so we need to get the path of the directory and the file name" w" B3 g) E: d  t, Q; }
   *****/- U8 M. s4 Y" s* Y/ T% Q
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );+ C" P+ w6 F  ]! @
   strcpy( part_name, env_trans );. J: c7 o7 e" k& v; R
   strcat( part_name, "cam_holemaking_base_" );
9 R; o3 O' ]; K* k% R- G
& P: C1 s" O* l; g* d   /*** If no part is open then open the part cam_holemaking_base_in.prt
0 F" }- Z4 o1 {1 T# f: W  Q        from the CAM samples directory 8 G; m9 c$ C. J0 e( r+ }" C; b
        If not check to see if the units of the open part so that we can open1 B3 O0 ~- p* {/ R6 F8 |
        the same units part , ^7 t. m& C# s) H5 Q/ H7 K
   ****/
9 ]5 ?2 P& B# V- h9 s3 X* @0 h9 [   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )
6 s6 s) Z8 S: l# q# a   {2 K5 q* M' q8 R! G
       strcat( part_name, "in.prt" );
* f% A. M) g- i! K! u   }( w; X) m1 k, R  B2 G% c- Q9 l
   else
6 y  B% \$ c- \6 D( _6 p( k   {
, n% w1 y0 |6 Y9 L4 M2 D      UF_PART_ask_part_name( part_tag, open_part_name );
$ u0 ]& p' ~4 l2 v% {+ |. Y      UF_PART_ask_units( part_tag, &part_units );
* _$ y- @# J  c      if( part_units == UF_PART_ENGLISH )
. r9 W+ W  X$ }+ B: C5 _         strcat( part_name, "in.prt" );
$ F1 ~( n8 }& M8 \, Y      else
( |6 [& P! z- y6 N8 [         strcat( part_name, "mm.prt" );5 b6 ?: ~3 Q+ Z. r! D! ~+ K
   }
8 e6 z) B7 R$ l. I# z9 d; [
$ N2 A6 m8 t* o9 t9 Y4 \   /***
' K, `( E$ z9 X  N  t4 Q        If the file we are trying to open is the currently open file
  w. ^- v2 S4 _, H, o        then continue on% f1 `* O) D3 Q( i- N
   ***/, m- F) ~, w2 {8 B
   if( strcmp( open_part_name, part_name ) != 0 )
$ i3 i2 v/ Q) K7 ]" S0 x/ I' k   {
0 Q) e* q0 {, O6 D6 D' U! _" K      UF_PART_open( part_name, &part_tag, &load_status );
* N$ E8 A( j2 q; E! L6 s! T# m   }9 c+ Q& H$ V, E
7 z( S' j* y3 Z
   error_code = UF_CAM_init_session();( i" s+ g6 N" V' `. d2 D* ]+ a/ J
   if( error_code != 0 )
2 D% j% v8 J  w6 N. a: M" z8 H% @9 ~   {
/ ^4 a( Z$ G" P4 c1 _      printf( "Failed to initialize the CAM session %d\n", error_code );/ U$ f, E7 G5 u( x5 q0 S
      return;
& F, j* U& v! s) Y& J$ O# _   }
& ]+ Q1 D& t0 ~4 D; U& y4 v- b3 y( K
   UF_SETUP_ask_setup( &setupTag );
( `! h: n! c' X% [& {- d   if( setupTag == 0 )) B" K, t: Z2 H+ K8 n, `  l
   {
& T9 w; m( i! z$ ?3 k' O5 }      return;$ m* x6 H3 i1 y. E9 l6 q/ i
   }: `* \) [( ?0 j" y3 c
9 Y6 n7 g6 W+ z6 y/ b9 L
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );  H& C+ X1 e" h4 }" F
   strcpy( opt_name, env_trans );5 [: @' s% J( [
   strcat( opt_name, "hole_making.opt" );
) J% g4 @4 l9 D+ V$ X
0 k- O, h+ W+ P) Q5 E2 E   UF_CAM_reinit_opt( opt_name );' H0 t  P% Q# P5 |

7 m! [6 s6 x  Q. l4 V   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
6 ^( T1 D. ~0 a4 e
* x9 ^4 ~/ z6 o; B   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
* J$ d& z6 {' E   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
# j& S7 ]2 a9 U8 m" w, w! e" ^   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );( @, \# i: x8 P3 d  R
   if( answer == TRUE )
9 }& B5 w' @& a1 R& }% J      UF_NCGROUP_accept_member( wp_tag, geomTag );- U7 J1 \% k# z% A
   else
3 c" H! b9 `- @9 e      return;4 y& A) j4 _! |

* j1 K, N2 q! X6 J2 m   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
( [+ L8 N* V8 g. u$ [" W9 z' A! ]5 \5 ~9 l" M- |, k/ N6 Z
   if( count > 0 )+ ]; f" e( C# _1 {: H
      UF_free_string_array( count, feature_names );4 R. e+ A. n1 M) U* |

# M6 H8 F) k* G3 e" ~) N5 O   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
2 u; x+ v- u8 q) W9 c5 M) ?
8 b2 t" F# q8 P. m, @   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
+ D% x4 a+ D/ h* t7 h# s0 H/ r: w  {) e; i5 V; U. W2 D: g8 v
   if( count > 0 )
- x# l/ f  }. c+ }      UF_free( features );
) m) H- _/ B; c: M+ f, l! R   else" ?" A4 ~. c/ `1 r3 A, y
      return;5 @6 O- H. X1 M" t. r

) P) `, E" y1 G   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
: @2 G; ~" X# M- V: c4 q/ `) W, f+ T8 U9 `
   if( count == 0 )
' N- W: ^& T6 }      return;& u: f+ R( V0 v: i; a, S6 W

8 j1 q0 C( Z) v$ ?! q, J   strcpy( criteria_to_consider[0], criteria_list[0] );
1 h4 r# W+ Y5 `6 B. \" e$ l9 ^1 Z! U4 ]5 W, G
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,3 Q! k3 a! U, \& s9 t! j: w$ w
                                     &num_of_classified_sets,
/ Y1 W9 r# ]8 e7 L4 I) y                                     &classified_sets );; N, w2 `2 E5 b- R. a: P* p6 V

' R! u) e; K3 q% Y1 ~   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );6 A  c$ h% q; Y8 a
/ V! `+ d7 {: T( d& X
   for( i = 1; i <= num_of_classified_sets; i++ )
9 g' w8 r0 H* `! @% l/ v. ~0 G   {! _! [3 [' ?: n5 P+ A2 K
      switch( crit_type )' i4 A  ]; `# O
      {
0 h. k& i% O+ S         case UF_FBM_GEOM_crit_value_type_double:% g  W4 W; Z$ _
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
, a! s5 F0 K4 Z. x* r7 g1 r                                             criteria_list[0], 2 F3 ]0 S  y# R3 \0 W! o) D
                                             classified_sets, i, &value );6 }# l5 j, K# v2 Q# [2 M" J
            break;  |4 N+ n" q, B6 \! H6 J
         default:! @7 F/ ^  |! ]8 z
            break;* h) u2 v9 l2 s3 a
      }
) T- d# f3 G8 B8 X* M- m   }
( }( G/ I8 b! c6 x& D' G, K: V4 G6 h1 [! A$ X* L3 I
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
) i/ @+ Z' y+ r# Y1 ?% u7 T7 A- j  _* ]% N& j
   return;3 S! k: i% V( t1 N9 d# E
}
4 V9 T7 |/ k6 p- v  e  w4 @& X2 Z6 G6 w# i) S
int ufusr_ask_unload(void)7 d' d# `! c. f; Z" i8 V. E- o
{9 K  Z6 y. E5 U" s& E& K
return (UF_UNLOAD_IMMEDIATELY);
5 W, H) O5 u" p}. K1 c7 a9 [8 S0 h( W$ x
% y8 ^9 P/ i" G  `0 o$ c& g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了