PLM之家PLMHome-国产软件践行者

[二次开发源码] NX二次开发源码分享:一个孔加工的创建过程

[复制链接]

2017-12-9 13:27:49 5055 1

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

admin 楼主

2015-3-17 20:41:02

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

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

x
9 _! N( C& s5 q* n' h

# {3 a& ], h& q3 l" N% |2 P% [* m6 j$ z2 b- W
/***************** Include Files *******************************************/
% b! u' j1 V8 M' q* |; Y4 u( C#include <stdio.h>
% F, [% I- ?+ _$ S9 I, N% h#include <string.h>
, ~& C- I) {0 R2 A6 T  K" n8 O; J
( p( X3 j( R2 b$ {7 B: A' f#include <uf.h>6 _1 F: P* v- E+ O
#include <uf_defs.h>
2 \( `! C( D3 s$ t4 l9 \# L2 q#include <uf_cfi.h>5 C# |6 f% E9 P. ], P& r
#include <uf_cam.h>
8 y& G# Y" i& s" z4 w+ z/ z#include <uf_ncgroup.h>
. x  G0 O2 w* a* P9 L; z#include <uf_part.h>/ @; [+ B6 |  A
#include <uf_setup.h>
% [, O% p  y+ s& P" R' x#include <uf_fbm_geom.h>
# b7 W& P' U7 p$ A#include <uf_ui_param.h>& Z5 D+ n% N8 L- _

+ v. L$ Y. e. @/****************************************************************************/9 c# R$ c% V, c0 ^
% o: m! k" Q, R! O
extern DllExport void ufusr
9 ]; G" n% w* j, U% }: ^: _' }! ~5 |(1 n" G' k- x1 q+ q& _6 E
   char   *param,
% o( K7 }/ k3 G$ P" f   int    *reTCode,
# {* m+ ?2 j1 l2 c3 P" R   int     param_len+ S! z% y6 ?: ?( a
)
, d% ~7 U, u  K  d0 J) `{" [' J5 t$ Y$ ]* _
   int error_code = 0;
, d: G' ~# w& I% _   int i = 0, count = 0, part_units;. s5 H3 r  R- i' A
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];6 e. S: @1 f1 Q
   char *env_trans;
$ o8 W5 M( M, J; Q$ [- M2 k+ P: W   char opt_name[ MAX_FSPEC_BUFSIZE ];) D+ \+ G, v$ S0 Z! I; U
   char part_name[ MAX_FSPEC_BUFSIZE ];
9 L& Q, S; B0 Z) S3 |: G0 r2 O   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";% i+ W! T" o( T
   char  **feature_names;8 Z  u! h/ }1 j( O
   UF_NCFEAT_t *features;
/ V+ N6 W# x$ A( S- k
7 W$ A* `- ^2 Q. O, L; `+ j   tag_t setupTag = 0, wp_tag = 0;
. a5 q8 r4 O6 n2 n! H   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
$ P+ L- M3 `$ r8 B$ a8 Y   logical answer;' Q( V7 O8 W( @
4 [% G- z5 h7 N$ _
   char **criteria_list;
$ [+ g' P/ i5 X8 w8 ?% e, Z   char                         **criteria_to_consider;6 b7 ~2 \9 r. W1 j, z& k
   int                           num_of_classified_sets;
! g9 V) f4 [1 Z  t, W$ f( u   UF_FBM_GEOM_classified_crit_t classified_sets;
$ f3 @! K! [  a' P   UF_FBM_GEOM_crit_value_type_t crit_type;
+ |, i2 ]2 D# [; q; r   double                        value;
/ `8 f6 N/ L- v) ]   UF_PART_load_status_t         load_status;6 p/ G. S- I4 O+ ^% `' F5 J! R

: n+ L1 ]' X5 d. P& Y3 p. c- \   *retcode = 0;
/ f5 W! p1 P7 |! f3 F
9 _1 i+ I( \( g* D. e: w) h   error_code = UF_initialize();
- x' s3 B- e' f   if( error_code != 0 )9 A- C3 u6 @! F
   {
1 ?& B9 n8 c# {0 K) a" Y      printf( "Failed to initialize uf %d\n", error_code );
) g/ |3 S/ k( E3 N0 l      return;
" Y3 N; ^6 o  j9 {; r   }' B  h- l+ u3 @" V$ P

) S$ l% J; M0 D; n4 Y( m6 T' J6 \   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
/ {& v9 q% K2 O% @9 H/ J' L" \                                                       &error_code );' _- \  e. f& o# `4 @- I% Y
: a6 s( h: r$ Z- |  ^2 J
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
) s1 J7 G- _# g; e9 N                                                 &error_code );2 N, K5 Z/ b, q1 r' m& X

" Q- E$ g' W! |4 r/ S; c1 v5 E5 y4 r: C% j) C4 x" H
   /*** This program works with the part files in the CAM samples directory
8 S+ A9 D4 u) u. Z6 s" E        so we need to get the path of the directory and the file name: |) Q# ]- K2 t( r. R
   *****/
$ J, l& u6 S; \+ z; z0 M   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );
) N+ @: W9 [5 g' x2 T   strcpy( part_name, env_trans );
. m% a0 S8 u9 R6 t/ W   strcat( part_name, "cam_holemaking_base_" );
3 ?- l+ I) H( A5 a2 }2 t1 T9 r2 W$ e
   /*** If no part is open then open the part cam_holemaking_base_in.prt/ A+ w! x' j! `
        from the CAM samples directory * w+ G5 o# q) @
        If not check to see if the units of the open part so that we can open/ x' F+ O; y) E. v. ?
        the same units part , W0 G) U7 F4 q2 f4 h9 d
   ****/0 k* S( T% b# o
   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )- J, Z: x" @2 _3 ?: K2 ^) w( T- `
   {
4 w4 O6 A0 Q$ J+ m, P       strcat( part_name, "in.prt" );
4 T% m, b8 M) j# T3 p* W8 G. z   }- @4 O' d; w- q  N7 T, u: l. q
   else
- I( J6 e  w1 z   {* s& B/ }/ g' _, x3 I# ~0 @
      UF_PART_ask_part_name( part_tag, open_part_name );5 ?& N( P2 Z5 C6 }
      UF_PART_ask_units( part_tag, &part_units );
: {/ [' k) i( n      if( part_units == UF_PART_ENGLISH )
9 L5 Z' h+ ^9 u         strcat( part_name, "in.prt" );   i2 Y0 @1 {9 F, p; Q$ V# t  z& l" O: ~
      else
1 W9 G9 H. k" }4 {         strcat( part_name, "mm.prt" );
' A1 @$ z7 j5 [3 V5 a  |   }- L1 o* l+ U4 |

/ E( ]: U) N  R( A) Z5 x   /*** " T& J7 l, e& U( ^
        If the file we are trying to open is the currently open file
, h! ^, l* l. J3 y! `        then continue on
! Z9 P3 c& E7 i5 z   ***/+ W- o* e3 C# e- J) ?
   if( strcmp( open_part_name, part_name ) != 0 )% W) T% E/ @0 ~" W2 T$ P' o: p, f; t5 |
   {' }# ]& D  j& \( E
      UF_PART_open( part_name, &part_tag, &load_status );
* }) `" k% `2 c8 B* K6 V3 Z: [   }
- W' t5 c6 p$ k  E1 B, E' m6 }  p2 M
2 B6 A( l! B: w/ ]3 L   error_code = UF_CAM_init_session();
# ]! h+ E" s$ J2 e   if( error_code != 0 )
$ u3 k2 p$ V( Q, c1 j( @6 G. h   {
2 _, |: `! W0 Z      printf( "Failed to initialize the CAM session %d\n", error_code );
6 j4 Q0 Y( e0 Q      return;  X5 g0 f5 U- w5 M# A* @
   }4 v& D# C  y8 t4 i' f! ^
) V: l( [" S& r6 Y% R1 |
   UF_SETUP_ask_setup( &setupTag );
* t: C7 p, e& |) D7 U; k6 O6 U2 p   if( setupTag == 0 )
3 x# u/ ^. X8 I- i) Z, z   {
! |) Q$ k( }. s- Z. |      return;" C! N* T" b- E$ ]& {
   }* c2 V3 K; B9 S3 G
, I+ w& Y: l$ L" [% S# t5 Q+ s! I
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );
( F! s- |" J9 Z- J7 C0 d  }! A   strcpy( opt_name, env_trans );( L$ O8 g6 U  H% Y
   strcat( opt_name, "hole_making.opt" );. E  S* k* W- K# K: d2 U& c

3 ?0 U* v: o4 V! F# A* P   UF_CAM_reinit_opt( opt_name );/ m0 O; g  [& e& }0 w

3 k- P3 k# U7 e. e. `1 W   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );' M; M) |5 B* v+ v8 V8 x
: Q, ^; }/ p. n/ [$ F+ R6 g
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );( r9 m1 g% R3 V0 ]- u
   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
  v; f8 w- g2 i* E2 c7 x   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
5 [4 |# s2 Q: v8 W  l# M7 ^; ?   if( answer == TRUE ): i2 U* G! L) R2 w9 @! ~: D
      UF_NCGROUP_accept_member( wp_tag, geomTag );1 c/ p" m9 d0 Q4 g- h1 @. {+ J. r
   else
9 X$ w8 c; ^3 s4 k) Z- p      return;
. {; \* @2 q% V# [: w- ~# ?2 n8 R' I% B( P- z
   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names ); + I1 N, h' |( _5 a9 j" F* y
& L" a  g6 ?5 h4 ^# |$ B
   if( count > 0 )& l; o9 @6 F$ E7 b
      UF_free_string_array( count, feature_names );  E- p) ^3 C: b' p, H/ J; k* L# D
5 P5 `" b( l: B7 S& N) {  L3 _
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );8 E2 ^8 `* l2 ~% v& r8 S. {

0 c7 [) p" C3 K! f   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
! `% N  X8 y" x2 V
1 F0 k9 l* p/ E$ ^! Y   if( count > 0 )
9 N$ [& l2 k4 n/ C7 G1 U      UF_free( features );
! J+ M9 q& |, J: E   else4 Y$ X* t' u/ U6 |  \& f
      return;
( E3 C8 L$ ?7 G2 A: Y3 f5 {; A, u9 H- W% K
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );- V* C2 N! ^- C' k$ F9 t& f/ o; H
+ d/ }' c  H9 P* p/ J: [
   if( count == 0 ); n, W- m  i, z- f4 _6 F$ r
      return;0 z% Y8 R' i. e0 R* I" F7 e* u1 _
' Q' M& K6 V5 s9 N& R# g
   strcpy( criteria_to_consider[0], criteria_list[0] );
$ l, p8 R! A* A) L! t8 b) ^+ o/ e/ h- n9 _# ?
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,+ g+ h2 J5 ~% G
                                     &num_of_classified_sets,
1 L: W9 A$ o1 S. l. {                                     &classified_sets );
" s9 A( M8 ]( s2 C5 z
- R1 w' r$ R6 r5 ^0 i  y+ b   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
" ?' D5 a8 \0 o2 E7 A4 y# f5 F
2 J$ }) T+ v$ Q, ]1 N6 B4 }   for( i = 1; i <= num_of_classified_sets; i++ )
- G: T, {0 }7 x   {
3 b, M1 F0 ~( o$ w0 @4 D1 f      switch( crit_type )
  e8 v: a1 s! t& B" ?, h      {/ u3 K/ s" h( h6 V9 i" s
         case UF_FBM_GEOM_crit_value_type_double:
* H, T9 [3 u! @7 r4 I/ r            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, : t6 W1 V, z+ t# `) S7 Q
                                             criteria_list[0],
# G) V* H$ N1 k4 }                                             classified_sets, i, &value );
5 H! D* b' ]) C- Z5 q: o) E! V- p            break;9 w6 ?% Q* A6 K2 L# Y  V, Z
         default:" e9 g3 Y3 }: \% C3 h
            break;% q4 d8 q8 r% S  Y% O3 Q3 T
      }$ Y9 q1 \) g# O0 Y- d9 b
   }) p8 P2 F( t& @& g0 @' \" |  t

! A) I- G) d* m   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );
3 A9 l0 n" l" ?( K9 T9 A+ k& V- \, b( u+ Y' e3 J3 N
   return;
, {: m9 t7 ?! L3 Y% f- |" I}
9 {( X- U2 u3 d; D; {+ [5 w% f4 C7 s
int ufusr_ask_unload(void)9 [- b  j7 o- l3 @! J6 k
{: w) s% w. a( V, |
return (UF_UNLOAD_IMMEDIATELY);& w* Y' o! [5 }/ T. c; Q9 {
}
% U' Q+ R3 m. Q+ E/ V/ a5 T7 B9 S' Z, g' N0 q3 v6 u3 o! K2 r8 s1 }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了