PLM之家PLMHome-工业软件与AI结合践行者

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */3 D  X; O8 S0 \3 m) M. |
#include <stdio.h>
: a' Z3 L  `% t#include <uf.h>
% C( d7 N" b/ p#include <uf_ui.h>
: ?& o# C' _- e#include <uf_modl.h>
0 S1 l: Q, R# l$ F#include <uf_part.h>
0 X7 k4 \$ X2 M#include <uf_obj.h>;
' v- Z  j3 Z' N6 }6 Z#include <uf_curve.h>
0 \+ f+ Q+ S1 @- o) |( ^- ?& w
! b/ }2 O. S4 [* O#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))& j8 w* q- b5 l
static int report_error( char *file, int line, char *call, int irc)9 H4 r7 W1 d2 A# l! ?% `- \
{; G% A. ]( S* G8 T' h6 o
    if (irc)( y: Z' ?3 K4 `9 ^* ~) f+ I
    {
8 D7 |' m* r! I+ ]& b        char err[133],
& r) F4 @: x. z: ]             msg[133];
, |: U$ ~; Q5 o5 |4 b* n, J# E        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",, q5 v9 x3 ?2 }2 U5 k  i- _
            irc, line, file);: P6 Z+ p8 N; @5 O
        UF_get_fail_message(irc, err);' Q7 ^9 ~* t2 x0 ?4 C4 ]
        UF_print_syslog(msg, FALSE);! h& P$ j. I+ g# \5 K9 J+ |
        UF_print_syslog(err, FALSE);# n8 U. D5 j; S- b' j% S1 C
        UF_print_syslog("\n", FALSE);
. G4 V8 z3 k$ T        UF_print_syslog(call, FALSE);) }3 W  b) y# |$ b( n. I
        UF_print_syslog(";\n", FALSE);8 q' c) ^/ U- n5 G+ b# G$ g8 w9 y
        if (!UF_UI_open_listing_window())
2 D6 @6 v! C+ z" Z3 Q, i        {2 P* E1 o7 v1 O# k& G
            UF_UI_write_listing_window(msg);
, d+ ]2 Y0 q  _1 c            UF_UI_write_listing_window(err);
$ T# t1 W5 r' c) `3 g/ N            UF_UI_write_listing_window("\n");* [* x7 E6 B8 k0 `& i, e" L
            UF_UI_write_listing_window(call);4 h6 k: V2 F3 r1 g/ O8 g0 f' B
            UF_UI_write_listing_window(";\n");
( u, F; Q( k. D# ^        }6 P1 v* M( F8 t
    }
, k2 A. M2 Z' A2 o' U0 L    return(irc);
( k8 F3 g: _; r! A" i}
1 D) i0 }+ Y0 H; |+ H, A1 q  b6 }4 g; X: d$ d+ ~- R) D* B
/*****************************************************************************  z9 [0 ~  U: _% |2 E
**  Activation Methods
, T- V$ O- @, l3 n. c*****************************************************************************/
, Z' d( @5 a6 N/ p/*  Explicit Activation2 X& l2 x, i8 K: a6 B7 I
**      This entry point is used to activate the application explicitly, as in
4 M% [* L% D; E8 b**      "File->Execute UG/Open->User Function..." */) u, p/ ^- i! F

# q3 f+ n- n4 eextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
9 O2 `! ]: X5 t+ s{
1 t3 ^. M* a* Z3 f5 F    /* Initialize the API environment */6 n% v, J* F9 Q- N+ T
tag_t partTag=NULL_TAG;
4 j4 X7 ^& a" b( T double origin[3]={0,0,0};
" h: a* Q: N- |/ h7 l1 I5 z char *height="200";
6 I2 _( m) g8 `$ Q char *diam="20";
; F7 \- ^- K& X) [: {: g double direction[3]={1,1,1};" M0 r* ~" N" q# E4 P: c8 O7 k
tag_t cy_obj_id=NULL_TAG;
9 k& n( H% u- w3 e$ a2 ?& b uf_list_p_t edge_list;
7 N+ o0 V. |$ _- d5 N/ @ int count=0;
: N6 L/ q" I' o5 a/ n( R$ B, ? tag_t edge=NULL_TAG;
+ A" t+ x1 T  o3 a4 T/ y8 ~ double originalpoint[2][3];
8 \. H0 P# t2 |3 z UF_CURVE_line_t curve_coords;
( |% l  J  ^0 ~& n& z* k0 g UF_CURVE_line_t mycurve_coords;; M( R( P5 A8 G
tag_t linetag=NULL_TAG;. w% o" a3 c4 j/ Q8 X1 t; ~
tag_t body_ID=NULL_TAG;3 l$ l: R$ v, b! X  Y
int i;
' p# `2 Y. C! [! {; S& b  ~7 ^2 z6 ~ char mymsg[256];2 D$ k# A. ^! v. I
    if( UF_CALL(UF_initialize()) )
5 {- ]. }+ }. v2 Y6 ^1 t! i. D    {
9 R# B' t/ G+ k% I) \- f        /* Failed to initialize */
/ S' w6 }& Q/ r$ E0 g0 o        return;& v* n1 e- F* I6 e# E- s( U
    }/ ?3 q/ B( B6 i! s1 z! n' z2 O
   
- k7 o) c, s% [  A: F0 E* O    /* TODO: Add your application code here */
2 Z8 I& A! b" n7 X4 u' p- p# c4 G // 1 new part: l: H7 p% y' v; M% c! `
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠2 K. r4 f: y& A/ Z1 t
/ U$ \# T- d; }5 e# X8 H
//2 new cylinder
6 F% ~1 h0 w0 a- D+ S% c UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));; F3 c% E- q1 [. K
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);% v; k! }% ^4 z8 _6 Y9 u* w
//feature -> body- p  z# b# C; I7 D3 X, u
UF_OBJ_set_color(body_ID,21);
2 F6 ^7 r  d" o. u //change translucency
3 L' o) p( w$ R UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度2 `; n0 \" ^0 h$ G/ G1 J7 v) d; e
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag; O8 z9 x4 ~- r8 u: j" }& U
//3 new line- o- V4 V, G) V4 u7 b) }4 ^
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
2 J1 \) s( ^2 e5 I UF_MODL_ask_list_count(edge_list,&count);5 {8 m# _. j3 r% v9 |" b! A9 e7 z
if (count>0)
" Y  M0 ?  I# J. X& z {7 q. K3 R" ^9 t* q+ l1 s
     for(i=0;i<count;i++)
  D/ ^3 S9 n# b% K, X9 |. ^  {  m/ |% ~- a- H9 q; u+ j+ h
   UF_MODL_ask_list_item(edge_list,i,&edge);( i" m+ `% t- M8 W* B5 ]6 Q
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
) W8 Y6 k, U' O" w4 {  }
0 h/ g( p9 O. Y: y8 a2 K  for (i = 0; i <3; i++)
- f0 y; p! [; C1 p7 A# \7 N) b; l9 Q0 E% [  {  ]4 V2 a! _1 G5 n2 l  q
      curve_coords.start_point[i]=originalpoint[0][i];& G$ E& j, B4 T2 r( w
   curve_coords.end_point[i]=originalpoint[1][i];6 z# n, q5 c9 g8 i! l
  }
8 ?  n) O4 X( @0 H# B4 f // UF_UI_open_listing_window();' Z5 y  n5 y7 M4 o+ k( t. v+ a
// 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]);( M4 p2 `( F9 X1 Q& [8 R8 X
//UF_UI_write_listing_window(mymsg);
' z# @% ]! J% M2 Q0 ` // uc1601(mymsg,1);6 v2 ~/ o  w* x
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线* @7 u9 H: p  C  |! N5 x
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
9 f( M  F% i  S; [  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]);+ Y; ^, M# @& A+ m. e
  //UF_CURVE_ask_line_data(linetag,&curve_coords);
. V+ w* D& Z+ I; y+ K8 E% o+ b' V  //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]);; @; e0 o* R0 ?2 F
  //UF_UI_write_listing_window(mymsg);8 I) _4 h4 h/ D9 Y) }
  uc1601(mymsg,1);
5 s% w% d& C7 D4 d$ d }& A) x3 X# A- [
else7 @. c2 J1 ^9 j
{
" a" ~  r& {4 g' c  n  uc1601("no edge founf",1);) P# O2 U9 e* C6 {0 W+ {) f
}
3 d1 _' Q' ^+ l3 x9 V% M
8 a+ }1 G7 Q) G4 j
) @6 S8 K8 i2 f7 `9 V4 @ //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
; c/ {/ {5 X: `+ |/ e" E //UF_PART_save();  //保存部件
2 w6 j2 y9 `$ H9 X8 | //UF_PART_close_all();   //关闭所有$ g* H1 ]* k1 w4 j4 h9 R: \; {- Q

- l! n8 \$ [  t7 t" H    /* Terminate the API environment */
. e; k( J: T$ C0 e    UF_CALL(UF_terminate());
0 t& H/ t  k1 Q; i3 x+ j}
* L) B' ?  {# M3 {/*****************************************************************************
# w7 I" o4 I' z: x+ T**  Utilities2 I5 x  r6 O/ y! f3 E& A; v
*****************************************************************************/1 e6 N, u" a* F6 p7 a; y
/* Unload Handler& R; I9 r' t' S9 P/ E% o
**     This function specifies when to unload your application from Unigraphics.- [9 h& h& ?) k. R' ?* A
**     If your application registers a callback (from a MenuScript item or a
( \' p: k2 A9 z**     User Defined Object for example), this function MUST return8 B  X; S. g' k: \- N
**     "UF_UNLOAD_UG_TERMINATE". */! L- \4 |3 x. }
extern int ufusr_ask_unload( void )
" e" W% [+ |3 F{
# a6 y7 I: ]: \/ L: _8 K: h, Y    return( UF_UNLOAD_IMMEDIATELY );
' F4 w0 D3 R8 S: L; d. d/ U}( M6 `7 o7 `4 W3 S% T& V. s
' ?* B, Q0 E+ V: {5 p7 F
8 S) e- g9 w+ ~* Q
我把圆柱的方向设成【1,1,1】,成功了& L5 m( f* z+ W+ ?; p0 w7 C

# B% C, ~6 M  _  z( F: {2 a2 l% a4 C
无标题.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二次开发专题模块培训报名开始啦

    我知道了