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

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************) J7 Z6 X9 r! [0 V( x# d/ v
**" l& O% H' u4 L& x1 ?
** test.c
0 T( p" u3 W* L; \' ^  O6 D2 Y+ i**' X- o1 j8 Q" P. p) |
** Description:
6 P( u( }% E; ?* N% v2 p; b3 |7 T) G**     Contains Unigraphics entry points for the application.7 L4 w5 t$ _3 \6 C4 N, G
**
, i9 o+ h( j0 t! l) i; b" h*****************************************************************************/
' A# y# U+ g; ?0 E/* Include files */2 V5 `8 i! B6 Y: I3 M
#include <stdio.h>( ^8 Y6 r; x. r1 |( s6 m
#include <uf.h># C, m% j" Q7 O; K
#include <uf_ui.h>. }) V4 ]' x& T/ v* G2 |
#include <uf_modl.h>) l2 F% n' [" k3 g
#include <uf_curve.h>$ K" I/ C, z9 v5 W
#include <uf_part.h>$ {" y# z. e3 n
#include <uf_modl_types.h>
$ @! y# ]0 s8 V7 h1 J. P0 b$ F#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
4 Q( `% j4 n( g1 a; L, g2 ?static int report_error( char *file, int line, char *call, int irc); q% l' g2 c2 `2 A: j5 R
{
& x( W5 ^, o+ i- }: c: l5 M% Q    if (irc)
9 Z9 R) c+ a) K) P: Q3 G2 E    {0 n+ o2 w2 W, h5 i/ C5 `5 Y9 V7 _
        char err[133],
. Y5 N  f+ p: U             msg[133];
+ L2 P) x* Z/ ]! t; V2 B: @" q" @        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",: W0 T/ a9 N. z3 x
            irc, line, file);
. `; K3 u! V% ~5 F        UF_get_fail_message(irc, err);
0 i! D' _* X# d7 H- v! k        UF_print_syslog(msg, FALSE);' T4 D' o" T4 o/ U& S. ]
        UF_print_syslog(err, FALSE);
6 z! I8 o; r% R& q; c3 j4 e        UF_print_syslog("\n", FALSE);9 r7 a  N* m8 d7 s* u
        UF_print_syslog(call, FALSE);4 V$ r0 S! ^" ^* Y
        UF_print_syslog(";\n", FALSE);
5 m, {( Y' D# H& E        if (!UF_UI_open_listing_window())' t+ S1 T: H. U! D" ~8 L$ Z& v
        {( a5 O1 j* x) Z" W; d# Z
            UF_UI_write_listing_window(msg);4 U, g. L; j6 W1 O8 L/ `2 ?+ E
            UF_UI_write_listing_window(err);
+ k+ Y' l5 Y3 ^3 w, x5 a  n% W            UF_UI_write_listing_window("\n");8 l9 B. y5 }% R* V1 B8 `
            UF_UI_write_listing_window(call);7 y: l  a8 W1 u$ A  z
            UF_UI_write_listing_window(";\n");
% j- O) S5 l6 j$ P) ~        }5 i; R# p0 k/ H2 V
    }- x5 o) M. y( R: k& ?5 f4 D
    return(irc);$ t8 @& U+ p1 U: W6 r: F
}1 g9 t! y7 }$ A$ W, J7 ^
. |+ r& n' `* h
/*****************************************************************************
( r6 D* Q& J* E) t8 z3 h$ m9 B# z**  Activation Methods! Z: j4 F% l* i# i' o
*****************************************************************************/
+ m. [* i, E9 c/ L3 x# R' u" w# |/*  Explicit Activation7 e5 g: i9 z2 t. v, E5 A2 U# @
**      This entry point is used to activate the application explicitly, as in. I: J3 u. _3 t7 k
**      "File->Execute UG/Open->User Function..." *// q, X$ E8 x. d  q+ H
tag_t part_tag=NULL_TAG;/ r* y, b- q1 S# Y& f: P% D/ q' N
tag_t tar_tag=NULL_TAG;9 ], s8 j' }  f) n6 B3 c
double origin[3]={0.0,0.0,0.0};
+ \  m; S$ w2 g, schar *height="30";
0 l* @) X- L( q7 dchar *diam="100";
  ~! [) _! u+ a3 d( b( v8 Jdouble direction[3]={0.0,1.0,0.0};: d* G: Z5 [  i  L2 G; e$ a0 Z6 j
tag_t cylinderfea_tag=NULL_TAG;
3 U: X7 d5 l% xuf_list_p_t edge_list=NULL;2 h4 `" c7 d& Z1 ^( b
int edge_count;
% n8 @$ }" F0 r) M# d4 Y) o. {char msg[256];4 Y: t2 s1 h, u2 p
int i=0;6 X  P3 D! n" O6 h# ?
tag_t edge_tag=NULL_TAG;! l/ l9 m# M' F2 U( M. x7 c
tag_t curve_tag=NULL_TAG;
: j8 B2 q& K- w" ~9 X* P- r6 Ntag_t point_tag=NULL_TAG;
- V! C( F+ i- x' [; T) N/ I# l) ?; T8 Htag_t line_tag=NULL_TAG;2 e- }" Z) E9 m4 O/ B2 J
tag_t point_tag2=NULL_TAG;
8 I6 H7 R5 D3 F+ E: x# fdouble cen[2][3];3 D5 D/ V% p7 {6 Y( {
UF_CURVE_line_t line_coord;//最好不要定义为指针
1 J. b5 m4 X6 f$ p3 X/ z. Y/ Wextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
" o0 y8 Y! H6 t$ x+ D{
2 G9 L: Z4 t: H8 y' T; v    /* Initialize the API environment */5 P0 ^0 q2 {2 D/ |4 s& V2 m
    if( UF_CALL(UF_initialize()) ) 5 {( O& V/ y- }- z( C
    {
9 O5 k# p( ]9 }        /* Failed to initialize */
: e* z1 v$ G; [& \1 b/ J        return;/ S, A  S+ y8 B3 w4 e4 h
    }
# a7 X9 m& m6 u  y7 K   
( ?# E/ e# U! x: }6 I  F& r( H/ y& p. Y4 D    /* TODO: Add your application code here */1 g: x& d0 l. J. e
//1.create a new part
- P# H" z+ q% j% X) a' n UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
. @  _# ?- y+ R, {( ^, [( [7 d //2.create a new cylinder+ `( C+ F1 s6 \( R, ?: I& C# {
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);, K% d+ a( G7 f( a+ l* H8 ]# P
//3.get the edge list
9 V  @4 p6 S4 y- u# W( m* u; ^7 ] UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);: Q7 Z* H6 C! q' o- C8 H
//4.get the edges
/ Q* V+ j! e- D3 r, u UF_MODL_ask_list_count(edge_list,&edge_count);
  d' l! O3 Q; b9 q' ~ + }7 A5 u' @, v& O: R, I
//5.get the centers
$ z0 K  P9 h0 M for(;i<edge_count;++i){0 T- i' ]# m! L& ~6 }
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
' S2 k/ k' i# D  ?- _$ H& L  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
$ W0 h& B9 L# ]1 ]  UF_CURVE_ask_centroid(edge_tag,cen[i]);
! ~, h3 y& O) k% `0 h, r( J }7 W  U2 p; O* z" H1 f6 f
//6.create line
: N8 j8 \7 g6 k5 E$ ^, y7 Y1 T5 _  ]3 ^ //UF_CURVE_create_point(cen[0],&point_tag);
- K  L  X5 R* D& E9 _ //UF_CURVE_create_point(cen[1],&point_tag2);5 e, y9 e' G2 J& `' w: e# ~5 B
line_coord.start_point[0]=cen[0][0];3 W: K2 D. A7 b, j3 ]% s( S
line_coord.start_point[1]=cen[0][1];+ ^( w/ {7 w; {# f
line_coord.start_point[2]=cen[0][2];- b# y$ d- J& ~  z) |( Z" g
line_coord.end_point[0]=cen[1][0];9 \: f( U* e- y6 d1 u
line_coord.end_point[1]=cen[1][1];
1 `( N( ^6 p, j( ^ line_coord.end_point[2]=cen[1][2];
5 H# Q, b9 N) c" \8 X UF_CURVE_create_line(&line_coord,&line_tag);
( t. O8 U% Z. L$ G. h& p //UF_MODL_ask_list_item(): g3 X; b% P! j: w; N7 \8 F( t
    /* Terminate the API environment */8 L+ _2 F6 j1 G* B5 L
    UF_CALL(UF_terminate());
# K# c& c, Y: |: u2 C; x) w}
( d# }8 F1 Q) J3 O6 ^/*****************************************************************************8 I0 |) j9 X; Y: y
**  Utilities
  T4 f+ f: c+ s, l" L/ }4 d*****************************************************************************/- ^1 J2 r3 ]1 R9 g
/* Unload Handler# U" a7 A& K( ^' R- |  I
**     This function specifies when to unload your application from Unigraphics.
7 S7 ~% M5 Y; N9 j**     If your application registers a callback (from a MenuScript item or a) [5 ~0 v3 E' v
**     User Defined Object for example), this function MUST return4 [! p6 e5 V: ~( e
**     "UF_UNLOAD_UG_TERMINATE". */) g; _8 }4 t8 R8 M  z; w% n
extern int ufusr_ask_unload( void )
3 q% F5 i6 Z  d& Z& B{
3 e+ @  f9 I; Q9 B# H4 O    return( UF_UNLOAD_IMMEDIATELY );& L6 P/ v# n" E$ f. Q1 r
}
) w- x3 g' ^( M. ?8 X, ?2 O9 q' d* j2 m; v

评分

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

    我知道了