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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

4

主题

4

回帖

83

积分

培训VIP会员

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

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

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

x
/* Include files */' {$ e# w( Y$ T$ n' H0 A
#include <stdio.h>
3 H# W+ G1 x4 P7 h1 }) {#include <uf.h>
- B9 l8 u1 J! [) r/ y9 T#include <uf_ui.h>; a2 W( k% Q/ g) f. \
#include <uf_modl.h>, c4 b% z& y& G7 u3 P* a# f
#include <uf_part.h>
; t) v4 n0 x7 ?$ l#include <uf_obj.h>;# b+ h5 w& R. f* T% L, p5 s
#include <uf_curve.h>, T/ C: q. L' s& F1 M) ?
# w& G9 b. C% g6 I
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
" K: H; J8 O) @) ustatic int report_error( char *file, int line, char *call, int irc)! J1 D+ `% \! B" H) q- Q
{
' o/ L! m  l3 V( p% g2 C    if (irc)
. h; v* e& M1 g. y3 F# ^% H0 ?    {
# }/ p$ d$ Y: K" [  h2 b        char err[133],
9 ^0 p% H+ b. C/ \/ ?* `             msg[133];) P  g* I- j. J  C
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
7 |6 J9 u+ J7 Z) I            irc, line, file);/ K% b2 z6 K! t$ P: J7 A
        UF_get_fail_message(irc, err);
% `' [. K. E0 m& ~# o* H1 I        UF_print_syslog(msg, FALSE);
( t. W% Y1 u. `8 b        UF_print_syslog(err, FALSE);
* v& z5 F3 `- g" [$ [% W        UF_print_syslog("\n", FALSE);5 _8 w6 r0 S7 e/ ?
        UF_print_syslog(call, FALSE);
0 _, M. I  g; `3 j9 C( p* e4 H1 t        UF_print_syslog(";\n", FALSE);
- m4 L$ J7 f; y# s        if (!UF_UI_open_listing_window())3 z+ Q3 ]. F( A& |, p
        {% @! E2 v$ N  B6 C- c( P
            UF_UI_write_listing_window(msg);
& U* P6 J4 S) u            UF_UI_write_listing_window(err);& Y4 i& [% {! O8 `
            UF_UI_write_listing_window("\n");
& o/ n" K, n- F7 ?- H, j2 n            UF_UI_write_listing_window(call);) w; a- i5 M- e0 K
            UF_UI_write_listing_window(";\n");6 w$ F1 o1 E/ N+ X
        }# O1 x) }# M* l' P
    }; y! E5 t9 W. `; `1 K! G- ^2 `
    return(irc);
- P+ B. J2 [  z0 ^( @}
3 l+ b( G) L0 q* E4 r; W
& ~( ?# P3 [9 K; |6 B/*****************************************************************************+ T' T5 B9 R( E) K2 y) U4 e3 J
**  Activation Methods
: B2 c  K6 ?6 j. |3 q( @  a* R! ]( \- c*****************************************************************************/0 x! U6 ~4 q/ y) x/ f( ^9 a
/*  Explicit Activation
+ L! e/ B+ m7 G. a**      This entry point is used to activate the application explicitly, as in* U) ~# b+ L% {1 ]; O3 Z
**      "File->Execute UG/Open->User Function..." */
3 A  \; K- Z4 z" ^* X" i+ `1 z
# X1 p: v0 w. y4 g" E! V# cextern DllExport void ufusr( char *parm, int *returnCode, int rlen )- t$ l( S1 i0 F
{. ?0 M# Y" R4 q% H- j& V' N
    /* Initialize the API environment */
* N( V. P( j7 f6 Y4 P tag_t partTag=NULL_TAG;
, _9 _) A6 J+ P9 \  O. g5 j double origin[3]={0,0,0};, W# m5 K  ], ^6 B1 a8 h
char *height="200";7 t4 C2 j$ I' L) i7 X1 D
char *diam="20";
. |+ p# f1 w+ G6 L; w3 S2 \; O0 c9 i; A double direction[3]={1,1,1};
( u: S% M' q" `. m tag_t cy_obj_id=NULL_TAG;* |3 k. f1 z4 B- v& o
uf_list_p_t edge_list;+ R. c/ x( c7 h$ S5 n1 q# H2 M
int count=0;9 i2 i% h0 x6 J6 _# i8 _
tag_t edge=NULL_TAG;
0 {0 P* q% u' ]% C, D3 J double originalpoint[2][3];# a/ Z0 T6 ~; G: X  F* |
UF_CURVE_line_t curve_coords;
. G5 T: u6 b# ]/ q5 D UF_CURVE_line_t mycurve_coords;) ~5 c  F/ N, a( \
tag_t linetag=NULL_TAG;
- T1 D4 ?4 G9 o9 W tag_t body_ID=NULL_TAG;
. g7 p. S( u$ W! B int i;  m" Q* @# k* U. M
char mymsg[256];! s4 l' ^! a8 o1 i& X/ m
    if( UF_CALL(UF_initialize()) ) ( }- f1 i5 R7 H& K9 ]9 H
    {6 U. O: {9 \& F& V4 L$ D5 X
        /* Failed to initialize */8 ]7 P* Z1 W8 j1 {; J
        return;
  P. N$ q2 Z9 k* D/ m' M+ v- h    }+ T9 B6 D- A* j4 {- a( J
    & r  s' ?: p$ J+ b5 k
    /* TODO: Add your application code here */# L& [3 g% y# ^) B% U
// 1 new part
9 P! a+ K. G- }1 h# L! ^2 t UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠$ }, P7 i1 ?) I' G% v
& O: C  z7 w, I$ v" k0 l/ L( R
//2 new cylinder # G0 D* _1 c0 ^! v+ s1 u& k" E4 s
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
# ]$ ~5 `5 B: s, w' q. } UF_MODL_ask_feat_body(cy_obj_id,&body_ID);# W' K5 g0 S1 O0 N0 L. U* l  F$ G& K
//feature -> body5 H" X* j% H9 ^" z
UF_OBJ_set_color(body_ID,21);5 I6 o( ]5 c/ D- Q7 v
//change translucency5 \$ l7 t2 R6 I& {
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
0 T8 f" M+ |5 [9 g! F //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
$ H  z- R3 c7 K0 W* C5 p7 S3 ? //3 new line
1 e$ V4 ~, M  S( m5 R UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));% Y, G# N. ~9 u' M# M  ^+ j
UF_MODL_ask_list_count(edge_list,&count);
$ @' \# q. z  c* ^7 e if (count>0)" F" }8 w- E+ g7 q
{+ q" }0 v; ~: D3 z  [
     for(i=0;i<count;i++)
- H6 M. @9 K- b  ]8 n  {
6 J' t+ d/ ~$ ]5 b/ o9 |   UF_MODL_ask_list_item(edge_list,i,&edge);
! f- J6 L1 W8 `) w8 H   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心% F; F; O  e  H
  } & P: m/ g6 T5 I( r/ i1 s9 q
  for (i = 0; i <3; i++)
: g+ D* G( d, }# y" l  {8 S4 L9 {7 |+ s" H
      curve_coords.start_point[i]=originalpoint[0][i];
, m' B5 F2 b& v5 {   curve_coords.end_point[i]=originalpoint[1][i];% T1 `6 X" f) }
  }
+ @2 i' n8 U( @, {" E. X4 @ // UF_UI_open_listing_window();0 y/ E- ?; W0 R# U4 c& `5 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]);: V6 I# w( |- `! c5 k
//UF_UI_write_listing_window(mymsg);9 A) E( ]+ O; \7 L5 ^, p$ r( `
// uc1601(mymsg,1);
! Z, Q+ ^) n7 w* }3 s% Y3 k: b7 f  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线! h6 D* {) P! L* }8 K# r
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点7 d2 N) s# ^9 q0 u4 b
  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]);
' Q9 o( ?5 X& U, @/ k  G  //UF_CURVE_ask_line_data(linetag,&curve_coords);
/ ?8 l, j; g" P) a1 m/ _  //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]);0 u+ e) k7 c9 _4 n& N- z
  //UF_UI_write_listing_window(mymsg);
. g, B0 L9 d. T  uc1601(mymsg,1);
9 I0 s4 G, G! g" M' J }! g7 _9 C$ D7 K. \6 w: k( d+ G/ l
else3 z/ p8 h6 s: n+ |+ m
{* g- A$ u! h. O5 M4 G0 D; r% l
  uc1601("no edge founf",1);
* j, J0 G8 P6 U }3 U% S6 f/ G; s
, Y# u; @* z2 k8 H
) N8 p9 W0 n9 x: J5 }2 G
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);! K. C. R: A% h" q4 w) I
//UF_PART_save();  //保存部件6 u, L, q- X2 Y$ {8 c
//UF_PART_close_all();   //关闭所有
* C/ U3 i4 L$ G, `! u 8 `* L" x  @! e) i1 |
    /* Terminate the API environment */# G7 B, o  x; D) ?# W
    UF_CALL(UF_terminate());
) f; a- U' h' D' u}# [. M- D8 Y+ n% _8 A9 e
/*****************************************************************************! X. c8 ]; V% ?# O4 `+ }
**  Utilities
- U0 ]/ R2 F" j* N3 f! F*****************************************************************************/
& T7 |. E* I& w* P) h1 N5 E/* Unload Handler
0 E$ A$ r( r8 u2 f7 R& K**     This function specifies when to unload your application from Unigraphics.; l" R  c1 X6 S: m! E4 j
**     If your application registers a callback (from a MenuScript item or a
3 Z/ C0 S4 \8 n4 C/ m& y7 P**     User Defined Object for example), this function MUST return# o4 U5 c% b" J+ i; i6 s
**     "UF_UNLOAD_UG_TERMINATE". */
/ ~' P7 `" I$ s8 A- ?3 m# |8 l/ p, F6 @extern int ufusr_ask_unload( void )
, n5 i8 H3 }: H8 G/ H+ b{
% y1 `2 X% v, l1 ~) r2 _( J    return( UF_UNLOAD_IMMEDIATELY );
9 f1 o( I- }. Q$ \3 M# N}
  j1 H: l' Y2 P6 t8 P8 o7 u% O% g* ~$ e+ a
& j+ v; L% G8 {4 x6 [  {0 `- ?7 P
我把圆柱的方向设成【1,1,1】,成功了
2 m( p' [' z# M! E- L1 ?
3 O" l) ?) Y; m. a" _. S
无标题.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二次开发专题模块培训报名开始啦

    我知道了