查看: 3158|回复: 1

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

[复制链接]

2

主题

21

回帖

270

积分

培训VIP会员

积分
270
发表于 2015-7-26 22:12:05 | 显示全部楼层 |阅读模式

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

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

×
/*****************************************************************************
. `, c& b. w1 u5 O1 u9 G. E**
. ^) u# Y5 k: w6 M** test.c
( e1 ]# }" _; B! h' c/ r; ?**" Z' I1 t- s& X- G6 F
** Description:
2 A- R4 Q3 `$ v5 z, s5 r**     Contains Unigraphics entry points for the application.
: N5 u/ _  |- v1 `$ V6 h& b**( t% l! y7 }7 [# D) q
*****************************************************************************/, |6 t* @8 s  h2 R
/* Include files */
5 \6 M' J6 k7 z' p$ @  g: U% X#include <stdio.h>/ Y8 r- e2 ~. \
#include <uf.h>3 s" A; ?/ P. A
#include <uf_ui.h>
; _' e" e( ?; n, L- ^- X9 R# F#include <uf_modl.h>! W# Q8 g7 l, |9 f. G, |% r8 `
#include <uf_curve.h>
" v8 z% U, A! v8 w( o#include <uf_part.h>
: ~; d. i2 D  v6 ]. j#include <uf_modl_types.h>% e. U  g& Q" Z
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))* C  p6 _+ d& q- |
static int report_error( char *file, int line, char *call, int irc)
1 H) ^* w# }! l7 s{
/ {) ?0 E' B7 n7 }2 W* ], T$ c    if (irc)2 V$ H3 w6 f( B" ?
    {6 t  c3 t1 g2 h
        char err[133],, P9 x: Q% O: `. R$ _& B
             msg[133];/ E4 y: N1 B/ E1 a
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
1 J. X8 U  ^! C$ [) n  z            irc, line, file);
# j2 X6 H6 R/ N5 K5 [5 l/ V        UF_get_fail_message(irc, err);0 j' S( r2 }" W5 W, d
        UF_print_syslog(msg, FALSE);
# ^# ^; N4 \& e& Y3 J( S        UF_print_syslog(err, FALSE);! y: f+ k/ C# d0 i9 `5 N
        UF_print_syslog("\n", FALSE);) `5 l. S* ?& Z4 n' V8 }5 F1 C
        UF_print_syslog(call, FALSE);
3 d: c4 m* s  X: O2 y        UF_print_syslog(";\n", FALSE);
% ?5 P9 r! Y3 _        if (!UF_UI_open_listing_window())
" Y1 o" a; G1 x& g! M        {
7 C  L% B6 s) b7 M( s* l$ w            UF_UI_write_listing_window(msg);) ]0 K3 e' u2 A6 M1 _# T: X
            UF_UI_write_listing_window(err);
) @% x3 u- n- ~* Z  j            UF_UI_write_listing_window("\n");# o3 q1 P* N, B; l0 x: b$ v
            UF_UI_write_listing_window(call);
- ~  m9 \# q% l" d            UF_UI_write_listing_window(";\n");
$ T+ W2 v: {# r0 b4 T% H: e) x        }
- {5 ?' d4 o* \8 z+ z/ h9 h8 u8 L    }
' y6 ]1 ^- H. n3 T7 Q, i( p9 d3 ?; r    return(irc);' X% M$ Y. Z4 k4 [
}
& [* A8 m; X% u) Z: x& a6 P0 D2 R5 _1 g; z
/*****************************************************************************; F5 v5 n7 I  |: f8 Y
**  Activation Methods
8 F" B( J5 J6 {*****************************************************************************/
( z/ s) j9 z, o+ O/*  Explicit Activation
* _( J' y. z9 r+ A7 ~0 W**      This entry point is used to activate the application explicitly, as in
4 Y6 q* T. ^! O$ Q, g**      "File->Execute UG/Open->User Function..." */) u% k0 Y: L2 W) c9 X4 B- P
tag_t part_tag=NULL_TAG;: |" h7 A' m2 K& W$ S9 N4 J* O
tag_t tar_tag=NULL_TAG;
0 ?) S5 T. ]% h  ?double origin[3]={0.0,0.0,0.0};/ v. m. p8 E: N* G
char *height="30";
0 E: x  V) v( i# r4 x& Pchar *diam="100";! `: a5 w& d2 C4 Q
double direction[3]={0.0,1.0,0.0};
  X! w3 m( M% a, itag_t cylinderfea_tag=NULL_TAG;
" v" l+ ~& W6 c1 Huf_list_p_t edge_list=NULL;7 _  v# r/ _3 j, U8 y% z
int edge_count;& E8 P! w0 n2 f4 ]$ S
char msg[256];( R+ ^# i! [: `9 \5 P3 X
int i=0;: z) N$ v6 W1 j* p6 L- z$ f
tag_t edge_tag=NULL_TAG;
7 q8 h- a$ n7 N, }# B" [tag_t curve_tag=NULL_TAG;1 I* D* x) d) s1 W3 E
tag_t point_tag=NULL_TAG;
0 g8 E3 u+ p( M* Dtag_t line_tag=NULL_TAG;6 z5 u8 P0 n% F/ C
tag_t point_tag2=NULL_TAG;) ~& V( o9 h7 C, K
double cen[2][3];6 m( e! T. R8 m; @" D
UF_CURVE_line_t line_coord;//最好不要定义为指针( g6 |. A6 O. O: s; a" g; a3 A& q
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
5 P7 _5 R( V4 R  U4 z* ~) B3 h{
" @2 d. F- _1 h( c9 k8 X: y4 H    /* Initialize the API environment */: j( H9 h+ ?+ F6 I
    if( UF_CALL(UF_initialize()) )
$ x! `6 L  h  M  t+ p2 Q- x1 P    {  O9 O% [+ Q: Y, D  [0 y* u* V3 J, e
        /* Failed to initialize */9 a  e: I; q" W9 Q
        return;( X" {: F9 @7 \( o
    }9 X* e* P. `8 Z' {
    ! W) b: Q4 I; S3 v1 {
    /* TODO: Add your application code here */; [  R: Y/ m. {
//1.create a new part
( c4 o* e$ H1 o% Y' ? UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
! Y- a9 i0 _3 c4 N8 ?+ F- T& _3 x //2.create a new cylinder
5 P; Q4 T4 B0 G8 u6 a UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
6 r0 u! t) G9 t# W& p% O //3.get the edge list0 t; J7 x& I! a' Y3 D3 @. ]
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
2 u" _% i& X% G9 N7 a //4.get the edges
  g6 z! ^2 E2 H UF_MODL_ask_list_count(edge_list,&edge_count);
2 t( J, n/ O. N) H" ^ & w( M7 y- V1 N0 L8 P/ |6 W7 n  p
//5.get the centers
$ |4 t$ s' ^# B5 ?( K for(;i<edge_count;++i){$ W- m+ p- E0 b: u9 ~% w  A
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);) x3 z9 w. t# I6 {4 h1 q+ Y+ X
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
8 A6 q6 z8 Q& U( q  q  P5 G* t  UF_CURVE_ask_centroid(edge_tag,cen[i]);! F/ i8 u" \3 R8 ~" y
}
* R& |4 I3 ?6 a2 d2 f8 S2 f //6.create line
5 x$ p4 b' u7 E7 ]8 Y! _ //UF_CURVE_create_point(cen[0],&point_tag);) `# ~* O+ i. Z
//UF_CURVE_create_point(cen[1],&point_tag2);# v4 E/ _; t: P3 n8 K: ?! X% O9 X
line_coord.start_point[0]=cen[0][0];8 O6 i8 T' k! H7 b) z+ D  ]- P- b9 q
line_coord.start_point[1]=cen[0][1];2 E( Z. R  w5 v
line_coord.start_point[2]=cen[0][2];, P7 ?1 G6 Q- w: ?! f+ B, W
line_coord.end_point[0]=cen[1][0];
: F, B6 s' F5 v( T line_coord.end_point[1]=cen[1][1];
0 X9 s) M4 N, O line_coord.end_point[2]=cen[1][2];+ Y. c  `: |2 U% x+ O5 N+ N) h
UF_CURVE_create_line(&line_coord,&line_tag);, J* r8 F3 A2 \# V
//UF_MODL_ask_list_item()
1 Z( Z# v& E9 k5 Q3 ?3 _: t    /* Terminate the API environment */& W2 t* \" C% Z" i6 F
    UF_CALL(UF_terminate());
# ]+ g& b$ w7 A* @. A$ n}
9 ]7 h& X2 ~7 @: V4 E/*****************************************************************************  k, c- h$ u+ K3 h5 c+ l/ ?+ \' L! i
**  Utilities  c) s4 h$ M! b  {% V: J5 R
*****************************************************************************/
, o: d9 P( p. N* x/* Unload Handler
7 l9 J8 I* a2 r0 S) F; U% ]**     This function specifies when to unload your application from Unigraphics.
5 s$ i3 o/ T( |, h# |, E7 L! `**     If your application registers a callback (from a MenuScript item or a# q, D4 x; j  X- T: n5 |
**     User Defined Object for example), this function MUST return
3 j  R1 ?' S& U**     "UF_UNLOAD_UG_TERMINATE". */
# a% m) y4 H8 }0 Kextern int ufusr_ask_unload( void )6 k- i7 b) j( a
{$ p6 w# ~' e' g4 U. w( c  F
    return( UF_UNLOAD_IMMEDIATELY );
- u' L% Z3 K0 z& w# G" _9 i3 ~8 u}" S) z7 q: t( l

4 U  P% c# p9 g

评分

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

查看全部评分

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

使用道具 举报

4

主题

3

回帖

44

积分

管理员

积分
44
发表于 2015-7-27 11:00:52 | 显示全部楼层
继续加油哦 !!!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部