PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************5 u" L6 r# l& f; r
**
( V% i. P  I9 X) |** test.c
6 w# {+ [- J( z( f**
3 v+ a: u9 w6 C! C) c; V7 w8 o- M** Description:3 q) ]8 C( l3 p: ]: P# M1 @6 V
**     Contains Unigraphics entry points for the application.
& k/ i6 \$ p, i8 D) Z: a& y( N**
  ^$ K5 r- c: |' I2 G*****************************************************************************/
* j$ Q5 b; M! ?+ g, o/* Include files */; o, N3 y; c8 r% C3 d
#include <stdio.h>3 \  g9 p; x8 r7 {' Y2 O9 }/ q# v8 p
#include <uf.h>
  t* V' L* M9 Y6 t/ i9 n#include <uf_ui.h>7 C' g' K7 r2 M$ v9 V& |" U
#include <uf_modl.h>1 `2 Q" f, j. Z: r) y: ^9 e
#include <uf_curve.h>
3 n# Y: V) L! L' H/ T0 L#include <uf_part.h># O: i5 E5 c4 h# J! r
#include <uf_modl_types.h>6 a2 x6 [+ j' R  }& V- W
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
" L' Y8 R9 d4 ]) T, pstatic int report_error( char *file, int line, char *call, int irc)  H0 _9 V' Y# K' t/ q
{
6 P; ]0 k1 n4 r1 k9 o    if (irc)& I! h- _% x" b) |* Y
    {
. ~" a, v  W5 I" ?7 }# g' ]        char err[133],
7 T, s# i9 G4 [+ h+ P             msg[133];4 j0 R) u$ n+ B) N( L5 Q
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",) {6 S& ]+ d' T" n
            irc, line, file);
" m  n2 t# e% f        UF_get_fail_message(irc, err);
" R' b. h' e' s: T; W* u, B9 c* r- h        UF_print_syslog(msg, FALSE);9 e0 {4 J1 B( o4 H4 [' o. U9 t; o
        UF_print_syslog(err, FALSE);
. F7 P; d: O$ w6 s  T' l8 R: ~% _$ L        UF_print_syslog("\n", FALSE);
- c* e* Y( |) O        UF_print_syslog(call, FALSE);1 U6 L& I* G' M* y5 W
        UF_print_syslog(";\n", FALSE);# U; N6 Y9 \! |4 c) M3 X. X
        if (!UF_UI_open_listing_window())! h& M. l# K9 [( u
        {! M! w% t& o4 Y
            UF_UI_write_listing_window(msg);; u$ \  b! K) h$ K& t9 ^1 {2 U
            UF_UI_write_listing_window(err);  l0 n& S1 \6 Z; E! q3 k; r
            UF_UI_write_listing_window("\n");
' j# K( i8 \; M& m' N- E& `- f            UF_UI_write_listing_window(call);3 |' O' b  {3 U* c& B& t
            UF_UI_write_listing_window(";\n");* m9 y2 B8 l5 m& B( i2 r
        }
+ U* J" c2 H8 H) D    }
8 |4 r+ c% r  \, y  P. P    return(irc);% I. T/ i2 R# _* Z1 g9 v7 \
}
4 K. ~, h/ T( n: y! U& d+ O3 B* Y! E# h( b# @8 L) ~" T
/*****************************************************************************! t. w( w8 M" B. S
**  Activation Methods
) Q* R+ Y) D6 E) E& l*****************************************************************************/. \( ^4 Z: d0 o# r
/*  Explicit Activation
7 c$ Z8 s/ j( E+ y4 p' T* s/ k, `**      This entry point is used to activate the application explicitly, as in
; r' b+ ^* H2 ^+ H! h. p& ~**      "File->Execute UG/Open->User Function..." */; L( e' q$ z1 J+ j, r6 o8 o7 U8 }+ a
tag_t part_tag=NULL_TAG;
1 Q& ~; l1 {) E/ ?tag_t tar_tag=NULL_TAG;% ?/ I* X; h! r8 O$ v, E
double origin[3]={0.0,0.0,0.0};
/ I8 X1 b. R+ F# f! wchar *height="30";
& ~6 J- O9 D$ h# u& d' x5 nchar *diam="100";
' ?4 l2 e8 g! d! }% wdouble direction[3]={0.0,1.0,0.0};5 N( j8 ^: s+ }3 c
tag_t cylinderfea_tag=NULL_TAG;
0 M2 V: ^! I* p) L' b! P# o- kuf_list_p_t edge_list=NULL;0 w+ H4 F5 R& |' B  F6 `
int edge_count;
  f* E( Y1 S5 K# U9 hchar msg[256];
7 k6 N. k: {1 c' E/ K: e) I, mint i=0;4 R( [' \( z; G1 s1 [) I2 N) o
tag_t edge_tag=NULL_TAG;
) ]) X* \9 m. Utag_t curve_tag=NULL_TAG;
! k& Y( K2 Y  A/ C1 Stag_t point_tag=NULL_TAG;
. p/ P, O9 _* z8 ?0 p" gtag_t line_tag=NULL_TAG;
1 \% D- [& L, U; otag_t point_tag2=NULL_TAG;- y: p' J: f' Y! \/ a9 i2 O* \6 _
double cen[2][3];+ Z3 t- M; v3 n4 F( G9 C
UF_CURVE_line_t line_coord;//最好不要定义为指针
/ v5 v( o: B6 Lextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
& n8 [1 k% h2 o{3 l' S0 Z/ Z& C) ^) {; v
    /* Initialize the API environment */
- I% ?' C8 b/ }9 ]    if( UF_CALL(UF_initialize()) )
8 L! n. d8 \0 a& f5 t* M! p    {1 I- W+ Q$ W( x% N
        /* Failed to initialize */+ l4 c* W  ~/ Q
        return;
5 J( C% c5 ?  K- b$ C1 z9 S+ K    }& g8 B  Z% G2 m2 u2 W; t
    4 X$ p" v# S# f  u
    /* TODO: Add your application code here */) I$ m+ ?1 E* s
//1.create a new part
, r3 F' k5 j7 H4 H UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);: ^9 F+ z5 s* i1 z/ J4 o
//2.create a new cylinder  l1 E; i0 o5 {
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);: E! _% t1 l+ G" g8 S3 N
//3.get the edge list- p& d8 [9 K6 E  l, J5 Z
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
9 p8 w9 D4 ?! A, u' O. ` //4.get the edges
% j; g, ^# @7 d1 `/ d+ @4 ]! q UF_MODL_ask_list_count(edge_list,&edge_count);# H/ S, l  b6 n
4 T+ p; E' A" ^2 ^4 g4 }
//5.get the centers. |- D2 w8 u- V/ y( t
for(;i<edge_count;++i){
0 N# ]' {& U9 E8 A4 d8 T  UF_MODL_ask_list_item(edge_list,i,&edge_tag);  Q: C& o6 B, s
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);, s7 ~6 z2 u; k0 l& L9 {
  UF_CURVE_ask_centroid(edge_tag,cen[i]);5 h; U3 s! e( z9 z- T3 X  }
}
' r# b9 I7 a8 N //6.create line# {: X: q; O) r, P
//UF_CURVE_create_point(cen[0],&point_tag);
" I  R3 }$ X8 W; a) | //UF_CURVE_create_point(cen[1],&point_tag2);1 O/ i+ d: B3 c) N- W0 h( |
line_coord.start_point[0]=cen[0][0];
9 K0 }* ~' \* ~- F1 H line_coord.start_point[1]=cen[0][1];$ ?' I$ g9 k4 `3 m) A
line_coord.start_point[2]=cen[0][2];
7 Z% Q, v7 Z$ \' w+ s! f- K3 p line_coord.end_point[0]=cen[1][0];
$ S) B: F4 R% K( Y line_coord.end_point[1]=cen[1][1];
$ o7 L" q! ?# F line_coord.end_point[2]=cen[1][2];
; ^) x; G& g0 }, j UF_CURVE_create_line(&line_coord,&line_tag);
4 B& _! P- n6 q6 C% K8 a  X //UF_MODL_ask_list_item()7 i+ C4 I' W. W8 [( T
    /* Terminate the API environment */( {" f' [, @( _& f3 e9 v
    UF_CALL(UF_terminate());
$ m4 }- N$ g! p* ?9 V}
6 S; N: M+ l2 w- }& o/*****************************************************************************
" s8 w/ [- Z; Y1 x* y**  Utilities1 U7 i! L- x7 o& i) q! {
*****************************************************************************/' R: L4 \, `: P, V/ ]; Z& g8 O
/* Unload Handler- \4 A- }* U" |
**     This function specifies when to unload your application from Unigraphics.+ _% a7 F. V4 g: a% Q
**     If your application registers a callback (from a MenuScript item or a$ f: }# o0 Q' L8 {" n: ?
**     User Defined Object for example), this function MUST return
# n! m! l7 m7 |, r) ?* E**     "UF_UNLOAD_UG_TERMINATE". */
4 u; e6 w  r) V: l) Mextern int ufusr_ask_unload( void )8 m9 `5 E2 A/ v
{
7 U+ ^( T* U9 S& M    return( UF_UNLOAD_IMMEDIATELY );
& e2 {! l! o# y% B8 }}
- }2 G) Q& P" j  a8 H% T5 g( U
* Z; J# q( ~/ J/ p* X

评分

参与人数 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二次开发专题模块培训报名开始啦

    我知道了