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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

- r9 {! B. J% h4 {& ?# \- C1 L, L! [/ J4 h  [

' }! C4 W0 ~* j0 v; G/***************** Include Files *******************************************/
# U& w7 X7 r8 O* t3 {1 j0 d! K#include <stdio.h>6 B* b- p5 s" L& `0 ?2 j6 B
#include <string.h>* O9 d  s+ b' {+ c
" Z6 {" @  \- ^4 E$ v
#include <uf.h>
6 M) _2 S* X) V* A# x2 f& [8 c#include <uf_defs.h>9 C2 d, Z" x( I% O
#include <uf_cfi.h>- c. ^0 O: y$ `* M* Y8 s1 T* t) X
#include <uf_cam.h>+ o9 v% B$ Z$ A  g' f: S  F9 i$ R
#include <uf_ncgroup.h>" M1 Q/ h" K6 \# K* B  @
#include <uf_part.h>6 J0 Z' l' ~( c" [2 E0 K
#include <uf_setup.h>* h+ y3 H# S! Y0 c' Q
#include <uf_fbm_geom.h>
/ {5 a( P7 R' I; a) y$ @8 H' F#include <uf_ui_param.h>
! X6 F3 l; |" \$ s  R  e4 T" u. H* K% L8 S* z* T  O$ W* v
/****************************************************************************/
% h9 o1 h  [, R0 b0 ^. W  K- J7 R8 v% k$ _
extern DllExport void ufusr + y: W7 \) d' V7 W! L/ x
(# \" I- L+ g5 A; b8 S: G
   char   *param,
% Q& G$ y# |7 e  m5 P   int    *reTCode,
% i) f# I7 m9 v4 U+ e& s$ _  d   int     param_len
* k: d6 {) F& M9 _5 c, j)
! ^* s. C5 y0 A0 }- z* a- |  @{
1 L+ o- r+ Y. q& k1 f   int error_code = 0;
9 P6 X* q1 J2 r- j8 t   int i = 0, count = 0, part_units;
  C4 [1 q6 ^4 B   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
) N* t) O3 x7 N# l4 d   char *env_trans;
$ V/ t, a6 a4 I6 _( N/ N7 j   char opt_name[ MAX_FSPEC_BUFSIZE ];
' d& s1 g6 h4 s  c/ m   char part_name[ MAX_FSPEC_BUFSIZE ];
- Z- G6 r5 y8 H   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
% l, D+ M4 k- K/ K' a! P   char  **feature_names;% Y& T. W9 x6 {+ L
   UF_NCFEAT_t *features;
' ?5 Y# S1 ?7 l2 J, t1 D' C
8 A3 \' p2 \% \0 ]" M1 V   tag_t setupTag = 0, wp_tag = 0;5 \8 h8 f; Y( Z
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0; * T3 q  p- e' J* \3 u
   logical answer;
3 d' }% [' O/ `! z% E% P  ]" E
: ^# L3 M' k; F3 ^% Q5 O" y   char **criteria_list;
; V. q( T; r! O   char                         **criteria_to_consider;
# l) R& L4 O! Y" q. ^7 V0 c' G   int                           num_of_classified_sets;" G9 \/ r$ n% Q4 V
   UF_FBM_GEOM_classified_crit_t classified_sets;, g& r# Z2 f; F# z
   UF_FBM_GEOM_crit_value_type_t crit_type;
) n  N' A% L# ?/ D8 }   double                        value;
' o  |$ ]4 @  U/ C1 F1 d/ e: b   UF_PART_load_status_t         load_status;
. @7 R, Y' O& T) `0 v( B# I4 z$ e0 O, y1 ]/ }- M6 I
   *retcode = 0;
: {" D5 I) w& Z, L
6 K6 |/ u+ f  Q  v1 g# ^1 ]   error_code = UF_initialize();
  D. Q6 @7 P2 f. L7 S7 P   if( error_code != 0 )& g" g+ i5 o7 F1 D! X5 E! V, h1 r
   {
% m- S2 P+ H! U/ ~9 |. V3 x; d: \      printf( "Failed to initialize uf %d\n", error_code );( L1 u* C1 H+ f/ t! }
      return;5 T- _' y, H( W3 G! F* V/ Y
   }
5 R3 e& [% G. [$ O
; Q7 r1 s# G) P; t3 q   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), ! S- b! W* X3 V
                                                       &error_code );1 t$ b  w1 O' h

  [. m8 f# s3 I3 \9 L8 J* {   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, # |; V" G! a6 {" e8 v! c; ^
                                                 &error_code );% I  ^8 P3 \, R

2 @( N. ~, M3 ~, U+ s2 T) p) ^; c( _6 f5 n. Q
   /*** This program works with the part files in the CAM samples directory" Q$ p9 T1 W2 q4 r' k+ v+ ^
        so we need to get the path of the directory and the file name; f0 Q8 a4 f  E- e* e' o% `
   *****/7 V2 O3 d% W" g8 a
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );8 O9 |4 O( f" X# J) K# s
   strcpy( part_name, env_trans );
3 f. t7 a# _: ]   strcat( part_name, "cam_holemaking_base_" ); * J4 U) S0 d) m9 w/ U7 ^1 o* o' K

# R* b5 C" c2 }* k   /*** If no part is open then open the part cam_holemaking_base_in.prt
2 r* S7 r- Q  c1 N9 g/ z        from the CAM samples directory 6 t: g- S4 P7 j# t" @: B
        If not check to see if the units of the open part so that we can open
- S1 ^  p+ r( E0 v0 H/ D+ ?8 w* O        the same units part
' s0 K- x* N; ]2 j' Q   ****/% h9 B0 R: ^+ ]$ i% L4 o6 H- V! J
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )' w& h$ e8 s1 _+ R8 K
   {
5 v/ M! J0 v3 i& T- H' h, k& ~3 m       strcat( part_name, "in.prt" );
% @0 `' Z  F8 d1 X9 E  \   }2 u. Z3 c2 D4 j
   else
( Q4 x1 j) \0 L& p   {
$ `! V5 y, M% s- P# H# u      UF_PART_ask_part_name( part_tag, open_part_name );$ L$ s9 z4 P" j1 e% v
      UF_PART_ask_units( part_tag, &part_units );
% O6 `. ]4 ]/ ~! R      if( part_units == UF_PART_ENGLISH )
" d8 O' ?" x1 c# x/ t         strcat( part_name, "in.prt" ); " y/ z, g# J. T  C( [- f, N
      else0 B- j8 h& V6 X. Z7 b* u, |5 C$ d
         strcat( part_name, "mm.prt" );: @/ a* O, X2 S! e* N* [. ]
   }
8 D) Q3 g: d# v0 w, l' _! d% j
" o6 X4 @- |7 ~   /*** 1 O6 e. V" ^) y- g6 M: i
        If the file we are trying to open is the currently open file2 F5 H9 N/ z9 n/ w# E
        then continue on$ ~6 S7 }* u* B' q
   ***/
8 j) w1 n. [, d8 d& e   if( strcmp( open_part_name, part_name ) != 0 )
) v" y" T+ v" ]- s. r4 m   {
) n0 q# S  c5 C1 v% I2 `1 \      UF_PART_open( part_name, &part_tag, &load_status );
7 h7 L; Z) V1 _+ L   }& Z5 ^( _2 i0 N. A: H$ k
9 Q% v/ y9 A# n7 \6 _4 v
   error_code = UF_CAM_init_session();0 y3 j: D% }' {: d4 C, g
   if( error_code != 0 )
  ^  }% {0 I9 Q9 `   {9 C% ~" r9 W6 e7 J: h# x) s' A
      printf( "Failed to initialize the CAM session %d\n", error_code );  {& K2 }0 R' |. l& `' J
      return;( m2 q$ d+ w# ^4 H
   }! U2 h7 x6 \- M3 U. R" ]
  Y' z; V" q' @* ?
   UF_SETUP_ask_setup( &setupTag );
/ a: g2 O* j; ~, [4 h   if( setupTag == 0 )
9 `" y$ a; i& \2 f4 ~   {, r  G5 p$ U3 r/ z2 S
      return;4 B- y2 j9 ?( s( s. x! h
   }% n' H0 V  f6 g# Z- [

- b' Y3 t0 Q8 [5 c   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );' a9 y" N% E8 G5 @  o; }
   strcpy( opt_name, env_trans );
1 G. J$ z0 i8 P7 l7 G3 n   strcat( opt_name, "hole_making.opt" );" C4 y  D7 Z& _6 M. }1 J" R3 r" `/ u
- O$ Y. l/ c8 ?- }  s  m
   UF_CAM_reinit_opt( opt_name );
" P1 |8 x, s4 y( P. ]$ }9 j
" m- m1 ]. B3 j5 C   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
  p7 S; S! u9 N4 i) V2 L
$ u6 u/ ?) l7 M  v  m% B, Q   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );$ R" T/ n9 T2 g, j" S5 ~, s5 m4 J
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
  F9 }5 |$ ~% ?9 n" P" @/ J9 `4 h   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
: }  j+ Z& U2 M5 ~/ _   if( answer == TRUE )
) s5 }! c1 k% J/ {- s: |      UF_NCGROUP_accept_member( wp_tag, geomTag );
: A; w1 e0 C, k! N   else) X7 o2 z9 h8 C2 _) s1 ~  S
      return;
  V0 k/ C. J0 ]
: u8 R3 y  C$ k$ _# M- T. W& w   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
# t) I9 X2 ?9 j7 C. o- U3 v8 F) {/ E
   if( count > 0 )
9 n% D/ i/ Q8 y$ r  Q8 c! o- F( B      UF_free_string_array( count, feature_names );
2 y6 T% {( `; h1 p4 E
" _; B$ W3 {. \+ W* C   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
/ Q4 b. W1 j0 L7 C% D$ ]
8 C+ _9 ]) I* H- R% @   UF_FBM_GEOM_ask_features( geomTag, &count, &features );" @/ w8 u! N1 K5 r
" w* s. h4 g& h6 P  `: E* |  d9 M
   if( count > 0 )/ q+ B: z/ g: h
      UF_free( features );
4 a6 J( g5 H+ g   else0 o+ ?3 H# g# z
      return;- b  b- `" c  T- A9 P# {

# v$ H2 Q) v8 p8 j/ ~   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );, G8 k. O3 J( o4 ?8 V

$ y6 q1 C" ~, P; I5 k' a   if( count == 0 )3 E0 \/ j6 x0 x- X0 v* ?
      return;, }3 @' r: b7 r
2 e7 O- T/ ]* Y8 r
   strcpy( criteria_to_consider[0], criteria_list[0] );2 n; s8 C- v$ {) Q# C+ r0 y$ P
1 k7 z) f) @  J. f
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,- I; s) O( z: \
                                     &num_of_classified_sets,
, t. U" f4 d4 l* r                                     &classified_sets );: {; A% `7 K* c
: [! ?3 Y7 o* z3 `6 O
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
8 ?+ y8 G0 u4 G' B* K2 y- Y$ ~2 ?* O
   for( i = 1; i <= num_of_classified_sets; i++ )
- Q( ]+ T: W6 V* H1 W9 i# ^: C   {
- p. ]) R* V# A, A9 m2 Y' h      switch( crit_type )- H; o) Y2 B: I( G; ?) i# s
      {
$ N7 Q2 S: f2 N" O! H1 m         case UF_FBM_GEOM_crit_value_type_double:
7 z, {# J$ L( m' q1 K            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, ; x4 |/ Q  S+ q
                                             criteria_list[0],
; [: L. K0 v$ o) l( e3 j. r                                             classified_sets, i, &value );
+ Y# \7 Q9 ~8 H! X2 v            break;* |1 g4 i- A+ M4 r8 n
         default:: m& S& F7 b+ a( z9 c" k1 i. r# y0 q
            break;) d; |; ^5 _+ z
      }; E$ O: V" E7 z+ `) U- c( v' s
   }7 k" D1 ^- O8 s

6 j/ ^& s2 S  `, Z$ n* f4 @   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );$ ^5 x: e' |# h* m( u7 a: ~0 J- {

& L$ q, j, Z* a9 j" D: ]   return;
. M5 I0 D, b9 q8 p6 w}% w# Y) x& p  F1 N3 s0 g7 ^1 p

2 I% Z, k! n( wint ufusr_ask_unload(void)
  i. K/ P6 H4 W5 T4 M" [$ G{6 C* i- ]* A$ B" F
return (UF_UNLOAD_IMMEDIATELY);
; Y: F& l0 ^  U. p8 Z  Y$ C- i: v5 S}4 D9 U0 y( T. `) f# o

  e- `4 r  s5 T+ J  ]  J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了