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

[交作业] lesson3_CreateBlock

[复制链接]

2015-4-22 11:09:58 3320 1

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */: C& @4 ]8 e* b# G' C1 w
#include <stdio.h>
! n* L3 P1 ~1 X6 N#include <uf.h>+ I/ O$ J9 Y( _4 J; |" e  I
#include <uf_ui.h>
0 K' C6 R* a$ q#include <uf_part.h>
. T6 M, p% I; H0 }9 E% A#include <uf_modl.h>
) t1 M( \& X( Y5 u* P" e- q#include <uf_obj.h>
+ i2 n! p: p9 L" D$ [' O; Q#include <uf_disp.h>, @" o+ f. F: S* C) S
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
# w0 [4 P0 a6 a  cstatic int report_error( char *file, int line, char *call, int irc)( [# x2 c& ~! Q8 d; q6 S
{8 I7 \* W- ~) H; N* c  u6 {: r
    if (irc)
* F9 j+ i) U; J- i5 C    {  E4 S& N) Z! G! Y" a
        char err[133],' ]) V3 U7 r0 B/ ?% J0 m' P
             msg[133];
; F) u8 @! ]$ e$ E/ Y, u        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",# u' m1 r% ?  h+ y$ [
            irc, line, file);
7 r6 ?3 S2 w& F+ I  Q0 W. Z        UF_get_fail_message(irc, err);
! q7 D- E7 A+ I% B: B        UF_print_syslog(msg, FALSE);) M, \6 h! \( [; K
        UF_print_syslog(err, FALSE);
- H+ m. a( t+ F4 ^- p. B5 X        UF_print_syslog("\n", FALSE);6 C' ^1 m; M1 U7 i/ F+ k
        UF_print_syslog(call, FALSE);  E9 x. {1 `+ P
        UF_print_syslog(";\n", FALSE);
$ X; R6 r5 J+ ~0 c0 U7 X1 y        if (!UF_UI_open_listing_window())/ p  i4 d) r2 w! g& c  _* I
        {! G% D; ~6 `" |0 {5 h# A& u" k! D
            UF_UI_write_listing_window(msg);
( ^- z8 t* E3 w# }  _, A            UF_UI_write_listing_window(err);
2 n' ~8 d! B# ~: q/ q" J            UF_UI_write_listing_window("\n");' u7 w* w: \8 U/ ^
            UF_UI_write_listing_window(call);
  a& b- I6 s# b) ^% n+ O% T5 E            UF_UI_write_listing_window(";\n");, m( `1 V& e  \7 O1 T
        }
" b% U( a4 X: _- y    }) d. n- ]: k0 |+ L
    return(irc);
: ?5 C2 k0 L1 r( L% z+ b}9 t' a$ f, M$ w- u

6 m5 o  J$ E3 l, O  ^8 p; e/*****************************************************************************' w% G( W  S; x
**  Activation Methods; e, Q$ C8 g( y3 c4 r* m
*****************************************************************************/  [- a% e3 V# q. x) E+ a2 @
/*  Explicit Activation
; |1 L% a% A% f, k0 K- V' @6 y**      This entry point is used to activate the application explicitly, as in
: o$ B" U& }: M  b, n**      "File->Execute UG/Open->User Function..." */
) `1 S7 K, K" textern DllExport void ufusr( char *parm, int *returnCode, int rlen )+ L' j  H/ V( c: I: }, E: K
{
+ v. s0 a& i' p: m( i    /* Initialize the API environment */- Q3 r2 a- [, [% U
tag_t partTag = NULL_TAG;
5 e& H& Y5 V: m1 P/ o  S; q double coner[3] = {0,0,0};
+ L9 a7 C$ K" e7 Q6 G' y  W  n" e char *edges[3] = {"length=100","width=40","height=50"};, E8 Q; d  V' J3 _& ~4 Y
tag_t blockTag = NULL_TAG;
+ J2 ?% a! Z: f const char * radius ="10"; : M6 w8 m6 j% G  n. F# ]
int smooth_overflow = 0;
3 \9 A1 A% G* v/ h int cliff_overflow = 0;+ `# s6 \0 I6 Z0 @; {
int noTCh_overflow = 0;( w: \  [! N# C6 E* u
double vrb_tool = 0.01;) N+ c9 S5 P) L! O0 r
tag_t blendfeatureTag =NULL_TAG;+ I, b/ ^' `2 N% I
uf_list_p_t vertical_edges_list;
9 L4 \* f' b% Q! ?5 O uf_list_p_t edgeslist;) S$ d5 [& D4 ^; _
tag_t blockbodyTag;
% z) j" S2 K9 O. \- s double firstpoint[3],endpoint[3];' q6 v& g  u; A2 S8 h7 U+ q
int vertixCount;( ^  _' h* i7 }5 m( B
tag_t edge; 4 u" d% u9 e" @. j! a
int edgesCount;2 ]( ?" K) A1 f; @9 r
int i;2 `. d6 R/ Y; Z/ J( E1 R% \" h" g9 J
char mymsg[256];
! {! G9 `7 M. O9 M) K3 ] int vertical_edges_Count;
% J- K7 W5 _; n; g/ w! t, F UF_ATTR_value_t myattrvalue;
- p+ |; k8 l5 j/ z' g8 A- Y1 F% H& x* L' }% g" l
    if( UF_CALL(UF_initialize()) ) ! B( b$ ]# a. M6 A
    {, D/ `- Y4 ^; x: u
        /* Failed to initialize */# P, l; u3 f. y& L3 q, `! u
        return;
) M: ^# P6 J; X( R    }
) W' p. K+ H8 m: s5 |$ V4 g   
( L9 w4 D( t0 S( R    /* TODO: Add your application code here */0 `: Q5 ~' y( X0 c
UF_UI_open_listing_window();6 Z' _5 S" X% i5 m
//new part
+ {/ Z4 A- M! x UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
, D3 ^1 m2 O: p' ^! e5 G9 j$ J; i1 A8 S //new block
* J- k; w) k. m5 W* e5 q UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
$ `) t" p7 C, j$ i //create vertical list
/ o- n) @; z3 \1 d" M UF_MODL_create_list(&vertical_edges_list);//create list, G1 d$ D; O( u" P- j/ |7 g
//feature -> body -> edge -> vertical edge  g1 s5 t  u$ O; K' @5 c
// 1 feature -> body
8 `! D# a% n5 R UF_MODL_ask_feat_body(blockTag,&blockbodyTag);" _2 Q# ~! Z5 l8 y( I
//2 body -> edge1 B% Y% y# s/ s* Q* J! A3 f
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);6 ~0 W) `& @# K6 f( g  y6 d
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
: @: q/ t7 ^. F# E: l UF_MODL_ask_list_count(edgeslist,&edgesCount);# B- B% Y# A0 T
sprintf(mymsg,"edge count:%d\n",edgesCount);' {9 j  Q; J7 E5 F1 i1 ^% I- B
UF_UI_write_listing_window(mymsg);/ r( Z/ g. G' K
//edge -> vertical edge9 ~( I( u% J7 m' F) u9 @" ?
for (i = 0; i < edgesCount; i++)) a7 }+ r! e# D" ]/ A
{/ Z! P4 I5 O) B; Z2 }# B
  UF_MODL_ask_list_item(edgeslist,i,&edge);: J( O2 S2 @- ]( V6 \0 E3 A& ~
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);0 j5 N' m. V0 G- u1 t3 ]
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
$ O  b& w0 o, Q1 d  {6 X' t. _( _1 v$ c6 [: k4 p
   UF_MODL_put_list_item(vertical_edges_list,edge);- b$ N# ]! k+ j" n
   //add arrtibute
4 g( _- ~8 m6 T5 F" {8 o; o8 N   myattrvalue.type = UF_ATTR_real;
$ v" d  J0 {8 B  e, R" h: s   myattrvalue.value.real = 10;
) O+ `# k" `# I   UF_ATTR_assign(edge,"blendradius",myattrvalue);5 h& G: S4 s6 ]1 i/ y2 d
  }( N+ O2 z4 Y- G, S
}# X- q! [# \& e
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
% F0 D/ q2 \$ w% S- n sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
9 I; d! W' e& P* h# x# X UF_UI_write_listing_window(mymsg);! Q9 }7 F  `7 l9 S, E

2 a3 @  _8 ?+ I+ u; P- [ //create blend(倒圆角)3 J; Z& Q9 g9 j* C2 u% r
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
% |! _. r2 y7 ]* A, E UF_MODL_delete_list(&vertical_edges_list);
! B9 P* y9 _* p: _) X //change body color、translucency
4 \3 b* s( e; m& _1 {$ u0 t& o UF_OBJ_set_color(blockbodyTag,21);//186红;21白/ L( T, @5 b5 G0 i8 d- Q* b
UF_OBJ_set_translucency(blockbodyTag,50);1 o, p) x" |+ l6 [& F* j6 y8 n  W
    /* Terminate the API environment */& }- M6 x* H! I' B7 ]
    UF_CALL(UF_terminate());
2 }- a: O- I, L5 r}6 `( o5 x5 Z% p8 g9 P
/*****************************************************************************( e8 o1 G# `9 Y- q* _0 i. H# m
**  Utilities/ P" z5 d4 L1 r/ @
*****************************************************************************/# [. f! v- h4 e, t/ N) w
/* Unload Handler
, F$ h- ^5 ]$ D. Y9 o% d0 u0 J& r**     This function specifies when to unload your application from Unigraphics.) C" o7 O. M# Q% C( O" H; M
**     If your application registers a callback (from a MenuScript item or a
& f+ s# J1 k, u8 X* C**     User Defined Object for example), this function MUST return6 P" o8 s- T& h
**     "UF_UNLOAD_UG_TERMINATE". */: F% o- T0 x* q6 U3 O  [" z
extern int ufusr_ask_unload( void )  @; \' l1 R6 M. J) o
{
. |/ u+ D5 d; {% K# V$ I* Y    return( UF_UNLOAD_IMMEDIATELY );; x$ T) N( \5 X: g
}
7 h, J2 M1 F- C. E4 I" b
1 @. z. F4 Y) V# B
无标题.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
回复

使用道具 举报

全部回复1

admin 发表于 2015-4-22 11:09:58

admin 沙发

2015-4-22 11:09:58

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

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了