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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
- h7 D: j& ^! F#include <stdio.h>- c9 ?; @, N, n6 c! }/ g
#include <uf.h>
" e, g9 j' @( Q$ x# z6 Y* W5 |#include <uf_ui.h>
; P: ]% |" v+ ~#include <uf_modl.h>
0 D1 s& s! F4 y% E8 H2 R#include <uf_part.h>4 c( e4 r2 A; Y! @
#include <uf_obj.h>;
  A! |- i: w' F3 g6 C2 s0 G#include <uf_curve.h>7 v: ^' ~! y; n6 N" p
: R$ n* d+ `$ z
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
3 t1 r* y# c0 [static int report_error( char *file, int line, char *call, int irc)! ^, |, W) D( Q3 K% l0 u
{
$ Z! J4 }( y+ I    if (irc)
4 y/ F) p! y+ {% s2 G9 L: r4 _. O    {7 F$ h' b/ U) p% v* W
        char err[133],! F7 K* @' ~! W& i
             msg[133];% a0 e. R7 U3 ?8 o
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",  B5 _( Y$ [5 a
            irc, line, file);
9 X1 C/ E6 `0 S( z        UF_get_fail_message(irc, err);
$ V2 H& s8 ~; @  ], c        UF_print_syslog(msg, FALSE);
0 X9 n" J( G+ T4 _' S7 p$ _        UF_print_syslog(err, FALSE);
5 `% O$ K# k, u1 I        UF_print_syslog("\n", FALSE);( @3 v9 ^, t# n2 z. s9 `
        UF_print_syslog(call, FALSE);. E" i7 c2 Z1 ?# k5 K5 @
        UF_print_syslog(";\n", FALSE);
. j3 ^* l: z2 P" B0 f& S$ k        if (!UF_UI_open_listing_window())
, E( `1 ?) S6 \6 q& Z! \        {
. R3 d/ e* {2 |' T4 ^% a, r& B            UF_UI_write_listing_window(msg);2 L8 H# q6 E: {- o8 I  D
            UF_UI_write_listing_window(err);
( K% Q: k( a9 {) n% m0 u4 v# L* ~5 j            UF_UI_write_listing_window("\n");
& \5 m2 l, Q8 S& Z2 p2 d            UF_UI_write_listing_window(call);+ N& \/ s$ m* Z  m- f; m* G3 F
            UF_UI_write_listing_window(";\n");
# o3 f# J4 P, g        }
+ {; k. G4 `* v    }
) n' `. e- g* ?, i! S+ Z    return(irc);. F8 `' b; v9 |; }% h. Q
}
) h- P  @" o" `. m" q* w7 }) _6 {* r% j
/*****************************************************************************
4 I5 `5 Q6 @6 W# M; B2 R3 M+ ]**  Activation Methods# j1 V0 [* A/ q6 M3 _# y4 v: X1 f1 J
*****************************************************************************/% {& w3 f  T9 M' `0 I- l; v1 K: t; X
/*  Explicit Activation9 U9 W4 W0 m3 D
**      This entry point is used to activate the application explicitly, as in* e5 Z4 t- Q4 F- G
**      "File->Execute UG/Open->User Function..." */* N) o0 e4 v* `9 g' U
; W& Q6 |( O1 C& H7 i
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )* y+ R% {" u/ t7 [/ a; h+ N/ d# ?
{. @6 u5 |, I9 j1 j
    /* Initialize the API environment */
5 h, M* N5 @! i; i  A tag_t partTag=NULL_TAG;$ P0 h, @: v0 a0 Z
double origin[3]={0,0,0};: y' L% j4 O; q' N" j5 `
char *height="200";& g5 h4 O+ F( J4 }% t/ z. ~. T' N! F% }
char *diam="20";
) y$ r" i3 K9 ]  U6 Z4 R double direction[3]={1,1,1};- m9 B+ ]4 r* q* Q0 t' G1 |
tag_t cy_obj_id=NULL_TAG;
7 G# M0 h+ x) d8 B. k3 u0 C& G uf_list_p_t edge_list;
4 e( `5 j2 {# O1 D int count=0;5 C' i! l( c9 y, N1 D! Y. l; \& }+ D
tag_t edge=NULL_TAG;
* B8 w: W5 n3 Y/ i8 q' D double originalpoint[2][3];
( u1 n& Z- v, ^) A7 w% L5 m5 C* m3 W UF_CURVE_line_t curve_coords;! B6 O6 F" Q  r* b$ Z& ]. g
UF_CURVE_line_t mycurve_coords;
2 `5 @5 D% s* |! |% H% T! R/ _ tag_t linetag=NULL_TAG;
4 X2 A# a: W/ n# f7 k tag_t body_ID=NULL_TAG;
3 N' m7 A1 M- @ int i;( ]. j3 n% u  y1 |
char mymsg[256];6 ?; T, N$ h( k8 n' z3 k% t
    if( UF_CALL(UF_initialize()) )
/ E$ ]* x& N* I" W% O9 @    {6 G7 N0 K) x0 {8 G$ e' p& |7 N/ y
        /* Failed to initialize */
9 [# {8 Q9 y) v* e( \5 ~9 I& w        return;9 }; w6 d" R  L3 k2 }1 ^8 h
    }% |4 j: K2 X$ |: `3 R+ e# Y
   
6 D/ \& o2 i+ c/ \9 ]2 {* x) K5 w! ~4 V    /* TODO: Add your application code here */
% K$ F+ D) x& Z& N6 e // 1 new part
, `- F. T. ^) L5 o UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠: F: @% J1 P) |# e/ g0 T, f
8 H9 r6 ?# D) c( M* A8 {  t
//2 new cylinder 3 Y& }5 H8 B, J* T( w5 b
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));* T# q; ~+ }% ~* E: G7 i4 n+ W
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);0 [* t3 T9 t; o9 [+ U, a
//feature -> body
+ j, V; a5 U3 {  C UF_OBJ_set_color(body_ID,21);; K( h( j. w; K- t, a2 S- |0 C$ S
//change translucency
# c( j' l2 R. s, _ UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
# k6 B) U  k' k8 n //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
0 G/ \  v2 p( I //3 new line5 b% l# A2 n# @4 G
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
$ T2 Z5 l: J9 D UF_MODL_ask_list_count(edge_list,&count);7 f! G3 }( W/ c' ?8 C! H. s: J+ g; n
if (count>0)
3 e8 ]1 J: ?8 L5 T; P {& D0 u" S4 c& p/ H2 V2 t
     for(i=0;i<count;i++)
1 r; l9 d, p; I  {/ m& R+ R$ y; d: F$ y2 x9 t- R% Z! G
   UF_MODL_ask_list_item(edge_list,i,&edge);
3 t: W; v' S5 {" a0 A; y   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心9 b  Z: M: y- s1 `7 ~7 y0 j2 V
  }
% t6 v9 C% u. [' C  for (i = 0; i <3; i++)/ c! |# p; F8 \6 e9 t& m3 [7 D( N
  {
$ k8 r  A, y1 {4 c% V( u; n      curve_coords.start_point[i]=originalpoint[0][i];' o& I3 A5 Q2 |" ^
   curve_coords.end_point[i]=originalpoint[1][i];/ c3 k# O' f* X) T7 L
  }7 B7 H$ w! ?$ ^. y
// UF_UI_open_listing_window();
- y7 Z+ m0 K: q6 G // 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]);
5 g( l  _& U6 W' o8 j6 {8 Y //UF_UI_write_listing_window(mymsg);4 B* t% z6 _: u/ y7 @/ Y
// uc1601(mymsg,1);0 {) N' j) c( j
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线5 _7 s7 d# _5 c  J, O
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
# A: o; ]! Z6 A' H  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]);
: v( n$ ?8 q) z& N# h7 c+ N  //UF_CURVE_ask_line_data(linetag,&curve_coords);: r# @! Z+ h" k
  //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]);* y0 ?/ t# P5 V# P5 {
  //UF_UI_write_listing_window(mymsg);; F' h, E) a! f3 y" K
  uc1601(mymsg,1);
7 g8 V0 o1 X9 N7 _; H; D }
8 A- a) s4 P3 V2 _( H else
! w. f0 a+ \  m% e  ~ {8 f  v9 t9 p! Q# i1 T3 L& l
  uc1601("no edge founf",1);+ D( \" ~2 k1 z% |8 q$ z4 _( @
}
1 [3 m% ^5 [. K  [$ c9 F2 k 7 Z' S# E" B+ Q/ _% I
. O# K+ {" B6 n* b) }; F8 y
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
" U! f& e7 l: z% Z/ o1 {! M //UF_PART_save();  //保存部件
! G& [  q; p2 V9 v //UF_PART_close_all();   //关闭所有
3 d- v$ \5 k5 ^; g+ N
( V' x! ?+ X0 @( c4 s    /* Terminate the API environment */2 ^+ m) Q* T: f2 ]0 g; R
    UF_CALL(UF_terminate());9 u+ w3 ]# q/ W% B0 z
}
# }& s3 V% [! M$ W6 ~/*****************************************************************************+ t' J1 o" f; z
**  Utilities
1 J# D( y: t% h* ^  S& J*****************************************************************************/
4 [3 p7 F* H- L+ Z; b  C) y/* Unload Handler
. ^4 ~/ X+ q1 z$ H% `# e2 j" i**     This function specifies when to unload your application from Unigraphics.( a3 ]( T# d4 G7 h
**     If your application registers a callback (from a MenuScript item or a1 ?5 V' a4 R2 U9 f
**     User Defined Object for example), this function MUST return
# O7 j# s7 Z( b: f5 k1 n**     "UF_UNLOAD_UG_TERMINATE". */
; Y8 Q9 h! X% b, e' zextern int ufusr_ask_unload( void )
- @( ~5 }" z% G6 h- @{
- F+ w- w" p( J8 }! m7 Z! C    return( UF_UNLOAD_IMMEDIATELY );
- ]$ @6 X$ L5 o* q5 ?9 Q+ A4 R}
3 q. n# N! e# V% v4 y7 U/ {2 T& r, N- w6 p* o+ v" T' m* f

! F/ ^7 t8 m2 k0 m1 e* C" v* m我把圆柱的方向设成【1,1,1】,成功了
5 w3 V- I7 f; R) ^& @5 _, M) t9 i2 Z7 U- R' s1 k. u
无标题.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二次开发专题模块培训报名开始啦

    我知道了