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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
! ?/ S, H5 x/ p' o#include <stdio.h>
4 R# q/ M% U4 z( s- Y#include <uf.h>
7 @' ]! t$ \, [. n' W#include <uf_ui.h>$ @" t) y1 ~. F, Y
#include <uf_part.h>( I0 f7 _& K. M( h8 w$ j
#include <uf_modl.h>
4 W( C7 t& ^$ k# \  E#include <uf_obj.h>; `8 l- ^4 O0 @2 W' t
#include <uf_disp.h>+ Q; r- B% V. J0 v) l3 r& N
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))4 D4 ^( u, Y4 R4 V1 O# l! O* S
static int report_error( char *file, int line, char *call, int irc)
1 g8 I6 Z. S5 |* D& v# E{
  `4 m' Z4 T: v$ T    if (irc)
1 |2 a; {8 t0 c3 x# d, J    {
$ x; d" I, I' m" `' Y        char err[133],, @1 q  a8 c) ]+ ~
             msg[133];
- \& M( M$ h* Z, K' c: \" p1 r        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",: z  l2 |  ^% o9 f: g) S
            irc, line, file);
4 V" k. j6 L; Z; D& J$ y/ {4 L. K        UF_get_fail_message(irc, err);6 y% I# d; ~: [; B4 Z; u
        UF_print_syslog(msg, FALSE);  p7 _; f( u3 p+ f$ x4 V4 e
        UF_print_syslog(err, FALSE);  p# X2 `, ^# J3 U
        UF_print_syslog("\n", FALSE);# S5 V, j8 b; X( b- a' G: l8 N
        UF_print_syslog(call, FALSE);
5 R" s8 K9 x/ M4 G7 @: w        UF_print_syslog(";\n", FALSE);
2 N1 O8 V5 @4 I6 M        if (!UF_UI_open_listing_window())& l- Z. G: D+ M  O
        {
" C, a) s1 t8 S+ P* }3 u$ Q            UF_UI_write_listing_window(msg);
) y; P8 c! d, J6 R& G  x3 R            UF_UI_write_listing_window(err);
0 s$ E% x) T3 t0 K1 Y! g4 @9 I            UF_UI_write_listing_window("\n");
: ~3 U9 h/ g, O9 `) V* c            UF_UI_write_listing_window(call);
5 s7 L$ D% t- X: X9 @3 ^            UF_UI_write_listing_window(";\n");$ ]* t1 {# Z: R5 d/ ~) \
        }( [6 t. F: ?9 J/ E
    }7 o$ U5 U. u1 U: f- M3 n
    return(irc);
: B+ h: D0 o5 b9 b- Q}
# U/ q. b2 @+ X0 ?) e- x) O: c% f& g4 u* d* l8 ?8 b/ ]
/*****************************************************************************
0 ~/ T6 H, F+ `5 g$ D# p0 C**  Activation Methods" I3 D8 V: Z0 `6 E, C) a
*****************************************************************************/
# [9 I- Y) l: H* Q/*  Explicit Activation
2 B3 }: M7 ^5 S9 r" B# y3 Y3 J**      This entry point is used to activate the application explicitly, as in
4 J7 c" p2 S. j$ E0 N$ h: s**      "File->Execute UG/Open->User Function..." */" y; S+ ?. d% i  \
extern DllExport void ufusr( char *parm, int *returnCode, int rlen ); [  f, l- Y1 ]" I# i  z# u
{  c' Z! h' a/ d& z  U* n+ O- b
    /* Initialize the API environment */! B2 h: q4 K0 ]! Z! s
tag_t partTag = NULL_TAG;
+ m3 S  y8 ?' M, [1 o double coner[3] = {0,0,0};
( P, q  V2 w" I; ~+ f char *edges[3] = {"length=100","width=40","height=50"};/ i# h* E9 |; A/ [" B8 l) Y
tag_t blockTag = NULL_TAG;
4 |1 _' m! n  h% R- M const char * radius ="10";
( n3 e/ v  W3 b; Y- V$ u; \0 D int smooth_overflow = 0; % ^4 r% t6 Q  y, e) x3 P
int cliff_overflow = 0;
0 ^, t4 y& i/ W5 X. K int noTCh_overflow = 0;" Y; ]3 H* S1 b* \+ W$ T
double vrb_tool = 0.01;
6 Z4 S: c: E/ I* [; e+ l tag_t blendfeatureTag =NULL_TAG;$ x1 A# c# s4 w3 m( \* H" h- P6 A) y
uf_list_p_t vertical_edges_list;
! F6 }- n9 Q' J# g! Y uf_list_p_t edgeslist;' [) k6 B, r8 G
tag_t blockbodyTag;
4 F3 w" m1 x+ q2 {+ M double firstpoint[3],endpoint[3];
6 h' Z+ K! ~0 Y/ c( T0 T int vertixCount;
/ m8 C" D" ^! Q& }  k; h tag_t edge; 3 [$ Y6 j4 V9 V2 D4 d
int edgesCount;* u/ C/ V+ K, o. Q
int i;
: }: G+ C3 k# n: ?& H char mymsg[256];
- R' {/ a5 A2 ] int vertical_edges_Count;
  u, Y9 X, ?: S' h) W1 b UF_ATTR_value_t myattrvalue;
1 `. d5 J* W+ B5 ^* _2 M9 [' w. I( S* P3 }  W( i
    if( UF_CALL(UF_initialize()) ) ! L3 G3 P) N& t( F* ]
    {
( J3 ?# K0 }3 Z. \- p. g        /* Failed to initialize */+ L; _( p( g% H8 `5 a; i6 U
        return;4 a( Y; e9 G8 F1 q$ s4 q
    }
5 n4 S9 H# _1 o/ r) }   
$ E) x2 E/ T) |( q$ U2 B5 i    /* TODO: Add your application code here */2 o+ B. l' P5 V# u7 x. w$ y0 D& V
UF_UI_open_listing_window();6 V4 Z  H/ m) E$ W/ _& J
//new part
! Y* P, N% {, T6 |4 V UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
% I( f; }8 R. g+ J! V //new block
) D/ I/ W6 r. M2 o! ?  K UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag; y7 x$ c) T, {1 g: q; k
//create vertical list
/ H+ O# P$ ]- G2 n, E UF_MODL_create_list(&vertical_edges_list);//create list. s1 g4 y" }; {1 q
//feature -> body -> edge -> vertical edge
& ~4 Y: k5 l3 S. |2 U% I // 1 feature -> body
9 f' n5 F% h& W- o# v UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
/ e) ]1 p: p$ { //2 body -> edge
' x9 _/ P% T7 f  m7 W4 w% e6 R" k UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);$ O: e, X; `# K+ Y. j9 C; K6 f
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的3 V2 q1 ^5 @- J8 {; E: ~" |
UF_MODL_ask_list_count(edgeslist,&edgesCount);+ y1 s; P% C  @* ~. ^/ o) u0 W- i
sprintf(mymsg,"edge count:%d\n",edgesCount);
& P" O4 @& x( y- }1 X UF_UI_write_listing_window(mymsg);" U8 E# `, f' G& V9 [- _
//edge -> vertical edge& a- ~* M) d: Y2 |. z( ?  C
for (i = 0; i < edgesCount; i++)
! L) u0 e! q% ]7 P, l0 z- j {
; ]3 C* [8 x3 {! I  I+ W! u  UF_MODL_ask_list_item(edgeslist,i,&edge);
! g' T( s1 P9 D, w* r/ x8 l. t  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
/ u4 {0 d& U& e/ S  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
: P0 A# t. H/ X, w/ z% ]/ \  {
# X4 ^8 W- D0 g4 l2 n   UF_MODL_put_list_item(vertical_edges_list,edge);. R. L" t) @: S  f. O2 O
   //add arrtibute6 c7 `3 G9 X5 N# o
   myattrvalue.type = UF_ATTR_real;
7 C  k! Y! \  H+ d. A, w( n   myattrvalue.value.real = 10;
) P+ h  O7 ~$ Q   UF_ATTR_assign(edge,"blendradius",myattrvalue);
/ D4 ?8 Z* R  W. c  }
( V5 k& V9 R3 k# Z9 C }
6 }4 H! D* |) _7 N  z. V0 Y UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
# E0 a/ X( R- u9 g) Z sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
2 y/ m3 o; N, K  ?& ]3 n UF_UI_write_listing_window(mymsg);
9 {$ r( D" b' V 5 K% x4 O, H# y/ d  o
//create blend(倒圆角)9 ?9 h+ i' ?$ I, W0 i
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));5 a9 G- T+ \! d$ N* F
UF_MODL_delete_list(&vertical_edges_list);
& x  V8 L7 ?5 Q& p9 y8 s4 X) C //change body color、translucency' h2 ?* ^9 l3 b; J1 y4 c4 S
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
1 n# t: v( ^3 h* u! L/ _) P5 T$ j UF_OBJ_set_translucency(blockbodyTag,50);1 C( f- ?. z& T/ p; h2 i
    /* Terminate the API environment */
. x& Z  ^+ o& |! o$ g% S2 p1 m    UF_CALL(UF_terminate());
4 D4 b, T7 l' V. e5 V6 P}
' \  {0 V$ x5 A  P& K+ X- S/*****************************************************************************
; I* {5 ~3 `0 [/ l9 Z**  Utilities& o  P8 X; V/ [$ H" F
*****************************************************************************/
. b- X# j7 B. A4 F/* Unload Handler" m: E, m' P4 l2 j' L
**     This function specifies when to unload your application from Unigraphics.4 [1 P2 o# a- V2 Y$ {; V" S$ |
**     If your application registers a callback (from a MenuScript item or a  q# x! d3 w4 ?7 l' i9 C: d% [
**     User Defined Object for example), this function MUST return3 O( b; C# m$ _* u4 y) F$ \5 X( g* l
**     "UF_UNLOAD_UG_TERMINATE". */: e1 Q5 `! R: w0 b8 N1 m
extern int ufusr_ask_unload( void )1 t& _4 ^7 g$ m7 i! Y' D" h% w# Y
{4 o# _- j/ n6 F& j
    return( UF_UNLOAD_IMMEDIATELY );. Y/ ]* a, X. C+ f
}
/ q: e5 f3 V3 _$ K
3 t0 S6 b5 t" Q1 Z9 W  N$ G
无标题.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二次开发专题模块培训报名开始啦

    我知道了