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

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

admin 楼主

2015-3-17 20:41:02

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

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

x

2 F, P7 u5 y- E- L( ~% c) s) t0 B# N3 g' h2 O" N' ]& J; n

: I7 ^$ j5 x, @0 \5 C/***************** Include Files *******************************************/
& O: ]5 M4 T2 h- T#include <stdio.h>
* L( a) a) _/ a7 l% p- v+ u#include <string.h>
# @  r2 R: H* c5 n' A9 I9 i% R! ~
#include <uf.h>
8 \* f7 E9 p$ k# M. |0 ?% ]* d5 g* M#include <uf_defs.h>
% r3 v6 s: o$ e#include <uf_cfi.h>3 U% I) W1 O& W) [, ^0 M" n! a, I
#include <uf_cam.h>
4 _2 r* a6 j( W$ u#include <uf_ncgroup.h>6 a- @# w; x7 R
#include <uf_part.h># R% ~; S! |% v+ {$ z5 H7 z
#include <uf_setup.h>
: O6 e5 t# i% Q9 m; M#include <uf_fbm_geom.h>' D  l( A3 P# ]- D! `( a6 S
#include <uf_ui_param.h>9 x$ n0 W" ]8 S0 B  v5 {

1 t* r, n( @9 H) i/****************************************************************************/. `7 _, p( g9 F9 }+ n
; u/ B6 [; D* p( q
extern DllExport void ufusr
. G1 v! w4 h. e(( m+ `, B" ~( I# [/ A
   char   *param,
8 x8 }( J/ u8 k5 Y; s   int    *reTCode,
0 ]2 c& ~5 v0 D8 w5 P% j   int     param_len" X0 L4 _6 j0 J& z+ ~7 r
)7 r, j2 s4 T' ~9 D) z' ^6 w
{
, Z( X+ a6 f! u   int error_code = 0;$ R! u2 |# F& L% i  H
   int i = 0, count = 0, part_units;* m( S4 F% F2 A" J9 D* }# ^
   char reason[UF_NCGROUP_MAX_REASON_BUFSIZE];
& m9 v! ]" @  O$ v* j0 A9 T- E# d, A   char *env_trans;
4 n3 ?' I, z+ }/ T! ~/ s   char opt_name[ MAX_FSPEC_BUFSIZE ];! e( q- d" k6 z6 ^7 D+ l
   char part_name[ MAX_FSPEC_BUFSIZE ];
7 _- B7 o$ z# L! @  l5 ~   char open_part_name[ MAX_FSPEC_BUFSIZE ] = "";3 l2 q# K" u9 A( K" ~
   char  **feature_names;. N' T. {: @8 S% w; o
   UF_NCFEAT_t *features;" t% n1 ]$ @- Z6 J

1 Q: w7 g4 r, R) @4 k( J6 B   tag_t setupTag = 0, wp_tag = 0;3 S' ?. p7 a; V) y& N
   tag_t part_tag = 0, geomTag = 0, geomRootTag = 0;
" u; Y; D# d0 M, [4 ?   logical answer;
  x& P3 s! o4 U9 g. c  g, |( H* u) D9 T( @  q; `& q
   char **criteria_list;+ T( N( J; i0 x; u/ L, }+ P- Y6 ?
   char                         **criteria_to_consider;
+ }" g$ T+ x0 e   int                           num_of_classified_sets;& |' m" G8 x+ I) e
   UF_FBM_GEOM_classified_crit_t classified_sets;
5 Q8 p% e. d) C3 |   UF_FBM_GEOM_crit_value_type_t crit_type;
+ @: b0 Z) G/ l( K" U. y2 Y   double                        value;
, f4 w) k$ s- l9 Z4 a   UF_PART_load_status_t         load_status;" x: \( a' I/ |$ S  M2 b
' ?7 e+ U' ~/ h4 L2 ?
   *retcode = 0;; d# R% A3 q: }& L; D

3 A4 B( d2 R0 o! i- E   error_code = UF_initialize();
+ v: e6 A! H: U' ]# O   if( error_code != 0 )
( g* k  b* f9 I, x" P3 {5 o   {
! c$ R, ^6 L1 ]+ a8 K0 l+ E: Y9 R      printf( "Failed to initialize uf %d\n", error_code );8 z9 C. E5 I, I  D8 `6 p
      return;
  i  e* j7 e* m! T   }
- P6 I& J9 y8 t
, P$ |+ B. ~/ @, G" S5 N" o& F, f   criteria_to_consider = (char **)UF_allocate_memory( sizeof( char* ), 4 k1 `7 Z* E2 ^" l* q! j
                                                       &error_code );. U$ i! S5 x$ S" ?6 O. k( U3 G
8 T! w  W9 N% g6 w- |! H
   criteria_to_consider[0] = (char *)UF_allocate_memory( sizeof( char ) * 132,
" k: @: h9 N* \( \/ B9 o                                                 &error_code );
8 p6 T4 ]. A- r( }8 n( ~  O1 }5 b8 L. d, k9 I) J

9 T0 G9 o6 t1 }" W* N) v0 Q# u   /*** This program works with the part files in the CAM samples directory! K& Q5 w; {8 h. y3 n# r
        so we need to get the path of the directory and the file name) q% r" w* E! ?+ r- j- }
   *****/
! G3 S! |. @2 @$ _   UF_translate_variable( "UGII_CAM_SAMPLES_DIR", &env_trans );, v/ r# k& q9 U2 t% h0 y1 d
   strcpy( part_name, env_trans );# t2 G/ l; h3 k& Z
   strcat( part_name, "cam_holemaking_base_" );
& E* Y4 S' e' m5 T5 u+ `' V& j
' n& d! ~9 C9 b1 n: r5 M   /*** If no part is open then open the part cam_holemaking_base_in.prt3 N7 a9 u. n1 H: M5 e& N4 u" J
        from the CAM samples directory 8 U5 e# B6 F! D7 b
        If not check to see if the units of the open part so that we can open. D$ T! W) a0 P
        the same units part
% W' b- O5 |4 Q6 n   ****/
* V$ X9 I3 F1 |3 ]! U   if( ( part_tag = UF_PART_ask_display_part() ) == 0 )# U5 e! u% k7 n' Y* r3 m* L. Y
   {
( T  q3 X/ b# p8 d       strcat( part_name, "in.prt" );
4 Y4 X6 A) |9 s   }- m" _( ]; R# o/ B% B  Y
   else9 j% K& C5 A+ b* Q& y6 T
   {
* u, j* J0 L, U7 D7 p9 [; _      UF_PART_ask_part_name( part_tag, open_part_name );, j! W2 O& \! h8 z
      UF_PART_ask_units( part_tag, &part_units );% ~+ B; x2 [+ d& P# [1 Z
      if( part_units == UF_PART_ENGLISH )
! Q. d) I: \1 v# w- n         strcat( part_name, "in.prt" );
# a  R5 L0 P* b2 m      else
( H4 L% t1 a, V4 F6 s6 C         strcat( part_name, "mm.prt" );
8 W& z, A* @- `   }/ P2 b7 x- }; M' T  ^* k

" v" |' U1 {( ^1 a   /*** $ |% |$ M* n# e
        If the file we are trying to open is the currently open file9 ^/ a6 E& C* n
        then continue on3 e5 ~% u, L% E5 {* a
   ***/
8 j" ], E; E4 T) ^/ j: [$ J! ?: q   if( strcmp( open_part_name, part_name ) != 0 )) A4 B0 D% ]3 `) v- {
   {# ~: ]& k- d9 U. @0 `# K# @
      UF_PART_open( part_name, &part_tag, &load_status );" @; E! V& T& ~1 K- `: |9 _  b
   }# r* O2 ?" \; c3 I) q8 j* S
* J4 g1 d- z( G1 {
   error_code = UF_CAM_init_session();9 z5 P3 T& B0 b" ~3 \+ t( e7 B  J
   if( error_code != 0 )
) ]2 ^5 Y0 \  E5 `8 {" ]   {" [! L# {% t, Z$ W" d3 s) o
      printf( "Failed to initialize the CAM session %d\n", error_code );" l& a2 i/ h$ x9 F! Q' d  T; `
      return;+ }, @" j. Y" Z- _$ v
   }
9 h9 H$ v# o) V5 Y2 e- f8 X9 ?6 ^8 |2 p  w4 ^0 n2 G
   UF_SETUP_ask_setup( &setupTag );
8 J7 i2 \# m" F8 q: g7 T   if( setupTag == 0 )
. g0 a1 ^* i2 m. p1 J, J   {
* N: x( A8 l% m6 i      return;
& u2 E/ y6 Z6 X& H/ L   }" C5 M  r  @% n3 y) J# ]

7 }; L! {/ c& V% ]   UF_translate_variable( "UGII_CAM_TEMPLATE_SET_DIR", &env_trans );: X" [  p5 l2 o) N2 l
   strcpy( opt_name, env_trans );
3 s  Y7 k  A# S, `0 a; S7 A   strcat( opt_name, "hole_making.opt" );
: }/ b3 f& \3 [8 L$ |3 g& ]$ L) e0 T# y% u
   UF_CAM_reinit_opt( opt_name );
/ R2 F! H9 l* N) J
$ L0 ?8 z" Q0 i   UF_NCGEOM_create( "hole_making", "fbm_geom", &geomTag );9 E9 H5 {" n) n0 D
9 U7 ~+ @+ s/ M
   UF_SETUP_ask_geom_root( setupTag, &geomRootTag );
* b8 ~% t  {- t% O& {0 l, N' j   UF_NCGROUP_ask_object_of_name( geomRootTag, "WORKPIECE",&wp_tag );
& y4 M8 r  [9 g8 j* y, D& w4 M   UF_NCGROUP_can_accept_member( wp_tag, geomTag, &answer, reason );
$ a. A! C) |( }. Q0 W$ l, z  j   if( answer == TRUE )
5 P$ ]; L* J' E  N; K8 e! [      UF_NCGROUP_accept_member( wp_tag, geomTag );
! l- s7 t! b; |. \0 ~+ I   else9 z- V0 Y2 M3 f5 ?$ @) r
      return;/ ]$ S8 p  T/ P3 R

, ?! Y; C8 A% o. g; H   UF_FBM_GEOM_ask_list_of_feature_names( geomTag, &count, &feature_names );
) m5 ~3 _& _% a3 x' W+ |' {, ?5 \4 u) E5 {3 b' y8 ]- r
   if( count > 0 )- {+ l, c6 e$ p! U8 I# G
      UF_free_string_array( count, feature_names );
8 z5 M! U9 S' t2 W$ z$ m% z8 m
- `" z8 ?8 w5 b! M0 ^* f- A" k6 o   UF_FBM_GEOM_set_feature_name( geomTag, "SIMPLE_HOLE" );
5 e9 D, v- I! e+ G
/ \: a1 g6 Z- t   UF_FBM_GEOM_ask_features( geomTag, &count, &features );
, R" n4 E- k4 _0 f7 o4 \
8 w/ T8 q; K  L0 K: s; o: R   if( count > 0 )
" I4 h4 h9 I  g* z# \( |7 Z      UF_free( features );5 B) b+ f6 q" r& T$ E& n( T
   else  P$ \: i1 L% ~  j( d! J7 q
      return;/ A. j$ l) O* p. W/ p7 u
! x' x7 @$ B! }( t7 k7 r
   UF_FBM_GEOM_ask_available_criteria(  geomTag, &count, &criteria_list );
4 J& }8 O- m9 F& s) K
. K# G1 @) _& o1 I   if( count == 0 )4 R: Q! ~; ^& e; L$ V( p! X
      return;. B" R+ c: I* g# P/ V
! X1 v" j8 Q, J# J+ c
   strcpy( criteria_to_consider[0], criteria_list[0] );. u9 j" ~% n* M. T5 T

6 S+ n" X' ]- V* \  k+ M& H  J3 _& R3 s2 l   UF_FBM_GEOM_classify_by_criteria( geomTag, 1, criteria_to_consider,
1 o  H+ x; O, c) H2 B$ X                                     &num_of_classified_sets,
/ _; I- e3 A# G: J9 h0 G6 o; i                                     &classified_sets );
+ a8 {8 I5 @* B/ J; P- e
. d7 M% i( I5 w, s   UF_FBM_GEOM_ask_type_of_criterion( geomTag, criteria_list[0], &crit_type );% g9 e" Z; ^# L4 l0 S  w  T

0 e; T# I. M$ \+ G   for( i = 1; i <= num_of_classified_sets; i++ )) _- [. c- P  ?- ^( n/ h- S) @
   {% ?# G2 F5 Z) ?* u. r
      switch( crit_type )
2 x+ z/ h" z, a) o/ V      {: N7 @- d: J) S5 c
         case UF_FBM_GEOM_crit_value_type_double:- K0 [: v+ ], o: x- Q
            UF_FBM_GEOM_ask_double_value_of_classified_crit( geomTag,
: U3 ]; b- K- r) M6 ~5 T0 {                                             criteria_list[0], " _0 C. t4 }. U
                                             classified_sets, i, &value );
' D6 o" Z( t0 s+ k* T' i            break;9 p% q. \7 D# w, I* Y
         default:' Q3 a+ C" L2 t7 O1 O3 z7 \
            break;7 A0 H1 a. G2 O6 u) }) F/ N& n
      }
, n6 ~6 a: l4 }8 F   }) Z6 n( w1 A6 Z' |
- p' G3 V' X6 l% l( d
   UF_FBM_GEOM_set_classified_features( geomTag, classified_sets, 1 );9 d' T# N/ g& e- X5 ~

' p! Q  D7 ]9 D( r3 h   return;
. y" Q( T0 R* d4 @) p}
: h+ y# y/ a0 F& o4 ^9 Y/ W  k% F5 j- k: A+ l& l) \6 i9 p
int ufusr_ask_unload(void)
; c, t4 y- X2 U% Y7 |. f0 ]6 |0 ^8 B{- E2 I. F- K; P  d# p
return (UF_UNLOAD_IMMEDIATELY);
* c. Z2 U5 g: O1 b4 ~: u+ [}& O) ?; A9 U% o/ M" @& |; V

1 Z' q/ l* ~6 F$ Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了