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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */  w8 }3 L7 l1 R# q, l0 j
#include <stdio.h>2 w+ c6 S# Z2 a1 N% t" S+ R0 M
#include <uf.h>
/ R/ z1 o+ _7 X9 _) Z- T#include <uf_ui.h>+ m" H! @# e; A0 u8 d
#include <uf_modl.h>+ s, e; a, V* B& `: [. _( Z6 Y
#include <uf_part.h>6 O  N' `4 F* }7 R+ K3 A* L
#include <uf_obj.h>;3 I9 t9 {2 T" N; }9 f; @5 E
#include <uf_curve.h>1 R  p6 f: L0 {9 n, s6 @  k

* e$ n3 y& @% y, O% ^: v" F#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))), r. |( j1 e8 {
static int report_error( char *file, int line, char *call, int irc)
! M" J4 f6 T; m6 T/ E  W$ D  r/ L# a{
6 ?% B% \+ x3 o# U! v% Y    if (irc): V) ^- S: i) g, [  }4 i
    {
6 J( I5 U1 W8 K        char err[133],! U) |$ V  J( A/ u& D5 h" Q
             msg[133];
7 o% K+ x4 N$ T  A' g        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
+ \8 s4 U/ x! T            irc, line, file);2 m; s. V$ t. L/ V( N0 @, X
        UF_get_fail_message(irc, err);
  ]# ~" D& I6 t$ M6 s+ ~+ ]        UF_print_syslog(msg, FALSE);
* E) }+ R; y& F$ O; J' d; P        UF_print_syslog(err, FALSE);
( L5 v9 H% o: T- H% n' ~4 }) N        UF_print_syslog("\n", FALSE);  n, V3 m* ?1 m; e! T; q
        UF_print_syslog(call, FALSE);
( d& l/ R9 K* \; r4 D+ {9 q        UF_print_syslog(";\n", FALSE);+ _2 u# K: R1 J& |/ C
        if (!UF_UI_open_listing_window())
/ R; B, A1 w7 \% U+ _& h& Z        {
; W3 j4 X4 T, J& Y& [% j            UF_UI_write_listing_window(msg);4 B4 L) Q; s1 B
            UF_UI_write_listing_window(err);
4 p4 X% \: Y4 F' m& e            UF_UI_write_listing_window("\n");
2 m# H6 H5 U. K3 U& q. B9 z6 Q3 J            UF_UI_write_listing_window(call);
  W; F% g) v" G, T+ G            UF_UI_write_listing_window(";\n");8 g# e- O2 z3 O
        }4 b: t+ V/ S3 j9 i8 T
    }4 B6 r: J% _; Q( x4 _
    return(irc);
1 H0 W) i- R: N/ S6 d8 n$ {}' L. s  o9 C! v
2 g$ W# ~: c5 r2 h8 l0 ]  Q( y: \
/*****************************************************************************3 f' D1 _& k. S0 _( Y+ S
**  Activation Methods
! o& j1 ~5 Z3 \* C. I' N- m  H8 L1 p5 D*****************************************************************************/: o# R/ a; m# f6 r
/*  Explicit Activation1 h3 `3 m2 P& M  e8 s* s5 U0 _
**      This entry point is used to activate the application explicitly, as in  D% S1 Q8 K# l: X6 M+ z7 `
**      "File->Execute UG/Open->User Function..." */
4 Y7 x% l2 u0 \& W, P( Y
! D$ X0 L+ H" `* m( e& V2 yextern DllExport void ufusr( char *parm, int *returnCode, int rlen )' N9 T" C* ^' f5 L$ R: z
{5 a+ P& Y* K# Z9 A
    /* Initialize the API environment */& T1 g2 u3 D. ~& q5 y% ~7 z
tag_t partTag=NULL_TAG;" x$ U% x1 C0 m! g" [; h$ ]! m
double origin[3]={0,0,0};
& X$ X7 }% |5 Q+ Y& ~ char *height="200";4 |  v+ |/ G4 t' v6 c4 _. n
char *diam="20";
4 @- u( C  E6 s! X, {6 \" l" S, ~7 W double direction[3]={1,1,1};
# |3 o" n3 R1 Y& f7 N; ^ tag_t cy_obj_id=NULL_TAG;; u$ \6 m# `/ C4 b2 `" i. r. H
uf_list_p_t edge_list;6 R% q2 s+ Y) T1 H0 v
int count=0;- `: k+ Q% q& r$ |2 Z
tag_t edge=NULL_TAG;
& R0 C* J) E* e4 u; o double originalpoint[2][3];$ K6 V2 i% f) t2 ]& U
UF_CURVE_line_t curve_coords;7 A1 @8 m* F- I/ c6 Z4 Y
UF_CURVE_line_t mycurve_coords;
$ h& U; ?6 _2 [) W' G tag_t linetag=NULL_TAG;
! u- v9 C9 E% N; o& T5 I$ o tag_t body_ID=NULL_TAG;
) E; P. m/ W1 m# @! U  @ int i;2 S; @! V9 t: w) l1 f- P
char mymsg[256];+ o/ P: B1 |/ V, j  ?* F
    if( UF_CALL(UF_initialize()) ) / O4 @4 Z3 P% Q" V* n! B% s
    {, \( m& q6 Z, [( }) ?& j9 E
        /* Failed to initialize */$ j& V# ~/ x  G: b0 t! M  d
        return;$ `5 j) u2 O* [) k
    }
( |6 F1 v3 m& j5 v; g% o. _   
0 }/ J) t7 Y3 g* Z2 A$ C+ ]    /* TODO: Add your application code here */
) d4 G) Q4 }& R // 1 new part
: A( v6 E7 ?+ v5 w UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
, K/ U7 L/ Q7 y% g2 \
  R3 j0 f# t8 e  v. v7 c //2 new cylinder 4 W! X0 h9 m+ u: `
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));" {. ]5 ^  c) s- r7 z) S  r
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
% C& E7 x; a9 z //feature -> body7 C7 t" V) K  v- i0 r2 X
UF_OBJ_set_color(body_ID,21);5 n6 o, W4 g, O) z" ~
//change translucency
8 C+ p2 I5 ^  P) m6 c7 U UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度4 j% b  }+ Q7 o; }3 q) p7 W2 a; ~
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag9 y# [) g  x% A: t+ O
//3 new line
/ n+ V: v- }" i) [* X" R UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
3 B: i* x7 w. M: W& V1 B UF_MODL_ask_list_count(edge_list,&count);6 J. e% C8 V2 J  E+ S
if (count>0)0 s+ Q4 v# ?& E! n
{2 \9 O( v* a' ?, B5 T& j
     for(i=0;i<count;i++)) Z- @- q' Q/ F5 M/ O8 c
  {: i# M. H+ q+ R8 U
   UF_MODL_ask_list_item(edge_list,i,&edge);
  F- z8 @2 ~  P+ s; M8 \2 }   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心$ z  _- p3 H) J3 p6 J8 h$ v
  } / X& l8 P2 \& D  Q
  for (i = 0; i <3; i++)
9 m; B9 c0 t4 |' G: g0 w6 `+ G( B  {2 j5 A5 _; N# n( y! H3 |/ |
      curve_coords.start_point[i]=originalpoint[0][i];
" f; s  _- t/ s( a7 K$ w   curve_coords.end_point[i]=originalpoint[1][i];
& H* |, j: G4 Y1 {5 H3 u& J- U  }
3 W; x2 t& c7 s& } // UF_UI_open_listing_window();' N& Y& v7 L9 H8 ^: D( J! O
// 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]);* P$ ?+ p0 b8 C7 j0 C7 g# H
//UF_UI_write_listing_window(mymsg);
) G6 N7 z( o. N% u# q- d // uc1601(mymsg,1);$ k- C9 J: t$ o6 d0 P  D! w
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
' Y5 Y# x9 N& b7 i+ a- [% G- ]! r  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
3 R# ]/ X: E" \' 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]);
: [8 t4 f, i: W4 U3 h) X  //UF_CURVE_ask_line_data(linetag,&curve_coords);8 u* C+ u3 Q- i/ e1 d
  //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]);* d: I3 O8 y, x7 L8 d9 r
  //UF_UI_write_listing_window(mymsg);% T& d4 O; w) n- [# C3 k  x
  uc1601(mymsg,1);7 _0 F6 c; {. G: f
}
9 d; h; V8 Y+ w. I8 u# L% Y, }; b6 a else
' ~' h" J/ k+ _# h7 h9 Z0 J {- m0 \/ }0 c' @3 v; Y
  uc1601("no edge founf",1);. |! j: [, G# I4 m
}% B8 Y) q4 Z, N, L6 {6 B1 U

2 }/ O1 C( c7 u$ O$ V) D: Q: T! i  {0 |
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);- O/ ^" Q7 K, d% I- ~! l* `/ {
//UF_PART_save();  //保存部件7 F; a2 z! Y2 v7 d, ^
//UF_PART_close_all();   //关闭所有
) B9 N) _, k' r: I1 Y. g; C
, a# R- F5 @& ^7 u4 _. u    /* Terminate the API environment */
0 G9 g+ L1 Y/ T  q, `. Y; m2 z8 N    UF_CALL(UF_terminate());
# ?: `7 I( O% |, s9 v  a}# |& F6 u2 }( m
/*****************************************************************************
4 X  X) X4 T5 n6 g" O**  Utilities
* d$ d0 ]2 \( t' `( E( f9 J*****************************************************************************/& p, g0 K7 H) F
/* Unload Handler1 F, {( o0 {$ |2 T0 K
**     This function specifies when to unload your application from Unigraphics.7 I6 [% o0 q- r$ p( [7 i' y
**     If your application registers a callback (from a MenuScript item or a/ |$ r% w% x! N3 }  R/ D
**     User Defined Object for example), this function MUST return3 B$ F0 _  C) n; q4 P
**     "UF_UNLOAD_UG_TERMINATE". */: h0 B5 y# _/ e1 J+ e2 S
extern int ufusr_ask_unload( void )
* E- A; L  y4 p4 A, q6 C{$ {1 U+ i; j- w$ A# s1 k
    return( UF_UNLOAD_IMMEDIATELY );; P$ g4 }+ L9 S' v0 P9 E
}
$ B! N( Z. l2 i2 D* L; U
5 F8 i1 j- B2 b3 ?/ }* P
4 w0 |7 B9 Z1 O* M! L3 ~我把圆柱的方向设成【1,1,1】,成功了
4 @8 g, m/ Q; M
/ g  I3 B9 w& ?) R( \% R- N% h
无标题.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二次开发专题模块培训报名开始啦

    我知道了