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

[交作业] 第二课圆柱创建轴线

[复制链接]

2015-7-27 11:00:52 3013 1

且听风吟 发表于 2015-7-26 22:12:05 |阅读模式

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************
& v/ q! D$ n% {**
1 R7 \3 O* M5 y7 T& T* X** test.c
' J$ e/ }& N9 P7 s" |5 H**
! }" U* |/ X" X. l2 H- x8 q** Description:6 l7 c9 H4 y9 m2 E" x* Y
**     Contains Unigraphics entry points for the application.
) I+ L9 l  ]2 L' L$ Y**- o  {) f1 G- G( d
*****************************************************************************/
" w8 R  r- D. N% y. \* l/* Include files */3 U. v4 d. I) z, r
#include <stdio.h>
- `5 w$ s$ O! ]- d2 b& {#include <uf.h>
2 q3 S, v9 G3 ~( U. q" R" I( n' P#include <uf_ui.h>
9 K3 T& Q- \9 @3 K5 T- _#include <uf_modl.h>3 b: b/ t  p- r' Q* k9 g
#include <uf_curve.h>
8 r7 D7 V5 W; T4 @, g0 j6 L6 u/ b#include <uf_part.h>) Y, K9 I1 o  w
#include <uf_modl_types.h>
" m% X7 ?" P8 p$ r1 ?3 E. P! n! \#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
3 Z: h, X* F3 K+ Z, \" ^static int report_error( char *file, int line, char *call, int irc)
1 f; K! s- C% _1 ]6 o" R{
  g% _  \6 P2 }: n" \" F1 ^    if (irc)( a7 L- ]- I+ _) J1 I! ^3 r, j
    {
- y5 h3 r, s7 ^1 }+ @7 Q9 ~        char err[133],
) |) L. i+ I% z& l             msg[133];
, W5 d* v7 f5 c( Y% a8 b) Q! \        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
# c) t: v) R& r9 H3 f2 f            irc, line, file);
! S! U: s% ]3 P# B% P- p        UF_get_fail_message(irc, err);
4 [. e9 B/ h4 n  B$ w/ z        UF_print_syslog(msg, FALSE);
: m  s- J: B) K( g* U5 M$ s7 @& \$ M$ o6 K        UF_print_syslog(err, FALSE);4 e! d4 v8 ^8 i* r# Q0 I/ c
        UF_print_syslog("\n", FALSE);
; w% ?% Y, \! \        UF_print_syslog(call, FALSE);' Z# q! H* a) h
        UF_print_syslog(";\n", FALSE);
2 c! g& m- _# O( O+ s        if (!UF_UI_open_listing_window())
3 Z2 x1 _. [3 m) k" [5 J# f  c        {
0 O  Q/ }$ X8 l  [            UF_UI_write_listing_window(msg);1 \& @' a' ?: C$ m# }
            UF_UI_write_listing_window(err);
0 V/ L, ]( g  ]( z/ r7 r- p( ?/ k            UF_UI_write_listing_window("\n");
% G+ I1 ?7 k) v$ t  q            UF_UI_write_listing_window(call);
; i& ]* V. a- B; x9 Y/ K            UF_UI_write_listing_window(";\n");
, M7 B2 m. D5 a        }
) y0 s8 t' U* o  c  @4 L4 U( s    }
( k2 [6 v. H: R    return(irc);4 C6 t; h% d. V* i) N
}
8 ^3 v  h1 h4 ]7 P2 b" n( H. {$ I: ?# h! _3 c3 ]
/*****************************************************************************
' [& A6 q6 z. J9 L**  Activation Methods3 o6 a% g" f# ^2 \0 O+ v+ X6 [! i
*****************************************************************************/
; p# K& b+ n, a9 A/*  Explicit Activation( m4 C! b0 `; f3 W6 P
**      This entry point is used to activate the application explicitly, as in1 ^5 J8 C/ ~$ q0 i1 t: d
**      "File->Execute UG/Open->User Function..." */2 @+ W( l' H  h1 C; Z6 h
tag_t part_tag=NULL_TAG;. ~' |# G: ~* i  E. X8 O
tag_t tar_tag=NULL_TAG;9 w0 s3 j. G( c+ E6 ~; r
double origin[3]={0.0,0.0,0.0};2 i) _& l9 ]5 ~! x
char *height="30";
/ \# x' `* S4 j, C$ s3 schar *diam="100";
  ~8 G$ R+ V5 u; sdouble direction[3]={0.0,1.0,0.0};
4 u5 ]) k4 I4 v8 Z/ Ftag_t cylinderfea_tag=NULL_TAG;6 @) I6 J5 c5 J& p1 Y6 m
uf_list_p_t edge_list=NULL;! W2 l7 I* t0 t( Y& B8 D
int edge_count;
' |9 b4 p: `! a5 ?: f" lchar msg[256];& a* |. Y  _1 C$ H) O( q
int i=0;$ H7 c) z5 O0 k+ N/ G9 ~  I9 M
tag_t edge_tag=NULL_TAG;# ~3 w- F8 g6 s# F) x7 i
tag_t curve_tag=NULL_TAG;6 V, \( i. `3 z, H# A4 j1 q6 X) J
tag_t point_tag=NULL_TAG;' E8 K: w+ U+ R4 @+ A5 F
tag_t line_tag=NULL_TAG;
& N: ^2 m4 \* D5 i6 ~5 @5 `3 W; `tag_t point_tag2=NULL_TAG;" E+ R. o# i" n0 V  O9 p% X0 G
double cen[2][3];
; }1 G3 {' _3 K4 x' EUF_CURVE_line_t line_coord;//最好不要定义为指针4 d* R* E4 q+ N% @3 Q
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
0 I" V- w- i5 _: j4 G{
7 j- _, t* s* k( H    /* Initialize the API environment */* J7 x3 z' K9 h2 B' D' F& Q
    if( UF_CALL(UF_initialize()) )
- J4 T$ y6 ~- {4 v    {. I( L: P. o7 g* l
        /* Failed to initialize */4 G. w- v) `, k1 _# Z  A; l
        return;9 \$ D( G) h* T: e; d
    }
, \" B- b  f- I% Q; ^   
) ]  ~9 i' N5 k2 R' ^1 J- V7 O3 ?    /* TODO: Add your application code here */: O* q6 ~# ^) J6 P' B
//1.create a new part4 m3 q7 n: B; v% c$ s8 v1 Q; d( m" `
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
% K  k' v8 m, l* V, K //2.create a new cylinder3 _  a2 O5 Z# m. J8 O: T
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
$ W1 U" p5 z! P) T" }. X //3.get the edge list
( J! {6 a. B3 _( c5 v$ |( R' E" V UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
1 E8 S6 C1 B7 N  R5 l/ y- s //4.get the edges" c& J/ \4 u. f0 M* y' o& g
UF_MODL_ask_list_count(edge_list,&edge_count);2 X5 C7 Y% N' g0 v, Y% l+ w7 A( v7 A
# }8 W; w; G7 u
//5.get the centers
1 X2 u$ O0 J2 C) [) S for(;i<edge_count;++i){3 k( H1 o$ I; K0 ~3 ~) I
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);& D, Z0 ~; L. w% q
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
  H; b  A3 X& _( n  UF_CURVE_ask_centroid(edge_tag,cen[i]);: F! Y$ M1 @# _8 P( O) T
}
7 o" h) r6 j& [  x2 \ //6.create line+ n  E0 V$ o) ?: w
//UF_CURVE_create_point(cen[0],&point_tag);
& I) W) q- ^( f //UF_CURVE_create_point(cen[1],&point_tag2);
" `2 R+ m1 D( N, `) i line_coord.start_point[0]=cen[0][0];
& ]( V. T3 \$ P3 B7 s( ` line_coord.start_point[1]=cen[0][1];
3 z' M* p2 p( b6 S4 }$ Y line_coord.start_point[2]=cen[0][2];( ?: m( s, F% Q5 C& q$ l
line_coord.end_point[0]=cen[1][0];
& f; a3 }: {6 i/ M) V" M6 N line_coord.end_point[1]=cen[1][1];
& d1 X: t) ?# q# f3 i6 f  [ line_coord.end_point[2]=cen[1][2];
. E: X4 s5 Q0 e UF_CURVE_create_line(&line_coord,&line_tag);
! L* c% s' K' c: m7 V+ S //UF_MODL_ask_list_item()/ {8 K0 [1 d$ h9 y4 l
    /* Terminate the API environment */
9 X% g* ]! d7 C/ w- b. i    UF_CALL(UF_terminate());. z  _# ?& @% R" t) j! W
}
( r& _/ y6 n7 {, L  J/*****************************************************************************
; C' ~) w  Y+ `) q6 r6 r**  Utilities
7 }% b) o, X( t9 p. [  w) i- ]*****************************************************************************/* n; K6 F4 V8 {& b. ]
/* Unload Handler
, r% F! i3 w. f0 J# Z**     This function specifies when to unload your application from Unigraphics.% o+ h+ ~. }7 s3 Q& h
**     If your application registers a callback (from a MenuScript item or a4 C* [4 s. z! t+ v& |: c
**     User Defined Object for example), this function MUST return
& ]* U6 l$ w! Y: Q9 P7 w**     "UF_UNLOAD_UG_TERMINATE". */* c  C# m- t5 _- C  @! q" J6 _. @
extern int ufusr_ask_unload( void )
# T8 G2 C% R3 }+ @( ?% e) ?{
$ I4 D) c3 N+ u* a  y    return( UF_UNLOAD_IMMEDIATELY );
4 w6 \8 _$ V  @2 m: {}# T! \+ x% j5 M6 E( b' R

2 F# e9 ?% [: l

评分

参与人数 1PLM币 +5 收起 理由
admin + 5 很给力!

查看全部评分

上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

admin 发表于 2015-7-27 11:00:52

admin 沙发

2015-7-27 11:00:52

继续加油哦 !!!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了