PLM之家PLMHome-国产软件践行者

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

2015-7-17 22:23:12 3197 2

文星和合 发表于 2015-4-21 21:14:38 |阅读模式

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
! Q# }, U( l/ a3 S#include <stdio.h>
( S- N1 a: I# p( V$ R' A+ W" K2 T  r#include <uf.h>
7 l/ y5 L! x- I. C5 f  i#include <uf_ui.h>) e) x( j9 `1 ~6 E+ U& Q
#include <uf_modl.h>6 \0 s+ e* A; [! H) M! C& Q& o
#include <uf_part.h>2 B; `6 f# i9 d' f) g9 W4 g
#include <uf_obj.h>;
5 J5 n" i  o2 X  m#include <uf_curve.h>- n6 {9 u+ @. Q; J8 Q+ C
7 j% V# L# m* @, [+ ^/ J
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
# G0 `4 ?2 {, q$ h* b2 Ostatic int report_error( char *file, int line, char *call, int irc)
% Q, I. A, ]3 L{
# t0 f4 k6 s6 _2 P    if (irc)
6 c! B, p4 v: L  e    {# j" o1 K2 B/ Z! k- ]* G
        char err[133],5 y$ g9 {" g' v: Q0 d3 ^! A3 g
             msg[133];& g% ?3 E$ m- W
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
- C1 A5 I  e& v1 q# H+ g/ w            irc, line, file);
3 I* j" F; N) X* w/ T+ A' Y6 [% w% I0 r        UF_get_fail_message(irc, err);1 G; N. Y* y( Y0 x
        UF_print_syslog(msg, FALSE);: X' y5 c1 B( ^
        UF_print_syslog(err, FALSE);3 v, P0 ], X8 S* e% M
        UF_print_syslog("\n", FALSE);
6 p- W3 l6 C6 }& ]        UF_print_syslog(call, FALSE);
) a$ x$ N! c% g) T3 w* C, \) G" w2 z        UF_print_syslog(";\n", FALSE);
$ t0 ]) L* T# m* ^        if (!UF_UI_open_listing_window())& P$ P* x) B) k% M. D
        {( R1 q5 t  w: D  J2 B' Z
            UF_UI_write_listing_window(msg);
* M1 l  Y; r" h6 Q6 t            UF_UI_write_listing_window(err);2 t! B: d  c- d7 A! P; ]
            UF_UI_write_listing_window("\n");
9 b' j0 i7 R9 F1 k* a7 M. i! i            UF_UI_write_listing_window(call);' ^( j( A# [" f0 r
            UF_UI_write_listing_window(";\n");
$ `7 l: B; c! |, h0 Z. C        }
% C- H# g" a0 Z+ t    }0 }1 a$ ?5 Y0 J
    return(irc);3 C  e/ Y, M) A. P, Y  Y6 Z
}
$ t. _% e0 H  z! D$ z$ X- j% x# _$ r$ _) O4 g. b' M
/*****************************************************************************% O& |/ Z9 j8 M& P  L
**  Activation Methods  Y/ G3 E+ ~! @, a+ W9 v4 }
*****************************************************************************/8 R# |  @7 I/ p2 ?4 d
/*  Explicit Activation6 J8 @8 v' |& x1 Z- E) n+ Y* m
**      This entry point is used to activate the application explicitly, as in
, M) |' f& c; |" U- S- o$ C5 r1 l**      "File->Execute UG/Open->User Function..." */
; B) C+ T( z6 f. j, i0 z( x
2 ^% |$ f. K1 yextern DllExport void ufusr( char *parm, int *returnCode, int rlen )5 V! z6 s5 X7 K; i9 [8 e0 S+ W0 X
{
# K- P. Z; ?) ^/ f( _3 L) K6 B8 g    /* Initialize the API environment */( A. i* x8 r* a0 k0 }0 |4 c
tag_t partTag=NULL_TAG;
0 R- @8 ^4 f: \/ }8 B% h% T double origin[3]={0,0,0};/ n* i! c1 M) E% W' s$ i
char *height="200";
7 Q8 l; y. x0 R, t2 Z4 B: r char *diam="20";8 s6 Q( L1 h* j2 o1 T2 q7 E& w% ?
double direction[3]={1,1,1};
  P; Z8 G7 k3 f8 o  i tag_t cy_obj_id=NULL_TAG;4 ]4 F' n3 A/ k+ E  X
uf_list_p_t edge_list;( c, @  |' h1 y
int count=0;( G; Q) V( W) u3 z7 f$ F/ M
tag_t edge=NULL_TAG;/ N) x; I5 Q& ?( {/ ^$ l- @# n* b9 ~
double originalpoint[2][3];) _! V+ J% c* T5 X$ \
UF_CURVE_line_t curve_coords;3 S4 J8 b7 L  c6 T; U
UF_CURVE_line_t mycurve_coords;
* V* l' |' K) B! u. g" d tag_t linetag=NULL_TAG;; R9 D) L: l& ]
tag_t body_ID=NULL_TAG;4 b0 m% \0 q7 I: g2 |  L& E# h
int i;
% A, Q  S" H0 V  X2 w: p& e1 x char mymsg[256];
" E0 j$ @' Z, F; i6 C7 l9 l    if( UF_CALL(UF_initialize()) ) * b, s" F  Z' F5 u
    {* J3 F& g/ S! E2 @: N
        /* Failed to initialize */2 m. R6 J) h9 l6 T2 l. G& ^
        return;
4 \7 h' P0 ~; K# `8 W! n  H    }
# o  \& n5 ]- x    / t1 t7 v3 Y) l1 Q; v3 T2 B7 q+ m
    /* TODO: Add your application code here */  q8 J6 S$ k/ Q: y7 h, O1 Q
// 1 new part9 K7 F5 X4 d( G$ }
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠* @& V) A/ ?8 a

# b1 ~3 q% k# X //2 new cylinder ; Z- O; V7 I7 C9 t
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
0 k' o( i7 L1 v( N- t' h UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
  T, @. K& i: a- f //feature -> body8 x3 {  F; |& j: n) M) [5 R
UF_OBJ_set_color(body_ID,21);7 W4 e, Q4 _0 P8 i$ i- w9 t; [/ g
//change translucency! i$ a( L4 }, X
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度  o3 V5 T+ @) B+ Q  ]1 V
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag  m9 F4 y6 h$ p* `+ S
//3 new line; F1 I9 `" [. x( o. x
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
1 |) Z" R6 V9 k$ _# R+ J& x; S( L- u UF_MODL_ask_list_count(edge_list,&count);, h8 f5 ?+ F- i$ x3 c4 ]" c
if (count>0)# c8 c9 R0 i8 }! B0 U6 X
{( O2 E; M) U3 s( [9 y9 y: S4 e
     for(i=0;i<count;i++)
8 {+ E' ^* t. G  R" Q2 q( u  {; Z. n) n% [& Q  U1 Z& X
   UF_MODL_ask_list_item(edge_list,i,&edge);
5 T/ F# U# N& @: W" Y5 e   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
7 H# U2 u+ C( L  q6 }4 S  } # H+ C$ |# n' B0 E
  for (i = 0; i <3; i++)
7 m/ }6 L, d: [3 i! T  {/ `7 F; D' G, Q
      curve_coords.start_point[i]=originalpoint[0][i];6 ^4 ^8 _3 [# D* J9 D0 ?; x
   curve_coords.end_point[i]=originalpoint[1][i];$ K8 }3 J+ s& c( d7 G7 P* o5 f) n
  }
1 V4 ~) y9 f" ]% U7 C // UF_UI_open_listing_window();- n. \1 E9 q, N5 ^* i7 K$ J
// sprintf_s(mymsg,sizeof(mymsg),"point1:%f,%f,%f point2:%f,%f,%f\n",curve_coords.start_point[0],curve_coords.start_point[1],curve_coords.start_point[2],curve_coords.end_point[0],curve_coords.end_point[1],curve_coords.end_point[2]);
3 s" ]# Y) m! K- `- ~% Y+ A //UF_UI_write_listing_window(mymsg);
$ @0 X. F: Y% R4 B5 l: f // uc1601(mymsg,1);5 h  Z  j; K; {2 w5 d, ?5 c
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线$ ^1 l& t" K/ u+ Z: X& C" z
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
% E, q5 e$ ^; R: E: l  sprintf_s(mymsg,sizeof(mymsg),"start:%f,%f,%f  end:%f,%f,%f\n",mycurve_coords.start_point[0],mycurve_coords.start_point[1],mycurve_coords.start_point[2],mycurve_coords.end_point[0],mycurve_coords.end_point[1],mycurve_coords.end_point[2]);% t/ o2 g2 Y/ J9 k+ D- o
  //UF_CURVE_ask_line_data(linetag,&curve_coords);7 s* x$ f/ ?3 N) |2 n6 E/ w
  //sprintf_s(mymsg,sizeof(mymsg),"start:%f,%f,%f  end:%f,%f,%f\n",curve_coords.start_point[0],curve_coords.start_point[1],curve_coords.start_point[2],curve_coords.end_point[0],curve_coords.end_point[1],curve_coords.end_point[2]);! z: ?6 y% q/ {5 Z6 b
  //UF_UI_write_listing_window(mymsg);1 L# Q- R! F/ L- m5 N1 S: q7 v
  uc1601(mymsg,1);
1 \. `' z# J8 _  J  E; ] }
3 \; N. G( C% u else
8 S; @5 c1 ^8 }/ `8 s {
# R- j# g& ?, M! J, P  uc1601("no edge founf",1);8 D4 O! q% U9 U
}7 E  N  V- R/ v" D

& c; n) z/ i- p4 t( [
% M5 i$ x+ C& Y  P3 B/ R //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);1 u) ~* ]+ v& Z- W
//UF_PART_save();  //保存部件
5 t  A; Q; _; T( F4 K* p: i) L; j //UF_PART_close_all();   //关闭所有
  `( B8 [  F& n/ \$ n1 z; I  @% E ; y% S( h- \: S  l
    /* Terminate the API environment */! n/ F6 l( l) _# J, I" c5 }
    UF_CALL(UF_terminate());$ {8 t1 q* g, ?3 J# R# q
}9 V7 K2 w, J9 c: m0 G
/*****************************************************************************5 ?# c  y. w' g# g
**  Utilities
% N$ J3 o0 b# i2 V. F*****************************************************************************/3 V/ T. N; G. J; ^- r  l
/* Unload Handler  S. [0 C- ~  {9 e: q$ Y
**     This function specifies when to unload your application from Unigraphics.% ?) H+ t* ^0 k! w6 c
**     If your application registers a callback (from a MenuScript item or a- Y* U1 B6 o* c7 [% W3 o
**     User Defined Object for example), this function MUST return& u" Q! T- s  X% |) ?
**     "UF_UNLOAD_UG_TERMINATE". */
3 s, H- g% W% U* L. M4 W- N7 Pextern int ufusr_ask_unload( void )
- u1 z/ [' r2 |{+ G2 D6 Y; I; q9 _4 C
    return( UF_UNLOAD_IMMEDIATELY );6 f/ h# e! y. S0 a' v
}
* v6 F. P1 D4 K! J& I
* m- V% T& o* L3 ^5 B  I
$ J  i# s& R* L$ O+ q4 K  ]" t我把圆柱的方向设成【1,1,1】,成功了
* k& ~) v7 a6 K4 N9 e# X% m+ ?; `# `! g2 q
无标题.png

评分

参与人数 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
回复

使用道具 举报

全部回复2

hcaini0829 发表于 2015-7-17 22:23:12

hcaini0829 板凳

2015-7-17 22:23:12

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

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了