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

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

admin 楼主

2015-3-17 20:41:02

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

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

x
( ?: m% E% e* |5 t1 m
9 `' D  i. V3 U" X# a, x

) E3 F' o9 \) {  j, v/ y4 l4 h/ H7 {/***************** Include Files *******************************************/% ?8 w% z0 T5 e+ G3 J/ G, A0 r
#include <stdio.h>
% c+ }$ v; m8 Z1 _3 j6 {#include <string.h>& S$ c7 R# ~8 G

! r/ R% a$ [/ c# n3 z& P0 K# h#include <uf.h>
+ A, ^( o  F" g/ _. {6 y! x! }. ?- b9 {#include <uf_defs.h>
5 g/ W; n7 z3 X) M- _#include <uf_cfi.h>/ f9 Z3 A1 i) Y. Z# E, K6 [
#include <uf_cam.h>. X" l% {; \( A, _2 i8 Q1 e) j. G
#include <uf_ncgroup.h>
) \; Y, T& I5 I0 Q, B0 o4 ]# y' o' V#include <uf_part.h>
- Q3 P1 z# o1 \$ u5 o% v#include <uf_setup.h>+ X+ O% K$ ^3 y$ p. o% o
#include <uf_fbm_geom.h>
! U8 O4 S0 g; N$ E5 @#include <uf_ui_param.h>
- i( e; @% C- T
9 Z6 I# Y& ?# f) G5 {( g/****************************************************************************/
9 E$ J. v, D5 U$ C: M+ V0 c, L
6 A5 n/ e% R! ^2 Vextern DllExport void ufusr & L" `7 q1 B  p3 C
(
. ]$ @6 U6 I2 x   char   *param,
$ @3 p/ `. p( E3 }/ @% h" N8 ]' A' a   int    *reTCode,4 }: F& S. `% Y( p
   int     param_len/ Y' I" d# d9 q' b
)
2 l: e5 z: f' t2 }5 e! w! w{% O! j: @8 w' u4 }, Z1 D
   int error_code = 0;+ L$ y( v! r; D; b2 r' A
   int i = 0, count = 0, part_units;  _' z, J  O% x7 x3 }( T
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
: l. n6 y$ S$ h. n2 ?9 b0 ?- z  L' ~   char *env_trans; 8 s/ {( N% n: \- A6 B2 k
   char opt_name[ MAX_FSPEC_BUFSIZE ];8 |# J# ?  ?' m2 v1 u
   char part_name[ MAX_FSPEC_BUFSIZE ];4 W- J. h, @! S6 q$ D! O0 a2 e0 K9 f
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
6 e7 @  N" N$ D# W( v  F5 n3 j8 F   char  **feature_names;" q/ ^& D; h' G# T
   UF_NCFEAT_t *features;
/ ~" s3 O: n7 t/ {
+ g$ F2 j- v! T5 K5 t   tag_t setupTag = 0, wp_tag = 0;
) d& m# v- c) _: [0 k7 m   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
$ \! n$ r" V  [- v6 B4 f; {   logical answer;
3 ^8 @3 x$ Z+ ?9 N
; [9 C5 ~' U% o* R. Y" n   char **criteria_list;
+ H& g0 D" l- V: b, `   char                         **criteria_to_consider;) {- a6 w! B- Y& ]
   int                           num_of_classified_sets;
0 K4 }7 T% [; e- x9 O   UF_FBM_GEOM_classified_crit_t classified_sets;% ~: d/ I' F+ J1 i4 R
   UF_FBM_GEOM_crit_value_type_t crit_type;
* c/ x1 g0 A6 |. D8 I) i   double                        value;- O/ [  T: [$ ^: x$ u
   UF_PART_load_status_t         load_status;% v. B5 m# h, l/ V1 v

9 @0 P! [* z- k  I3 Q* X   *retcode = 0;
( v, U4 j7 X) S
. [. j7 E$ d0 h   error_code = UF_initialize();
) ]) A6 J  X4 d   if( error_code != 0 )
8 y+ k  J! V1 b% h* O$ [% f' d   {% X% ~+ k% n* Z& R0 N
      printf( "Failed to initialize uf %d\n", error_code );
! ]* R+ Y  u6 C% S      return;
: W1 n) c: x. |" `   }2 k/ u  o$ I! F) h/ Z
- t3 ?2 X4 s- B2 U
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
! E5 O( S6 F* c( w' y                                                       &error_code );) V- ^1 {" N$ i2 d7 B% B( H

# \. f' W* r3 G! g! e) H   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, - j% i9 }8 ^7 J2 v% a
                                                 &error_code );3 L  t6 B" a; z5 F# q+ R5 [9 t

, t( q3 B1 W, b8 Y- l' y# D
5 N% y: s7 @" R/ ^( ]/ y* A6 w   /*** This program works with the part files in the CAM samples directory$ h4 o: p# M4 t/ [) ]1 E! ~
        so we need to get the path of the directory and the file name9 h% y# |2 m$ ]1 l. w1 q0 m
   *****/* s, |' x: T4 O! H
   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );# F6 x4 j. F; _$ J
   strcpy( part_name, env_trans );, k; {1 j! e6 Z8 P$ H
   strcat( part_name, "cam_holemaking_base_" ); $ o- r1 o4 n) c/ M

% ]1 r$ N4 G0 `( H8 K$ |   /*** If no part is open then open the part cam_holemaking_base_in.prt( l8 x' c4 C  e/ X$ x" {' D
        from the CAM samples directory
+ X1 Z7 c/ _' o# o" D$ P        If not check to see if the units of the open part so that we can open$ t0 @1 S- M# w8 W
        the same units part + j3 _8 R2 v4 ]! V. Y
   ****/
' X& a. T8 X+ O) C" K1 L' F   if( ( part_tag = UF_PART_ask_display_part() ) == 0 ). u* a  w1 @/ R" \! T9 E
   {
# }: f" Y% Q' p9 e2 {+ J       strcat( part_name, "in.prt" );
3 s4 q1 T5 L5 |* `" j3 U   }* o0 _! _+ k, c4 l0 t$ Y
   else; R& m# Q' z) M2 d# Z- C7 T. t
   {) Q8 I2 d: @2 q- W& @! f) [
      UF_PART_ask_part_name( part_tag, open_part_name );
9 ~8 u) p& o- l4 c9 P3 s      UF_PART_ask_units( part_tag, &part_units );
- N" n$ R& A; r4 N8 ?. T+ U      if( part_units == UF_PART_ENGLISH )
5 \" F; F! C6 P$ X         strcat( part_name, "in.prt" ); % X3 D2 X3 g) t5 v7 q, ~1 I
      else
# _. W/ ]- b% W: D) Q         strcat( part_name, "mm.prt" );+ _" n: Q' \) ], D' D0 k
   }
5 Y9 ^! j! \8 B  m: P& e4 T8 p; |+ g! W% w
, Y# s, T' k3 w   /*** * k4 D" D1 ?# q+ G7 M, f1 q
        If the file we are trying to open is the currently open file3 h2 M& z! Y& T
        then continue on) g1 o8 k% `5 a* [: I: e
   ***/' S+ k2 @6 M; s& O1 m
   if( strcmp( open_part_name, part_name ) != 0 )1 l) N; R! i% M7 p# |+ T, `8 l8 b
   {
& W! Z+ D; ]1 U      UF_PART_open( part_name, &part_tag, &load_status );( a6 C  @6 {/ c. J
   }; q+ i6 ?& ?4 \$ N  {; r3 t1 m
& C/ w) D6 @4 W2 N# A
   error_code = UF_CAM_init_session();0 y% W! Q3 L6 S* e/ ~
   if( error_code != 0 )& u0 g' q2 g# }/ l, u. M
   {. _# ?6 d9 O& c- Z8 ?9 h
      printf( "Failed to initialize the CAM session %d\n", error_code );
3 d+ |5 T3 f6 `! M      return;
: B6 l3 }7 p$ p7 }' P   }( |) H8 H6 Q6 Y' v# c
8 E4 I4 `0 e0 M$ ~6 O: X9 D
   UF_SETUP_ask_setup( &setupTag );0 B  \7 r/ Y) b
   if( setupTag == 0 )
& [) d. J0 p- L5 {   {
) _3 `8 _3 Y+ e4 p2 H      return;0 z# m: R8 K4 Z- \( }. B8 l
   }0 J' b3 c( L* D- s; y9 R1 H

+ C' ~2 }0 O7 r" ]  o   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
: w; @0 G4 j+ ^/ ^- C) `   strcpy( opt_name, env_trans );
! s3 G7 C! O& b9 F   strcat( opt_name, "hole_making.opt" );
. {3 I3 }& _8 y8 |! ^: f" K# i9 j9 x+ O% S0 r- V
   UF_CAM_reinit_opt( opt_name );! V7 ]+ |- {0 C. X0 k  p* S3 E
: b9 M  ]6 |/ c! X# t6 K
   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );
! u3 I; T$ c2 V$ E- E6 k4 M2 M7 z# {+ l$ c8 ?
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
4 `# L4 y) T- ?1 ~  q   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );( h+ e, B2 ~4 Y/ m
   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
2 v+ p( M) O8 a9 b5 F   if( answer == TRUE )
2 S3 b  O! x" I+ ^- _9 g( n      UF_NCGROUP_accept_member( wp_tag, geomTag );
! _2 H* w6 D1 N8 a, K8 ^0 i  r   else7 P3 T' p  P" f" ^
      return;
# _- x% L( [$ G0 N9 y/ I  p4 V8 T& }0 m- d% v! z8 Q
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
) o# B6 k! `9 E' l, r9 a0 L
, E7 ?6 t& ]/ j6 j9 u; c   if( count > 0 ); |* }. u7 L( J3 r$ _
      UF_free_string_array( count, feature_names );
) |- A2 z& C$ T; t- v( q0 N! i0 M$ @8 G. o' I' ^' l
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
9 A3 Q( N; G( b1 w9 n9 u( O0 V1 l. H8 f& e* v
   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
: ?; R2 @; V; e! @5 V' o% w1 z9 `5 f8 x
   if( count > 0 )
( x/ _( |" ]; d) {      UF_free( features );
7 J, A& r( N0 L' ]# |% \   else$ l8 G+ Z. o4 |) ]6 ?1 x4 P  s
      return;' E4 V; F) L: L7 q- X2 _

  T8 H( s4 W# H  u. [4 w& x* R# M   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );+ d) {5 t( k  X) J4 V; y/ E/ q
4 K/ s# O6 F1 m5 h2 y( V
   if( count == 0 )
1 d7 I1 Q! H* T; [  l) i1 h$ T      return;# c8 p% t9 v2 R8 A9 U- \4 u% O2 H- m
2 m- v. Z: M4 ?8 j6 {
   strcpy( criteria_to_consider[0], criteria_list[0] );
) e( G, c4 C$ A: E2 X  c6 L, i( N+ v8 z1 y; ?2 ~6 ^
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
% q/ G$ u6 ^# j: @$ U, u2 C                                     &num_of_classified_sets,
$ [7 l+ ^( A! H8 P4 k7 p5 T                                     &classified_sets );
3 s/ @' H4 ^1 J8 q- t' e4 i0 M# @) ^; b
   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
/ L# z- z* b" m9 }, A& [; s* z1 v7 h- t
   for( i = 1; i <= num_of_classified_sets; i++ )7 z% P- M) B6 g
   {  V( y- Z" u- D* H' k
      switch( crit_type )- C1 q# V  P3 N6 b9 C* M
      {) r9 H9 a! q' ~! H
         case UF_FBM_GEOM_crit_value_type_double:
6 k' q3 S: e7 i' H4 c# G            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
" w# M- K; l( w) y' r! |                                             criteria_list[0],
' k$ Z+ [5 P  ~7 |) L& p                                             classified_sets, i, &value );
$ l, r% `# W: u. [' H            break;
, k" I: P! Q7 B. j         default:+ S9 k. X4 E# z* X0 m+ b' C
            break;
* b% |; e* K0 ^1 U      }
- S  [8 B- Y+ H- X1 C* X2 }   }
/ L* l2 o: Y7 N9 `: s  f/ ]( L- ?! o1 _  f! w2 C0 |/ t8 v  R
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
4 _3 {# S7 o/ ?2 }7 H* V" F! l+ x) ?4 H9 H; y; S- u' Z
   return;( z, x) j1 R  i& h' |$ S" q) l4 O
}
+ w( `( Y7 I1 L4 D4 X- H0 a3 V! U! U9 v9 J, Q- E
int ufusr_ask_unload(void)
5 z) |( s) I1 R% m, F! N# y{% e$ {( Y0 L- q* i
return (UF_UNLOAD_IMMEDIATELY);
9 y) ]- U3 G3 p& @}
% I8 H6 }9 x2 W  R( Z3 w9 W6 A, R$ G% q) |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了