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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */4 q% C* f. `8 v' `; }9 C
#include <stdio.h>& h* \& B* N3 H5 E. j$ g% L
#include <uf.h>+ Z  L3 }$ M# _1 P1 ]( p
#include <uf_ui.h>
( ?# h$ |- F/ S8 u6 N" A+ [! t#include <uf_modl.h>
8 x. [9 h+ w" R. }- ^& G#include <uf_part.h>; D6 e, b1 M6 Q) ^9 e7 L
#include <uf_obj.h>;
+ x, B" _0 h/ n* }6 Y6 f#include <uf_curve.h>8 O6 }% p4 G% T5 x/ u- F: ~

: V& K6 O2 z! p. w#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
( J  f* a) k( y: X: T  g1 G- Fstatic int report_error( char *file, int line, char *call, int irc)
1 p- X0 E" g) d  A{$ C' x8 c+ _0 L8 ?2 J: s& P
    if (irc)
9 a! |7 i; G: ^* G    {
2 C! \6 E+ P# t3 b8 r6 l        char err[133],
. E1 F, C7 {1 _# r             msg[133];
. j& y5 C0 x0 r! \        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",9 w6 y3 @5 q' \# y5 z
            irc, line, file);
8 [7 E; B: U1 l- C0 L/ K. z. e+ w        UF_get_fail_message(irc, err);/ Q* j! R5 y! I, x3 y
        UF_print_syslog(msg, FALSE);5 x# {% O: l% o' ?7 A) O
        UF_print_syslog(err, FALSE);
/ ^1 F' q; |' ]0 z. x& N8 q        UF_print_syslog("\n", FALSE);; S0 q% `. ?7 ]) ?8 K+ g% ]
        UF_print_syslog(call, FALSE);
5 n# W$ n& w# _        UF_print_syslog(";\n", FALSE);% X' u& B! @( `; {0 S
        if (!UF_UI_open_listing_window())
) `0 ^% H+ ^' P5 g        {# \9 ]' z/ r% z  Z% B
            UF_UI_write_listing_window(msg);  T2 k1 F1 Q9 n: E% W4 L" E% q
            UF_UI_write_listing_window(err);
% `3 u. h/ R2 ^( i/ E            UF_UI_write_listing_window("\n");
5 A1 d5 V3 t) P; |0 R: |            UF_UI_write_listing_window(call);1 Z5 f* V# ?# X  Q! D
            UF_UI_write_listing_window(";\n");$ t! h% j# m2 T4 T! G
        }
! R2 I% }! h8 L  n# o2 b2 G' K# d    }* h; b: P- O! v& P- b  f7 v
    return(irc);' t4 e5 X9 n3 w6 c" ^
}
( l' s  s+ Z( Q9 v; ]* z' }
2 Z) t, {4 N* c* S; c3 b+ }/*****************************************************************************
) |2 ^7 v" N* V+ Y! Z" w2 B**  Activation Methods
! l. q" h0 u, }, k0 S) ?5 r* T*****************************************************************************/
/ h& U: O$ V' C$ o7 Q1 V4 G3 A/*  Explicit Activation
. i7 ?- q. S' U( K& C**      This entry point is used to activate the application explicitly, as in' [5 k( ]1 Z& _# Z3 P
**      "File->Execute UG/Open->User Function..." */! {. y7 Q& q) t! w
5 ~4 q" X2 I3 c- a
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
% y0 w3 F/ ~* e- {) v{1 ?$ m) o# l' v
    /* Initialize the API environment */: j: Y2 m% m7 ]3 l4 ?
tag_t partTag=NULL_TAG;
. Z' j- l1 @" L6 ] double origin[3]={0,0,0};
0 R! T: Q' M8 W" D char *height="200";- v7 x3 L5 e: Z% j+ j! V
char *diam="20";3 r9 M9 w+ O! n
double direction[3]={1,1,1};5 T6 b/ ?. `$ y+ c$ W+ i3 D
tag_t cy_obj_id=NULL_TAG;
1 {3 B! Q/ i; I- W3 b; E5 g uf_list_p_t edge_list;2 i* G2 d, |& P! P% ~
int count=0;
" b- }. i! {/ b& r$ R3 m% ` tag_t edge=NULL_TAG;
9 L  C% c9 h+ o# O" _6 K double originalpoint[2][3];, S! f1 Z/ C% X& D5 I  r
UF_CURVE_line_t curve_coords;
, A, \5 v; X  R$ E) j- X UF_CURVE_line_t mycurve_coords;6 r1 @/ ~- [) I+ [
tag_t linetag=NULL_TAG;
$ C9 n4 Q3 k, v8 r% J8 _. U tag_t body_ID=NULL_TAG;5 r' p2 _; w' _3 G$ U
int i;
" |" a! H; |* y8 F char mymsg[256];
5 ~" Y) u. `. ^% ^    if( UF_CALL(UF_initialize()) ) / Y1 t' Z: e( d( ?
    {* J4 m3 z4 @7 L7 M7 x
        /* Failed to initialize */* s4 J4 k  w8 p
        return;% l+ j4 P  K1 F" K! T3 `0 ^. i* e
    }  I4 H1 [# ]+ N) |% G) @$ @4 A
   
% O& ^( p& L( j8 {/ W    /* TODO: Add your application code here */
  _) Q$ f+ F1 {: X // 1 new part3 X1 {1 z9 T+ q
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠  E' G" t8 f# p0 G( }  E

; ~9 ?4 F. q) o7 a7 h5 F. Q- l //2 new cylinder 3 H) X8 r0 B5 d
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));, i9 w8 v3 S3 l  O+ K
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);0 G/ u/ Y, Z2 X0 b% p8 u
//feature -> body8 t; j9 K# t) Z$ W5 f* s7 }
UF_OBJ_set_color(body_ID,21);
* n' [: o# i4 T8 f //change translucency+ J% @" [9 X9 x4 H3 b+ {, G
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度. k* v2 Y8 r, Q4 ^
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
1 M/ t5 e% F5 N% e/ R  u //3 new line
- n+ x' N5 y7 k4 x( @# {6 E& N UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));. a* Y# A; u( p8 _& a: `
UF_MODL_ask_list_count(edge_list,&count);7 E0 s3 I; C2 u4 s9 w8 O7 l" a( X
if (count>0)# m; N1 D) S0 G4 }
{
: x, s$ Q4 U& R     for(i=0;i<count;i++)
, @1 X, W$ X* M1 `; I# i% F4 l  {6 {5 w; U# G, Z% z2 Z
   UF_MODL_ask_list_item(edge_list,i,&edge);! k3 s  ^" f( B! M; ?# C
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心9 @* E% n3 m. S' t* |
  }
5 M' X" D6 e, ?$ {# T& e* d  for (i = 0; i <3; i++)
6 w$ Y1 H! O  s0 o( J* z  {
$ b6 y. w. y- C1 u, C      curve_coords.start_point[i]=originalpoint[0][i];
0 s  m  e0 R# a& q   curve_coords.end_point[i]=originalpoint[1][i];: w' c% f6 c& C0 J0 ^8 B
  }+ z/ q: Z3 p6 g7 @) t
// UF_UI_open_listing_window();
: a# [( v' b. O, u' `- U // 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]);+ L% o9 [; z4 s# P4 T7 m
//UF_UI_write_listing_window(mymsg);/ T1 D" }! N0 o; H! p% D( f/ P
// uc1601(mymsg,1);
( Z+ @7 }) H' r7 g# m0 J  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
+ r8 g$ }) L2 [' k3 n  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点/ e. ~4 V$ V5 G( A# k
  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]);
$ @% P' H  T1 f& N; A. @4 v* c  //UF_CURVE_ask_line_data(linetag,&curve_coords);
5 r; v5 k5 Q2 m/ I  ?, n2 _7 P1 s; T0 ~  //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]);" x! N0 e* k7 @0 g; D
  //UF_UI_write_listing_window(mymsg);6 N8 c) W# E- B6 p! `7 u
  uc1601(mymsg,1);
. k) \& z5 M3 L; ~+ u! q }. e; c9 {5 [7 m* i" \2 }
else0 t9 a8 c: \! v$ g
{
( K# `/ v2 N$ m: _% y  uc1601("no edge founf",1);3 C  M  v/ V0 e# B; ~
}4 h( V5 S) z  a1 X

' ]0 D2 c" @+ N% s0 v$ |) ~+ s: T3 i, T1 ~
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);" i! J- A: b5 A8 F7 r7 e" h
//UF_PART_save();  //保存部件4 b  h5 c' o0 ]2 R+ c1 M
//UF_PART_close_all();   //关闭所有
) h: h) f  t: l$ K' n  h+ R # R) A2 ?- q( {9 R% g; \
    /* Terminate the API environment */
, {: a$ ^7 A' B" ?3 X    UF_CALL(UF_terminate());
7 @9 m2 \: I' G; A, e( R/ x3 U1 Y}. d6 b/ H* o/ ?2 H5 R- C2 n
/*****************************************************************************
! J+ `$ ?8 k( @3 h+ v8 O**  Utilities- e, m+ v) z* d3 t) ^
*****************************************************************************/, S$ Y: }  J: o6 u% Y3 p$ v2 @
/* Unload Handler( B9 {7 U  O8 N1 f4 k* ^, I% H
**     This function specifies when to unload your application from Unigraphics.7 o! W$ _; K% z" U8 `7 u3 S
**     If your application registers a callback (from a MenuScript item or a
1 y% R% O; z" G; j5 H) C**     User Defined Object for example), this function MUST return" E& H% P/ s9 ^8 k+ U6 O* N4 j
**     "UF_UNLOAD_UG_TERMINATE". */5 s- v! [8 A4 I% D5 z$ m
extern int ufusr_ask_unload( void )/ A. N  I; m. @. E2 b& Q5 G2 [  [- W
{' m% ]  Z0 }% L) a) b* t3 M
    return( UF_UNLOAD_IMMEDIATELY );7 o0 o+ x& m5 g
}) y+ x5 k+ r0 a8 y

6 q7 L  `# w+ p0 [6 r* |5 Y: H# I( ]" R9 D! l
我把圆柱的方向设成【1,1,1】,成功了
6 ?* y( ?& m$ {  S
# ]* {9 w6 q: V, b5 B' B, n3 b/ Z
无标题.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二次开发专题模块培训报名开始啦

    我知道了