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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */( ^+ U3 T7 c* J5 S% V& w6 {
#include <stdio.h>
& p$ b# k  J6 t% ?#include <uf.h>
0 v. _! r3 C6 X2 s#include <uf_ui.h>
4 o7 }' |* n9 a$ |" a- J! W#include <uf_modl.h>, F( y( P3 t0 K9 E- M
#include <uf_part.h>6 p9 [5 X8 \$ W  F
#include <uf_obj.h>;0 P8 p9 \# v% K
#include <uf_curve.h>3 r# r0 z% }% k* z

4 L& c' o/ i3 {% ~( o( i$ X' V#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))), Q2 q/ `$ c* X4 ?6 k0 P
static int report_error( char *file, int line, char *call, int irc)
+ N& o8 D. S: J{0 U, S- U2 C5 S! e' B
    if (irc)" G$ K6 r; ]7 [7 M$ T1 U
    {
8 ^/ ~# {3 @5 F! z6 L  e# l2 K        char err[133],
2 I5 J& a5 N1 v" w, T; Z             msg[133];
8 B& L4 Y% B1 v- @) F  X  d& t        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
7 ^( B: v( |3 L0 r+ {            irc, line, file);! w# }' L  j7 G$ |9 p" y
        UF_get_fail_message(irc, err);
- C# G! Y1 j4 |/ n6 J* D' @" Y  a        UF_print_syslog(msg, FALSE);
5 ?+ a5 h& U1 R        UF_print_syslog(err, FALSE);3 X, z1 X7 s0 m" k
        UF_print_syslog("\n", FALSE);0 D$ l2 v7 D1 ~# G# c8 L/ H4 U' U
        UF_print_syslog(call, FALSE);
" B) Z) W2 Z7 W: ]& r        UF_print_syslog(";\n", FALSE);
% E7 K8 h9 F4 n# _7 a        if (!UF_UI_open_listing_window())& Z$ p3 c! ^6 b
        {
# P( u7 ?3 `* S5 ~0 p( c) u            UF_UI_write_listing_window(msg);
7 g3 V' f. c. S" j! t0 q5 d# D            UF_UI_write_listing_window(err);* F1 G' u7 ?. o
            UF_UI_write_listing_window("\n");
7 ~4 N6 ]1 }7 C, }            UF_UI_write_listing_window(call);
  n* H' p: O1 o( A( _8 g8 q            UF_UI_write_listing_window(";\n");
/ ^* Y* t: T% p# k( o  q2 J        }
) \2 H( e& ?6 q( V1 g' b    }
6 L  z# E+ W! g. Y! D    return(irc);8 q# L' j  n% k! L0 I. G7 k
}
& t% d& d/ e* g  R7 |1 k5 T
5 h6 q  h8 y1 e6 a/*****************************************************************************9 U9 @9 S4 K+ r0 c$ B; B
**  Activation Methods# k6 d4 H9 u: X' b* F
*****************************************************************************/* Y4 x# ?2 e9 R# a" u3 D8 h
/*  Explicit Activation
6 C1 w' q! d, f$ I$ c$ n! c**      This entry point is used to activate the application explicitly, as in
9 V  L$ P3 z; R! {% u! |8 `* L**      "File->Execute UG/Open->User Function..." */
; j9 y9 e( v2 N- R! T1 k! g" r
; N- h. X9 H  g* qextern DllExport void ufusr( char *parm, int *returnCode, int rlen )9 r& ^1 l- F  j
{
% t4 W1 ]  h) E    /* Initialize the API environment */) e" |8 R1 N  E* T; `
tag_t partTag=NULL_TAG;
2 F- d" g/ ^% I( t double origin[3]={0,0,0};8 g8 }) u" x/ j: y
char *height="200";' J. R- c$ c6 A% H9 s# `
char *diam="20";1 @  m) `3 H4 M- G( T7 [
double direction[3]={1,1,1};& J' B% w# {( j' O7 M
tag_t cy_obj_id=NULL_TAG;  q6 t" W% L; y0 ^; j
uf_list_p_t edge_list;! Z9 B- P) K! c0 ^8 L  M
int count=0;
& D6 [- K; U' ]- \5 n+ e; k- G" q tag_t edge=NULL_TAG;  `3 z' L$ {3 k, |& Z: A( k# `
double originalpoint[2][3];
4 r5 X2 t. \, F8 X7 ?  ?2 E UF_CURVE_line_t curve_coords;7 c4 y/ |: Y# ~& z: S5 M( ^0 x- @  E# @
UF_CURVE_line_t mycurve_coords;
. K; \& S5 z; L: V' L9 S+ t1 ^ tag_t linetag=NULL_TAG;9 e% s2 S/ H1 M& \7 c6 S
tag_t body_ID=NULL_TAG;3 ]  q9 A" ]% y( f+ ]5 v
int i;2 R; J4 y7 i  F) K
char mymsg[256];0 i4 g. e9 f5 o. a; [- {# c- w" t9 @
    if( UF_CALL(UF_initialize()) ) ' R. W5 }, O: L) }
    {
, b  {' {( c7 X0 l, L        /* Failed to initialize */: p* k3 y; C: c2 ]/ V7 v
        return;/ T5 z7 h& d( f* m( H
    }
( a2 z/ L9 U2 d" m8 d    9 C" E2 ]$ m1 A3 i  ?
    /* TODO: Add your application code here */8 r1 i; x6 }& z2 s/ o
// 1 new part6 l* Q' b( u1 c5 C3 p5 ^0 g
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠0 i, i( F! v( b8 N; k, W
9 E6 C7 D; H. W, E; ^
//2 new cylinder 6 V' k% p! l2 _$ p
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
* H( T5 H( }( | UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
, Y" i, G, W$ d  N8 S2 a$ m //feature -> body
9 }( _2 Y& @4 ?8 }6 q0 J9 q UF_OBJ_set_color(body_ID,21);
' y. P2 g7 A0 O //change translucency+ F8 i1 c) }; }6 D! f' G) R
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
8 A# v. D7 r# G) @$ o/ H //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
7 F! f5 x( `" j' S# w# N //3 new line2 l; z" v, ]% T+ i$ x
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));( P) q* B3 ?" U. {
UF_MODL_ask_list_count(edge_list,&count);  n9 z6 H; g7 W  p1 |
if (count>0)
4 T) \0 U7 a! e2 W* s {
/ G, _3 U% d6 M+ g2 C     for(i=0;i<count;i++)- u, D( q2 g. Z
  {% m! l0 X2 q* J" L% C3 V
   UF_MODL_ask_list_item(edge_list,i,&edge);/ D, [2 C0 s+ O: A' B2 v8 R
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
2 k5 N( R; c- {+ ~  }
) C8 o% w% T& l$ ~* Z  for (i = 0; i <3; i++)1 B: a8 }, @9 _
  {
1 R. G. v$ [  B" _8 R      curve_coords.start_point[i]=originalpoint[0][i];
( C2 I1 l$ }- d: O* N( p; f   curve_coords.end_point[i]=originalpoint[1][i];' e% i% O* c, u* e, v3 Q5 V& s
  }
- \) m$ B2 y, B3 m0 o: X // UF_UI_open_listing_window();1 Z/ [" O; q- P2 a& h  W* {
// 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]);
2 D  ?9 T* q# }7 H) h& p //UF_UI_write_listing_window(mymsg);
% Z& T% G+ p. L' V$ f" P9 U // uc1601(mymsg,1);" a; I" D; u3 {! Z; K
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线! n& {* A- }- y8 B
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
+ S0 }3 w/ a6 c4 b  s9 x7 A6 X  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]);& S- v" q0 _+ C* C& X
  //UF_CURVE_ask_line_data(linetag,&curve_coords);
$ o: C, H, j2 }/ v2 _+ E  //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]);
6 d# D$ |2 V2 I/ x3 _; p5 Y3 F0 @  //UF_UI_write_listing_window(mymsg);% ~+ u- N+ Q" E, A  y
  uc1601(mymsg,1);# m/ B) R+ b6 X0 `- V$ z+ Q
}
, S  f" p2 H2 a$ D1 w5 R else
/ l: S3 M; _9 s/ I {- o/ ~' a  j1 e/ ?
  uc1601("no edge founf",1);
( U/ G; z. k# Z5 X6 R6 ~2 K- o7 | }
+ |& p* a# S1 T* q" D0 Z 3 S; a9 o& ~2 U4 |" P# B+ m

, g6 j4 Y: F4 O7 ?; L; X( S) B //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
( d# U# h4 l! |5 }+ E //UF_PART_save();  //保存部件
  q7 }- Q. c: ^! O //UF_PART_close_all();   //关闭所有% D5 @* D! P: f9 b7 _# F

- f3 S) F2 B6 I* G- j2 q5 G    /* Terminate the API environment */
3 D- ]! T4 z" g0 \    UF_CALL(UF_terminate());
5 ^% b, ^3 s7 v- Y) t$ m1 i: l' I; B3 o}
$ I$ `7 T$ ]& c. x% d5 X" c" B4 H3 h/*****************************************************************************. k6 }0 S+ @; q) i
**  Utilities
+ }! w1 x) p! J*****************************************************************************/; I8 E) V2 _$ l9 O" j+ }
/* Unload Handler: j% i/ X# }$ u, t
**     This function specifies when to unload your application from Unigraphics.5 m" I# X$ ]/ {2 M, m
**     If your application registers a callback (from a MenuScript item or a
& W) v$ K; J4 M3 C; j5 r% ^**     User Defined Object for example), this function MUST return
) ?+ D9 s8 V, w+ a1 V4 i& K( L**     "UF_UNLOAD_UG_TERMINATE". */; k# o* `' Z: ?# V$ m  d, H4 o
extern int ufusr_ask_unload( void )
3 }. Y$ V  r. k2 U{
& l2 ~+ M! J4 w( x- K7 b4 }) M    return( UF_UNLOAD_IMMEDIATELY );
: U( A, a* K0 B/ h) E1 u) p0 Z% Q/ b}
. }$ R, @& R1 Y- ~9 G1 o6 W2 e8 h2 p
, a1 O0 j$ Q8 K
! _5 }3 R) E( P6 G! ^我把圆柱的方向设成【1,1,1】,成功了
; S* _/ Q. t3 j7 V+ r: [" D3 x# O
无标题.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二次开发专题模块培训报名开始啦

    我知道了