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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

4

主题

4

回帖

83

积分

培训VIP会员

积分
83
发表于 2015-4-21 21:14:38 | 显示全部楼层 |阅读模式

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

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

x
/* Include files */
& j: h$ S  E% o! ?2 y2 o$ c#include <stdio.h>
: U: |& x$ @2 [#include <uf.h>
1 l5 S) ^, D: z& J8 p  `) z#include <uf_ui.h>* {+ k3 m* X' O0 n; |& ?0 U6 f
#include <uf_modl.h>
' M1 z- i: D3 y+ v$ U  y" ^#include <uf_part.h>
, d- f  i6 H" q4 S0 {; J& }#include <uf_obj.h>;
5 f, _6 u' J( f/ Z4 I# n5 v#include <uf_curve.h>  n' Q" e8 q5 I4 T: F; y2 ~

6 W9 E3 }' }9 z: R0 X# {( Y#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
7 Y, X, I/ }) m$ l6 v6 }6 Zstatic int report_error( char *file, int line, char *call, int irc)
+ n4 J& c# G  }7 A7 ^2 n{- Q% Q4 b3 U# P$ \. v- b$ z
    if (irc)
# P; V1 u9 b( {    {  w0 K" m( x# U+ M+ k- w
        char err[133],% H9 L1 {/ D: m
             msg[133];' t& p! n! s5 J8 Z
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
9 y$ F/ r/ B- Y            irc, line, file);7 `3 [" w" l7 ?9 ]2 L5 i" x- h- `2 g0 U  O
        UF_get_fail_message(irc, err);
9 W2 |  i; [5 b, ~        UF_print_syslog(msg, FALSE);
- o+ r  A$ H( J7 `" B        UF_print_syslog(err, FALSE);( C1 |3 J- Q* S$ j& a7 c
        UF_print_syslog("\n", FALSE);8 w& Z& c9 g; ?- r
        UF_print_syslog(call, FALSE);' O* E4 k( K; {% d
        UF_print_syslog(";\n", FALSE);
6 ~" F% O) n5 J4 D, {* {  y        if (!UF_UI_open_listing_window())  j9 u: m% S- d5 G7 A1 c8 w
        {
. C$ h# g/ j/ F# \/ `, R8 v9 u! f3 a            UF_UI_write_listing_window(msg);
* a& C1 Q; c( \# r            UF_UI_write_listing_window(err);
7 x3 N+ p  f6 U+ h            UF_UI_write_listing_window("\n");
! X- E6 l8 m2 H, y4 R% `5 }( h. p            UF_UI_write_listing_window(call);& ]1 f+ L5 p# H; O) `5 s2 [" L
            UF_UI_write_listing_window(";\n");
4 e; P# i0 N- b0 \% E+ p        }
& i2 M! M3 y2 X2 H: T4 J    }
5 @. K% t. i: r    return(irc);
$ @" o9 d5 d( p6 \}
& q, E* M2 Q+ \1 y* D) L: }: C- l: J& M, F- l* j$ W* L5 V/ r7 j
/*****************************************************************************2 r/ a/ F, Z! s5 T% O! O
**  Activation Methods5 l6 {; j, E; [7 B6 s8 L: E0 C
*****************************************************************************/
/ Y# g* o3 y. @/*  Explicit Activation: q' Y& e2 y9 Y
**      This entry point is used to activate the application explicitly, as in' W4 ^9 u0 m: R1 D
**      "File->Execute UG/Open->User Function..." */; t8 C2 o! J. W  t
! Z7 s1 E5 W; s8 i: U: d
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
0 a2 f% u& a3 \8 S7 F* h{8 w* r- j/ ^. @& H& t& _0 o
    /* Initialize the API environment */1 [9 u! w8 I3 }+ J7 @7 @
tag_t partTag=NULL_TAG;
. X' r3 G/ _# F" v: O double origin[3]={0,0,0};. F! I6 z( v/ _" G. T' f: C( ^1 h
char *height="200";
  O9 _* p9 \+ M8 {( K char *diam="20";# D4 H- k/ t9 x/ M
double direction[3]={1,1,1};
1 Z2 k, p# x5 b2 I+ N+ r tag_t cy_obj_id=NULL_TAG;- g( M+ T1 p% g/ {
uf_list_p_t edge_list;" w! m7 C8 Y0 ?  P0 U+ K: D
int count=0;7 N. {/ I; A% J1 n& I- G3 V
tag_t edge=NULL_TAG;6 R- r7 h9 H' r: ^' @% v9 J
double originalpoint[2][3];
& A5 ^) }$ `' M UF_CURVE_line_t curve_coords;8 r  G2 H  f# L' p
UF_CURVE_line_t mycurve_coords;
+ _9 D% r- N% u* Y- }. J tag_t linetag=NULL_TAG;/ p9 G( y5 \0 i3 n* l; S
tag_t body_ID=NULL_TAG;( T3 ^8 d: ~1 r$ ^, H( Q- S
int i;0 ]+ t9 k7 c7 h0 C
char mymsg[256];
0 a; x0 {' H* ]) H5 V  e    if( UF_CALL(UF_initialize()) )
0 X4 H  p( D, }  q6 @) c3 d6 V% e    {* J9 u5 _' Q8 j& S
        /* Failed to initialize */) i4 ~; |' k- t* r2 n
        return;" m0 C" t' C' }; {
    }
8 S7 t9 b6 K* E% P( y6 u   
" O. x9 p! P. N1 [* @' J    /* TODO: Add your application code here */
8 E- h- t- l5 l // 1 new part6 f* y  ]3 B( ]" |! h* F9 q& `
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
  c1 ]0 `" s3 D
4 o& N, W4 v. l$ O1 P //2 new cylinder , {0 n* {8 I) V% t. ]5 I
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));. @, M9 j; v/ M0 ~! B
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
9 O: H2 V( \: u. X" w //feature -> body
" S% u8 k' B1 Q0 b$ T( [ UF_OBJ_set_color(body_ID,21);
$ U* N+ [9 S  D1 R& P //change translucency0 y$ N) }7 i& R$ j" o
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
) N& I- M" r2 |$ J7 \" K( V- n6 v9 ? //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
& f  y, k# I, z: B //3 new line% F8 l( M9 U& u  x, f* Z' `/ ?% s
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));, M4 L0 d& z1 d  u9 J2 U3 E
UF_MODL_ask_list_count(edge_list,&count);
4 ~5 h$ I6 J7 @% a& x# }) M if (count>0)0 y  v% a  B: v: v  }. c+ ]
{5 z; \! X$ H: X) r' ]) _) D
     for(i=0;i<count;i++)8 I+ q' n1 `* m4 [3 F' i0 l# d( b
  {
, K& O1 p3 `7 p: U! d. j" L   UF_MODL_ask_list_item(edge_list,i,&edge);" c& ~% Q! l2 G! k
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心# |3 @1 J7 \, V
  }
& Y$ k+ {9 Q. `  for (i = 0; i <3; i++)2 j% {, A4 \# q3 Q# C
  {
+ w& {0 n* H# [: X      curve_coords.start_point[i]=originalpoint[0][i];. s" J- H( X9 ~* J
   curve_coords.end_point[i]=originalpoint[1][i];
  v4 R2 H( v8 y  }
1 d4 V3 x+ [% K+ V( { // UF_UI_open_listing_window();8 X7 d( e. W3 F/ P
// 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]);
) o1 m+ E* f6 o& X2 w# b# y7 l //UF_UI_write_listing_window(mymsg);# H. Q; J) D, ^- [' |
// uc1601(mymsg,1);$ O( N" m0 D% N" X# e, H
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
9 o: X6 Y, ~0 k  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点# D: v* C! {4 b' q6 O8 m
  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]);
/ \" _1 L  i1 V: E% W  //UF_CURVE_ask_line_data(linetag,&curve_coords);& x2 f5 s( Y) g: q) {) 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]);5 N1 j1 ]- c6 t6 ^! h: i
  //UF_UI_write_listing_window(mymsg);4 E% [, m& ^9 x, }- ?8 C' ]
  uc1601(mymsg,1);
9 c' Q, v: c" a3 Z  q }
4 W! ^! i& s2 i  Y6 i else
" ^% S/ r7 ~( t8 E {0 b& O, r3 _# Z8 i, _% K6 p
  uc1601("no edge founf",1);9 L0 V( R" e2 k8 }1 p* R7 x
}7 H1 m, K( \5 K) S1 o7 F, |0 E
+ G7 _& z% M2 @. {" |* e( ?
% L  q6 g/ l! p; |+ d
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);- {1 @! ~: ?) f" O
//UF_PART_save();  //保存部件8 M1 H0 Q$ X* O0 i
//UF_PART_close_all();   //关闭所有
# ~  v7 U# U5 S9 Q4 Z3 v
4 k: ?2 Q9 w- R2 ~4 [. J/ _    /* Terminate the API environment */
2 Y6 B( j6 N0 i5 ]5 G- f    UF_CALL(UF_terminate());
, r: M/ c6 Y& F: X) J}% r) c  J& Q: Y' C
/*****************************************************************************- ~+ K3 B! a5 a' W9 I
**  Utilities
' c* Z! z0 a. X0 C/ L' j*****************************************************************************/" U2 I3 s' O+ G% N
/* Unload Handler
$ d/ p6 g$ r- \0 }**     This function specifies when to unload your application from Unigraphics.* H: @1 ?: L1 b9 g
**     If your application registers a callback (from a MenuScript item or a
$ @3 i7 b* Y" w- |! h, n**     User Defined Object for example), this function MUST return7 s7 T; W! H  Z4 k# m* l
**     "UF_UNLOAD_UG_TERMINATE". */
# @- B" D: w" \3 K5 lextern int ufusr_ask_unload( void ); `7 A5 O1 l# R  a
{, w, n  H' [" U+ |* k1 r  a
    return( UF_UNLOAD_IMMEDIATELY );$ F( H7 K1 ~( ]( h6 a5 ?# N" y
}* F( L" m& e8 z' x0 b1 n

2 E8 e* h1 z; S. ^3 U1 g& g# k- q7 ?, `; u# k8 {" E. W
我把圆柱的方向设成【1,1,1】,成功了
/ y6 s& j7 Z( M% }6 D
* k& I( _" V9 `9 P4 P; g4 `7 \
无标题.png

评分

参与人数 1PLM币 +5 收起 理由
admin + 5

查看全部评分

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

使用道具 举报

全部回复2

1

主题

18

回帖

197

积分

培训VIP会员

积分
197
发表于 2015-7-17 22:23:12 | 显示全部楼层
很厉害 支持支持
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了