查看: 3451|回复: 1

[交作业] lesson3_CreateBlock

[复制链接]

4

主题

4

回帖

83

积分

培训VIP会员

积分
83
发表于 2015-4-21 21:23:10 | 显示全部楼层 |阅读模式

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

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

×
/* Include files */8 P9 J" X  J4 P/ s
#include <stdio.h>. Q& v' o! w+ o4 C" |# l2 v& P
#include <uf.h>
/ Z% W) g7 `: j& w; f$ R#include <uf_ui.h>1 i/ F  y5 T: ^9 M+ J) U! ?- s: U# r4 {, j
#include <uf_part.h>: r0 q) ^! P1 C/ I' D, o& O
#include <uf_modl.h>, @3 }" `% [/ ^7 T3 E* f
#include <uf_obj.h>
9 T0 J, Q/ }) n, E6 L) m; B#include <uf_disp.h>
1 W& F$ d9 V8 X  y0 o0 r; |#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
  s/ X  n% b$ |( B! [; m2 u& xstatic int report_error( char *file, int line, char *call, int irc)4 w, w! C3 o8 Q
{1 i' @. Z7 K. S. [
    if (irc)
! f$ v% f' a8 d# G  ^8 A. L0 j  O    {+ K8 h" e7 p( J( x9 e0 j5 w
        char err[133],8 G/ \& q. }9 x- Z! \8 j: r9 W* v
             msg[133];0 v6 f2 D$ F, u, \! C$ o! G
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
( m! P  ^1 o( a            irc, line, file);
* j) h9 N. V' Y5 \6 A: ~: C# c        UF_get_fail_message(irc, err);! T9 L$ c% b! c8 A5 l
        UF_print_syslog(msg, FALSE);
) `. x4 t* x& p; l  V9 l        UF_print_syslog(err, FALSE);
/ S; U! [/ t4 W* x        UF_print_syslog("\n", FALSE);
3 r+ J3 G" S8 w        UF_print_syslog(call, FALSE);
: y' N5 n9 A# [2 }. [9 r$ D        UF_print_syslog(";\n", FALSE);
/ v7 k; H. F; l0 D( G        if (!UF_UI_open_listing_window())4 D. q! b/ T$ I, q
        {
6 f5 V1 g% w) i+ v9 Q, D! i1 J' d- G            UF_UI_write_listing_window(msg);0 u/ |. Y; _; [7 F/ i& s' [" I- V( T
            UF_UI_write_listing_window(err);
; U% V! M. D3 w) ~            UF_UI_write_listing_window("\n");$ P5 C8 B2 ~; Q
            UF_UI_write_listing_window(call);
' f1 g) @  q  q  T# i            UF_UI_write_listing_window(";\n");
) ^- U! Y/ s$ V7 E: W        }
6 R9 t8 B& z$ e' V6 v( ~    }8 C/ w) d; @7 e3 I) h# ?8 W  W
    return(irc);) T9 F4 N( _- ^
}  E0 K- v  m! H! H
' E- _$ B( `5 _4 x3 ^/ y) }3 I3 T
/*****************************************************************************) n. K) @& b3 q$ |
**  Activation Methods
9 F8 I) c+ U7 T) |6 t*****************************************************************************/$ a; r/ w! E% r* S$ S
/*  Explicit Activation6 ^+ U* ]2 g% N+ V9 m& t& d
**      This entry point is used to activate the application explicitly, as in3 V+ H, N; e" I5 h, i& C  P
**      "File->Execute UG/Open->User Function..." */  ]; b. _. n8 I7 Y1 f5 e7 h9 B+ _5 ~
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )( {' s  @* ~" F9 d+ Q' L) u  z
{4 h0 G) x5 s' o0 T7 u- g6 _
    /* Initialize the API environment */. p2 r& G3 c0 B3 S  a6 r0 R
tag_t partTag = NULL_TAG;
) z% I. m# u) j$ t double coner[3] = {0,0,0};
! t" p. @& y% D* ?! n1 X) j+ l char *edges[3] = {"length=100","width=40","height=50"};8 }) G* l* ]% H( T3 I  r
tag_t blockTag = NULL_TAG;
  X9 Q3 _  M' A2 S7 n1 v const char * radius ="10"; 1 ?& u/ w2 F  a; J4 Z
int smooth_overflow = 0;
" ]  `5 [* c2 o$ B0 l int cliff_overflow = 0;
2 @5 r" J9 X/ Q- F3 A; M int noTCh_overflow = 0;: s4 p& H0 r* R/ W4 M: g  ?0 \
double vrb_tool = 0.01;) P; }3 \8 c2 l3 d" `/ V* d1 R
tag_t blendfeatureTag =NULL_TAG;$ s% G' e; C3 t! z
uf_list_p_t vertical_edges_list;+ h% S) t( }$ }$ V% i# ~
uf_list_p_t edgeslist;6 ?0 i' Y2 ~1 }/ z. J$ v/ A3 \
tag_t blockbodyTag;
  o0 M/ v* R8 r! a& c0 A4 p double firstpoint[3],endpoint[3];( r, |# s: V  I0 q/ q* f
int vertixCount;
& B2 W. e( M, N, F0 J tag_t edge; # G* r7 ^* R8 c: W2 n1 R
int edgesCount;4 u# h+ s; D$ h* g1 U) D$ b
int i;
6 ?8 @4 B( v4 Z' f- ^ char mymsg[256];
/ s/ n7 k4 z: [1 h int vertical_edges_Count;
0 V1 g, r2 ~; D, D5 m UF_ATTR_value_t myattrvalue;5 l/ v+ ^( x) x

: i' U4 `- M/ `- G0 |    if( UF_CALL(UF_initialize()) )
( @$ y4 T7 y/ t5 U    {1 [- S$ D! N0 r+ F8 s  o; }3 y
        /* Failed to initialize */
$ X  ~5 Y1 M; n! M2 e0 `' d        return;1 [8 E% k4 t/ A* N- p2 Y0 n; t
    }5 q, @7 u9 }: _! o/ t  U% ]
   
4 l" @1 r2 A2 ?. O    /* TODO: Add your application code here */% A6 S4 Q) ?7 B2 ?8 E' H
UF_UI_open_listing_window();
. T7 l* U; V8 C( P //new part
8 L  G2 V& i1 ^ UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));, }7 S* o5 M* ^! w3 w
//new block
6 Y- [( Q, a; _  Y/ } UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag5 s5 q0 s' `( M% l4 l# O1 H+ v' D
//create vertical list/ F8 R/ q5 V5 R- f, E
UF_MODL_create_list(&vertical_edges_list);//create list
! ]9 n2 h! P" L0 C //feature -> body -> edge -> vertical edge# d( W# o8 t" U& `8 }1 o
// 1 feature -> body, `4 r/ P2 J9 m* m: k. Z
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
& s0 z* u7 o' G. F* b8 T //2 body -> edge3 C) E% x: q( s& M: ?/ _
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
- f" e1 P) E6 c2 k! d7 f //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
  x2 t" S# K( y# G9 w UF_MODL_ask_list_count(edgeslist,&edgesCount);
  O0 X- D; m: E- N sprintf(mymsg,"edge count:%d\n",edgesCount);
# _, G2 l! Y: L  M) z* @ UF_UI_write_listing_window(mymsg);
+ p( w1 z7 o) ]% V: q. ? //edge -> vertical edge
2 ]; \) h' l3 t' e, m  z" A for (i = 0; i < edgesCount; i++)
2 z7 M. w3 g$ R8 ?. N {9 I! b0 s) E  I; ~% P9 }* U' Y* u
  UF_MODL_ask_list_item(edgeslist,i,&edge);
, j8 ^+ L7 a' z# V" d3 o  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
* I: \5 d5 D1 q% A$ \/ e3 Z  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))- a7 C! Q: g3 U7 H! N4 ?& [
  {: ~* G5 o' m$ ]. q
   UF_MODL_put_list_item(vertical_edges_list,edge);' h& v4 F/ L4 a: m( }
   //add arrtibute
' n5 @4 X& w/ s8 \0 C/ c   myattrvalue.type = UF_ATTR_real;
! n8 m; N) c! C) O# L( l   myattrvalue.value.real = 10;( @$ |' _' {" l$ U3 B' b) h% w0 Y
   UF_ATTR_assign(edge,"blendradius",myattrvalue);
5 i8 I5 ^/ L( c& J* k  }
( k- O- B9 |# O+ p3 m }8 P* g; N6 g; U3 f5 J
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);8 C4 P5 ]7 z8 c
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
+ j# Z# E( ]2 w' ?' q& x( K7 H1 B UF_UI_write_listing_window(mymsg);4 U% {2 r  C- B0 M' D# e- b/ u% X# T
$ T/ a7 C9 W5 h  J
//create blend(倒圆角): N$ N5 T: x) C1 ~  \4 g
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
; U8 F5 E, K* f7 h0 e0 | UF_MODL_delete_list(&vertical_edges_list);, y' `1 i/ f6 p$ }- A1 C9 f* Y& l
//change body color、translucency
2 C6 ], J" p9 v1 j UF_OBJ_set_color(blockbodyTag,21);//186红;21白5 q+ {% q: T" O0 N: M6 c  p' I
UF_OBJ_set_translucency(blockbodyTag,50);
5 N0 {) Y1 ~' {$ ?    /* Terminate the API environment */9 p# o' s1 w. U# K# g4 C9 j- T* r
    UF_CALL(UF_terminate());
( }) a8 }* U1 w& r1 J3 ~+ ?}  S' Y* \( x/ Q& u& f: j
/*****************************************************************************6 x8 F. [% S% w  T
**  Utilities* L& H1 s# j' z) K7 v
*****************************************************************************/
, i. @5 \- i9 b' ]* P+ B7 u, L  u/* Unload Handler
2 O4 G% p7 \7 B! e" p5 B**     This function specifies when to unload your application from Unigraphics.
. m8 J* L) l* m7 R9 E/ {1 q; |% V**     If your application registers a callback (from a MenuScript item or a# T3 n+ g8 k% x. P: V+ Z
**     User Defined Object for example), this function MUST return" `( a# U$ q$ h) n2 k7 A" E
**     "UF_UNLOAD_UG_TERMINATE". */# w* Z) a" }: {* p: q
extern int ufusr_ask_unload( void )' b* [) i* W) g" |& z5 U" Y7 A
{
9 j2 L& d7 z; ]% V. g    return( UF_UNLOAD_IMMEDIATELY );; `. H) L% x' s1 U9 j) q8 O' `0 x4 [, x
}* M- @( m$ T1 @6 Z. ?

- @' G# p2 Q' V: H1 V
无标题.png

评分

参与人数 1PLM币 +5 收起 理由
admin + 5

查看全部评分

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

使用道具 举报

4

主题

3

回帖

38

积分

管理员

积分
38
发表于 2015-4-22 11:09:58 | 显示全部楼层
你做的很好!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部