PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

' Z% t- L. J  [' D7 x% W
% O) C) ?6 U& ]1 F
) @+ x3 F5 t# F2 |5 }0 n/ s! D' h( F+ W5 s/***************** Include Files *******************************************/
. L4 {7 L# p: O5 Y" d#include <stdio.h>
2 h0 X! r# B9 }& B. m+ |! \#include <string.h>
, ^! z# p- [: u6 h/ q
0 N1 C: y2 |, R: }& P4 m#include <uf.h>+ R9 ^$ k- ?# l2 G
#include <uf_defs.h>
# h# t$ H( ^  O2 X9 B" c#include <uf_cfi.h>7 O; K0 w+ ^* ]1 d* z, E
#include <uf_cam.h>
) B# y9 Z9 t% P/ ]8 X#include <uf_ncgroup.h>
. h$ \2 Z2 R# E/ w- Z. s6 _#include <uf_part.h>
5 P% d, ~, E$ K# g3 H) m" P5 s#include <uf_setup.h>: _$ ]0 Q& _# b
#include <uf_fbm_geom.h>6 O6 d7 I# C) a
#include <uf_ui_param.h>% v3 ~2 x; ~! B5 I  `& ?4 v
* J7 f7 P  p+ r3 |) A. Y' d
/****************************************************************************/! T- n+ l3 v/ R- Y* E
$ U. ~' z! S" X- c  p
extern DllExport void ufusr
2 r: j4 Y* c' _+ }$ M2 l+ x(
6 s2 e% a( i% [' U   char   *param,7 L2 \; X0 V& P* h! M8 ~2 s
   int    *reTCode,2 ?# A6 ~8 O- E$ Q2 ~/ E! t1 W, |2 ]
   int     param_len+ S( D3 p, b5 t7 Q7 L7 G
)
' D; X3 G2 U2 w7 [4 z4 U9 M& q+ Z# X{
' ^8 ^. ]& N4 F$ A( i   int error_code = 0;
: C+ F$ K" z; [2 j- R+ A5 D   int i = 0, count = 0, part_units;
, e. n3 ~& G/ k  g   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];8 \" j+ j% m7 I* n" K( ?, B2 S
   char *env_trans;
1 F! c  C  d7 n* g, j   char opt_name[ MAX_FSPEC_BUFSIZE ];  f/ X3 P4 V3 {- i
   char part_name[ MAX_FSPEC_BUFSIZE ];: y) F+ F/ `5 I! c" F9 Q& ?3 t
   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";
7 u& o0 @% Y- B  d   char  **feature_names;
. T; M* [+ ~1 }; n% e   UF_NCFEAT_t *features;- g( {" d( j- Q- p9 G2 f
% t2 b/ F7 I3 K3 y
   tag_t setupTag = 0, wp_tag = 0;
( L# f; G) k2 B# z   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0; 5 r. t& T& _& s
   logical answer;1 J: T& D8 Y- K9 {
- x# c# y  S: C/ m" u# F
   char **criteria_list;& S) Y; }& p7 y7 w" g3 e
   char                         **criteria_to_consider;- w- `# v0 |9 b, d1 s
   int                           num_of_classified_sets;
. V; p4 R1 `1 z/ M$ O0 R   UF_FBM_GEOM_classified_crit_t classified_sets;
& t% G8 S# L0 ?   UF_FBM_GEOM_crit_value_type_t crit_type;+ c( Z: v: D( E3 r
   double                        value;
7 B7 b$ E; y  K- T6 g- K   UF_PART_load_status_t         load_status;
  s0 U: {' P6 [8 X1 [1 F3 l9 E* [5 \/ g( W8 z
   *retcode = 0;1 u. h( D1 W: N6 w0 {+ y1 c( n

. i* M+ @/ H+ Q9 \: a; z1 _   error_code = UF_initialize();
- D, Q, u8 r$ l3 M   if( error_code != 0 )$ i6 T: H8 w) ], F
   {
9 J5 J; v1 l% J; ], Z" q      printf( "Failed to initialize uf %d\n", error_code );
- V. D4 p1 O' j8 W3 f6 m+ ?$ n- c2 w      return;5 `+ V& k0 q7 ]% U3 J. k1 S; t
   }8 n+ i, r# ~: j/ E
* L) b: w" |& v! X; S
   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ),
3 n+ U" q2 t4 x' J2 k1 C( b7 u                                                       &error_code );
/ M+ E% p! V; V! E1 a9 m5 A
7 J$ Q; X3 P% j: F7 u- i: [   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132, # w: z$ W6 {! V8 B" \$ f  T3 [' H6 S
                                                 &error_code );; \/ a  {- {  d) Q

, L9 o2 @) i% L
1 ]* K8 k0 H3 \  k2 k3 }   /*** This program works with the part files in the CAM samples directory, C6 @  H. |3 Q6 l5 ?
        so we need to get the path of the directory and the file name
1 w7 M+ B1 V: R5 A1 `/ ?3 h, m   *****/
. f% f) E( t7 @  b8 s* `% z   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );
# v2 z& P% Y& W' C/ i0 }- j+ b   strcpy( part_name, env_trans );  m' c! ]8 T+ E0 h7 X
   strcat( part_name, "cam_holemaking_base_" ); * ]$ ]4 ]$ S8 e# k8 i$ _
% G9 q+ N$ G" |8 U
   /*** If no part is open then open the part cam_holemaking_base_in.prt3 d5 q5 E1 m: g% q& I& Q
        from the CAM samples directory
( {$ h; S1 g0 T, Z4 [' ?* Q        If not check to see if the units of the open part so that we can open
% D+ x0 s& s1 }1 f! h        the same units part
4 \3 h- j3 B9 o, ]6 e   ****/
8 L8 x( a4 X9 e+ Y   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )3 O+ }" R6 H, V
   {
" m2 X5 r8 y4 e% J8 U       strcat( part_name, "in.prt" );
1 Z% T9 ^$ U9 E* G) T   }
% |& o4 z+ M! l0 |, S& q   else# y0 w3 t2 D" d$ G$ Q, A
   {( v+ W$ a) }1 h
      UF_PART_ask_part_name( part_tag, open_part_name );( U7 R$ N7 u$ n) H8 f
      UF_PART_ask_units( part_tag, &part_units );# c9 p- M; e2 G
      if( part_units == UF_PART_ENGLISH )
( X( ~+ q* u9 q+ N         strcat( part_name, "in.prt" );
5 _# h4 E6 x* Z      else1 A, c2 V( {) ~2 H9 M
         strcat( part_name, "mm.prt" );9 z2 `+ T1 z4 m* h& ~
   }# P8 m. l  \) O) Z1 D8 ?* T
5 Q4 P9 y9 t6 Z* _; D0 j$ [
   /*** 2 M& d$ f: I9 U) r' y. E
        If the file we are trying to open is the currently open file
' o" R$ v! x- {- c# I        then continue on' H3 w& T6 z' R8 |# }+ J
   ***/- _* `* b) h% b3 g9 t
   if( strcmp( open_part_name, part_name ) != 0 )! Q9 Y! k# r, l3 n  H, F/ [7 G, F
   {
& L8 K$ d9 j# Z) t- `      UF_PART_open( part_name, &part_tag, &load_status );
- Z3 n) E9 r5 d4 ^7 U   }# p3 e4 e0 b4 B& U0 {. v, }2 p
' H6 l8 I" c% Q
   error_code = UF_CAM_init_session();( t1 o! G& M# H5 @
   if( error_code != 0 )' U, O5 u( m& t( n4 M: L& U8 |
   {
( F' r$ O" V- u6 [      printf( "Failed to initialize the CAM session %d\n", error_code );
, w& {) q, f* g      return;0 {, _6 W5 h: q( H8 A
   }8 ~4 d9 L7 m3 f: m5 a

" V9 A) C7 ?5 X" D3 I  {   UF_SETUP_ask_setup( &setupTag );
" O8 O9 F, R, A6 H' G. m2 x   if( setupTag == 0 )
0 \+ ~9 {& Y( a3 K   {
* V( ?% X; `6 X: V      return;
* O% N' J+ q: b1 }2 N# w1 W) Z& z   }
4 K. |4 \; d2 K% V& `4 K8 D6 Z4 L- ~, L7 x# r4 V! b
   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );0 @1 L! G. o' Y; A" ~
   strcpy( opt_name, env_trans );1 [+ I- ~- v; g$ I4 r
   strcat( opt_name, "hole_making.opt" );5 `2 a+ g7 J/ K, O
9 j3 c, I6 z+ _: `/ ]! v. W9 e
   UF_CAM_reinit_opt( opt_name );  N/ f2 T3 n# g1 K0 ^& @3 Q4 |

1 i( S* _3 g7 O4 D5 r$ [/ l   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );3 L) x1 g( g6 n1 L" g

: ^, D# i0 V) b7 L' q   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
* p8 I4 E7 w- U, G* F5 V* v   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
+ S/ t9 `$ C3 c/ X$ y   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );# m$ y  D1 E9 M
   if( answer == TRUE )
# x" H0 a3 z" O! b! x( c" C      UF_NCGROUP_accept_member( wp_tag, geomTag );% w% f! k6 w- `. [( E  _" q0 L& T/ S
   else# X7 r) h* L1 }
      return;( ^2 V$ V3 C% |+ B

' {4 H2 s9 Q! }   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
3 {, i% J5 V- G* z, z, \
  Y/ e, y' {" z/ I/ K  F) A1 ]   if( count > 0 )3 P. k5 z+ ~! l( h4 F& a
      UF_free_string_array( count, feature_names );
6 c* o& X$ _5 e1 u& k6 `$ |* f$ u& X9 ~9 Q
   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );8 Y8 X! \' j8 I% D
7 J2 \" O. C' g* b) i
   UF_FBM_GEOM_ask_features( geomTag, &count, &features );& M6 y! J* k$ s; |2 i* ~$ \/ O
% ]7 D$ r) Q1 O4 A
   if( count > 0 )  D1 I9 u# h  o6 l' L2 Y+ p& d
      UF_free( features );
/ v+ @  T5 S& J3 p1 ?% b+ Z+ M   else; q( ]% E2 b) q: j& k
      return;+ Z' }+ I0 ^6 f! g2 {' |

" n' Q1 K7 Z8 D+ W# I9 e   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );( ~% u: a* q' Q8 q4 R4 X! `3 m% [

0 m2 Z4 w' ~$ y# r   if( count == 0 )
  h3 H, O/ J  @7 ~# N      return;
# k: J6 A  Y6 {0 ]9 K7 u3 k3 X( C4 m. U. d! M, t( U
   strcpy( criteria_to_consider[0], criteria_list[0] );3 Y" [4 M" b1 h
2 r) \5 `1 M0 s
   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
& T" z) t9 c0 \- u& a9 {- h                                     &num_of_classified_sets,6 i! U+ a( C' s7 ~+ t) W
                                     &classified_sets );6 |) `+ ]& J7 \( A

) Z3 S8 Q! z+ ?+ W3 S   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );
8 e  W* E- w) u' E# |5 k" V9 Q% h7 t+ V* P& p) N& Z
   for( i = 1; i <= num_of_classified_sets; i++ )
/ S4 P0 ^. @, j* j$ N3 Y/ K3 p   {# g, E  t2 @/ r
      switch( crit_type )  \9 y0 A( M) W) a5 B" t" D' W
      {
& V4 h# R) u) Q  h" Y         case UF_FBM_GEOM_crit_value_type_double:7 \! z$ N- T% M, ^% v3 Y
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag, * s% ^7 ?3 s; j1 Y- w( g: M
                                             criteria_list[0],
0 R9 s' I& \1 i8 w( u. [                                             classified_sets, i, &value );4 a0 |9 ^3 v8 G: c$ }0 `% B7 @2 N
            break;
1 u' J- [9 ?* e5 }0 p! |         default:! x& K5 a: Y) D" W
            break;
) |7 u/ U: p- W1 K9 E      }
7 [% j3 s2 G5 c- G' g   }
# u' c2 ^5 [/ M0 y. w+ F
7 E* z0 U8 E. ~   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );/ b$ H# U7 K9 b* [6 ^

" M! ?" C1 ]. O" s6 R6 S   return;
4 }$ P. o6 j; ]6 }1 Q. F}. |( f$ q3 E& _0 L+ W

* h- Q; u. L) n2 P5 o8 cint ufusr_ask_unload(void)" n( ]* k. Z/ |
{
1 Y/ F  Z+ K% _7 b return (UF_UNLOAD_IMMEDIATELY);* O/ C  Q- O# p/ @/ ?
}5 S& r8 s$ ?- V) I% O# _

5 P7 X# m( }5 ^' D4 l6 P
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 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二次开发专题模块培训报名开始啦

    我知道了