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

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

[复制链接]

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

2

主题

21

回帖

270

积分

培训VIP会员

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

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

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

x
/*****************************************************************************
( h' E& U& u( c1 D  t) x**
+ P" N; e; m8 H* v** test.c
' F# G6 e$ o2 s! ~**! h9 x6 F( Q+ N: d# q
** Description:
9 a7 v) n! t0 n+ n2 Y0 f! H0 H**     Contains Unigraphics entry points for the application.6 l% X0 F. M$ I4 H% t! n
**
  B' [: v0 J; l* o6 E*****************************************************************************/7 @4 e. |7 [4 X9 |
/* Include files */6 p1 Y; i) J' l
#include <stdio.h>
8 Z' O1 e, N9 e5 s% }#include <uf.h>
6 i6 ?( l! M! e/ y: \0 c2 D, C#include <uf_ui.h>
: k  N: [4 H4 I  b1 B2 i: @8 ?#include <uf_modl.h>0 Y5 W$ p5 ^) h5 F% i! R% k
#include <uf_curve.h>. t% T! u2 p' N
#include <uf_part.h>" s- \4 c2 j( P! p0 L( V
#include <uf_modl_types.h>5 T; }' }* i5 Z' |% f) N
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))) S4 E( F+ J1 a2 V/ E7 Q; \
static int report_error( char *file, int line, char *call, int irc)$ ~# M5 x6 S5 h* \% X
{
* G; L& o* o* b1 L! H, a( m    if (irc)
: w7 X( f, K9 ~: x3 l    {2 t7 G8 |7 g, {* P9 V5 i" `
        char err[133],+ w9 P8 Q: ]  ^" |4 v3 u8 [
             msg[133];, o$ l$ k, M, Z2 V: q: P4 d# \% F
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
3 D' o- a7 u1 R9 H* t) a1 \3 w            irc, line, file);2 B' D2 n1 F3 J4 @
        UF_get_fail_message(irc, err);
" U5 \/ ~# t+ Y: i) i3 E        UF_print_syslog(msg, FALSE);
+ e; o3 r! w3 ^7 e- b        UF_print_syslog(err, FALSE);
' d! X. W" V4 Q4 _        UF_print_syslog("\n", FALSE);
0 e  H/ m8 ^5 o, O# R( j        UF_print_syslog(call, FALSE);
: f& n( q! P) q6 c! |4 d        UF_print_syslog(";\n", FALSE);
; g* a( R: w; r+ s& B% N$ n        if (!UF_UI_open_listing_window())1 A5 k* J: T  |* ^
        {8 i5 m5 i, ]9 E, t2 {. f
            UF_UI_write_listing_window(msg);
) M) T+ I$ P, z3 [6 J# R9 f* n            UF_UI_write_listing_window(err);
* p9 i% }: D+ c/ [/ P            UF_UI_write_listing_window("\n");
- I! T, p; d! V! m* Z            UF_UI_write_listing_window(call);8 j6 f! C/ v9 n  _( V) W" A
            UF_UI_write_listing_window(";\n");
7 ^# x) z# }. b/ I( O        }
( Y+ m2 d% B  v/ p% |( k    }
5 h; W6 j$ O  r- w$ u* J; }7 n    return(irc);
% P; n0 t: c4 m4 L" W: y3 A1 z}
1 y9 P/ u" o* m, W  T1 a& A& C0 X' u" {. H' q, e
/*****************************************************************************
- W$ b- t6 ^+ ~5 X( o+ {**  Activation Methods
$ D% {9 g" B2 {: ~+ X: m*****************************************************************************/3 y: F# ]$ L. W- [
/*  Explicit Activation
2 a* U! }1 F, E/ o**      This entry point is used to activate the application explicitly, as in0 ~* Z# C! ?7 w
**      "File->Execute UG/Open->User Function..." */+ r$ A. s+ m4 B% z
tag_t part_tag=NULL_TAG;, o$ E  x  e: V: W9 S; p9 T
tag_t tar_tag=NULL_TAG;
. v: {8 g4 c  Vdouble origin[3]={0.0,0.0,0.0};" B: C- ^( S7 C& D; r  i) f
char *height="30";
) j6 f7 j1 X  O, J% m5 u7 T# Ichar *diam="100";# h6 d  N$ H9 r1 D9 j3 U4 [
double direction[3]={0.0,1.0,0.0};- L3 n/ X" u* h. j7 a+ E! `2 W
tag_t cylinderfea_tag=NULL_TAG;" X: h' U" K1 @& A4 S1 y
uf_list_p_t edge_list=NULL;
5 `5 C0 H2 v: {/ D& wint edge_count;! l+ E* c1 j$ e( c
char msg[256];
3 @0 A4 o6 B/ C3 u+ `( |int i=0;$ B- ]# @& N- U) P7 t6 }' c
tag_t edge_tag=NULL_TAG;
9 Q! X$ U. G3 }) P# wtag_t curve_tag=NULL_TAG;
+ W* ]2 @' v, O1 U9 Ptag_t point_tag=NULL_TAG;
1 g1 j, a$ v, u0 U: htag_t line_tag=NULL_TAG;, o( R+ B) U4 l# V% {" u
tag_t point_tag2=NULL_TAG;
' d2 G) B* s+ e, B# zdouble cen[2][3];- [* i6 X$ B! W2 `) K6 c" c+ k
UF_CURVE_line_t line_coord;//最好不要定义为指针2 I/ ~+ n: q+ t% {) ?, v& V
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
# M1 p! V' ~( Y' `: ]{
4 {& U$ G$ b0 r9 I    /* Initialize the API environment */
- P5 U, L4 ~* P  K) ]    if( UF_CALL(UF_initialize()) )
; ]2 H3 ], i! s1 D4 U; r$ q& h  x5 j    {. T! `3 r! _- f4 U' g2 a" n0 A8 i
        /* Failed to initialize */
. n3 A1 |/ Z- h, k2 C8 w        return;% |$ T- |/ Z# t+ L% Q
    }
+ [6 F* P: \0 _    , h1 J0 Q& D7 V" Z$ t! H: h7 ?4 E
    /* TODO: Add your application code here */8 i/ Q0 w5 c3 V/ }! P
//1.create a new part9 w: Y2 Z7 j: ^
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
' l9 b1 R9 b- S. \! k //2.create a new cylinder( Q6 l0 ]( S; n5 T: j
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);! j, H) X9 C2 c4 r) w' I# L- p: c6 ]
//3.get the edge list+ @0 q# }! g7 Y- g
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);; ?  g0 ^$ h; X; Y4 j. I2 z
//4.get the edges
  r3 H6 W; J! M7 }& y2 I+ C3 o& _ UF_MODL_ask_list_count(edge_list,&edge_count);
2 J: i$ \6 }. W4 a
3 M; z$ H, k7 k% x //5.get the centers
8 I6 Z. `  D& j# s4 u for(;i<edge_count;++i){$ B+ U( g' C" I3 ^' w
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
7 _& F2 F( ?; V% x$ K  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
. l) @: M7 i$ y  UF_CURVE_ask_centroid(edge_tag,cen[i]);
4 g0 P& F) E& E( y+ n }/ @9 p, K" u+ b1 T6 {8 _
//6.create line
2 Y1 o' J+ Z% a6 p( I2 q //UF_CURVE_create_point(cen[0],&point_tag);
# y6 x6 P- i% @ //UF_CURVE_create_point(cen[1],&point_tag2);
5 H5 @5 `: L! \+ m+ {& T# h line_coord.start_point[0]=cen[0][0];6 Y) a0 K+ \4 v& O
line_coord.start_point[1]=cen[0][1];
' m" q! H" A5 \+ d line_coord.start_point[2]=cen[0][2];6 T% g  h* e! \, V1 t
line_coord.end_point[0]=cen[1][0];
) L/ I  K! d! v. L& W/ D line_coord.end_point[1]=cen[1][1];
, {" B  }: \: ~6 S line_coord.end_point[2]=cen[1][2];
+ p' U6 a4 w7 ?9 ^3 s UF_CURVE_create_line(&line_coord,&line_tag);$ {; e  Y( b/ N; v: q) h
//UF_MODL_ask_list_item()
" I0 `0 G$ `; T, A2 y9 M    /* Terminate the API environment */
% L! ]+ \, c; x5 O6 y: K/ i    UF_CALL(UF_terminate());
, R8 d" Z# D3 y- Q0 a}% x9 h( h: i+ v" M
/*****************************************************************************8 m# w8 t. V: k. ~* U
**  Utilities8 A/ d; j9 P5 O
*****************************************************************************/8 P8 K! G9 ~7 `7 f, i
/* Unload Handler
* [8 @" \3 b! J9 p3 R. E+ ]2 M**     This function specifies when to unload your application from Unigraphics.
& l1 w6 Q- S: N9 k9 R**     If your application registers a callback (from a MenuScript item or a: w0 S* t2 Y  [8 q
**     User Defined Object for example), this function MUST return2 ^. m% B) _6 ?
**     "UF_UNLOAD_UG_TERMINATE". */
( ?) s1 x( X, h2 Iextern int ufusr_ask_unload( void )' D0 Y2 U3 m1 |, p2 t
{: q. C: M6 _: w; Y% c# E0 k, \% i- w; o
    return( UF_UNLOAD_IMMEDIATELY );
; c9 s& O9 w0 Y; @% |1 A}
# k5 g% X8 l, W
- o" H+ ]6 l+ ^" y2 _% ]- H! v

评分

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

查看全部评分

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

使用道具 举报

全部回复1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 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二次开发专题模块培训报名开始啦

    我知道了