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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
3 a5 n% x2 j1 y#include <stdio.h>
' |. a8 C& G5 V0 Y. Z#include <uf.h>2 g/ `5 P5 I8 i# D
#include <uf_ui.h>
" K! s/ O9 i5 T# q$ }" O#include <uf_part.h>
, U: C* @% K. j' h' G( N3 u#include <uf_modl.h>9 \) L( d- A7 x% u! v$ r
#include <uf_obj.h>
  w/ Y+ `' M  ~- Z9 B#include <uf_disp.h>
1 j2 }1 t4 I" H#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
& r1 _* r0 B1 Y" Hstatic int report_error( char *file, int line, char *call, int irc)1 K& ^/ m. d+ F
{6 h( B! Y+ g" m0 I1 K  X& H
    if (irc)
0 [3 c% U- y+ P- u) q4 N" B    {
- c3 k9 @" @5 A0 n& `        char err[133],. c2 {) }1 [" M  V. d; @3 y$ v
             msg[133];
/ ], I' f4 S+ t( }% S9 K        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
4 L4 @  A2 w5 H! n7 Y* B            irc, line, file);5 N# [+ H9 ?$ B1 o9 x/ D9 \  }
        UF_get_fail_message(irc, err);
* [* Q- f% w  _% e8 g+ x        UF_print_syslog(msg, FALSE);
* M9 N: A, P4 x# h! d9 ?; m7 s- D; V        UF_print_syslog(err, FALSE);9 w" O7 L0 {/ j* j* v) A) z
        UF_print_syslog("\n", FALSE);" j) B& U1 E  i
        UF_print_syslog(call, FALSE);' w& E9 R3 _6 W
        UF_print_syslog(";\n", FALSE);
  ]- {5 U3 P/ s7 I0 s+ d9 q( w* Q        if (!UF_UI_open_listing_window())& y7 Y: f) D+ Y! t9 y
        {; q! M+ H: j/ P; L$ F  u& D
            UF_UI_write_listing_window(msg);3 T! _+ J7 d7 o* ~5 q2 g, d" Z4 A
            UF_UI_write_listing_window(err);
5 z- Z) ~. d) r& L/ h- O& ^( ]) o            UF_UI_write_listing_window("\n");& F% U) r( y+ c* h
            UF_UI_write_listing_window(call);9 L0 `0 y( E- X6 R/ S% ~& m8 H
            UF_UI_write_listing_window(";\n");) F/ m( ?9 k3 _7 _; h2 b
        }
) \/ d9 @$ O) e8 q    }' {; }5 x7 R5 s% G7 {
    return(irc);8 \% l! b1 S8 p) |' S- ?/ ?
}! L# P2 j+ C3 |

( U% e7 r3 T# d1 W! ~/ l# H/*****************************************************************************, l4 M( T1 k2 n7 \3 Z
**  Activation Methods
+ H) f' E1 e2 z% D2 ?& y*****************************************************************************/
% o/ c! q- ?: a( [5 {1 B2 W2 B/*  Explicit Activation7 @; J9 F4 v( b2 s! R
**      This entry point is used to activate the application explicitly, as in; s3 ^: v7 \4 c- k
**      "File->Execute UG/Open->User Function..." */
  d8 l/ {* n) J7 k+ E. ~6 Zextern DllExport void ufusr( char *parm, int *returnCode, int rlen )( X3 c4 s7 j6 |2 m% x
{
6 R; U2 ?: {3 K5 z) L( j( P: W    /* Initialize the API environment */7 O9 ?4 C. |7 A2 i
tag_t partTag = NULL_TAG;) i- g; Q# |$ h
double coner[3] = {0,0,0};% V4 b' V' Y- m9 h4 r5 b: l) s7 O
char *edges[3] = {"length=100","width=40","height=50"};& O( |3 E% W; x- E
tag_t blockTag = NULL_TAG;) \- O7 K5 }% v3 n- Z# O
const char * radius ="10"; " s4 h. G7 x4 `' k: E1 `
int smooth_overflow = 0;
) t" w5 E9 E9 i$ Q* \- e int cliff_overflow = 0;# l+ {+ \! y, o* K1 f5 `: i$ B7 K
int noTCh_overflow = 0;1 F8 I3 m8 ?" h1 T
double vrb_tool = 0.01;
3 J6 u8 x/ e4 j3 n& `- ?' j. A+ [" A+ E tag_t blendfeatureTag =NULL_TAG;: d6 g6 Q5 n9 D$ Q( J
uf_list_p_t vertical_edges_list;
* ]5 F0 @; D6 x! Q' A  N uf_list_p_t edgeslist;
+ s. h7 b! x8 _; O% Z# @' K4 q tag_t blockbodyTag;
7 b" Y1 n( a' l( |  ~$ c4 n double firstpoint[3],endpoint[3];0 l2 r. L# _' q. ^  D4 C
int vertixCount;
) J" x4 I6 w: @0 m8 Y5 o& G6 B1 _* S. g tag_t edge; , B$ o$ u  x9 ^& I
int edgesCount;
- [6 l2 I  \# h4 @# X int i;/ L# l' [; ?1 C( \
char mymsg[256];
- s" v' z1 m1 `3 w# X- f int vertical_edges_Count;) l+ Q4 w& U. A5 u* p( x( q6 ]
UF_ATTR_value_t myattrvalue;
# s+ ?7 ^/ b2 m  C8 V
1 h/ V1 ~8 @" m% P5 |5 K    if( UF_CALL(UF_initialize()) )
' {0 t& `6 z1 x0 ~$ L    {
1 c9 c8 q0 p  |" E5 E" T        /* Failed to initialize */0 m9 Q5 Y, c7 Y0 F
        return;
9 r, x+ x2 c$ f    }+ C- Q- o+ m6 N6 R8 K- v1 \4 @3 x
   
; d0 ~$ ~  S7 S; `) w    /* TODO: Add your application code here */4 V3 Y& r" d& I0 A
UF_UI_open_listing_window();
1 a! X" h' o: t2 x0 u //new part2 k; u% M, u0 `9 z, B. T4 f: K& b. _
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
5 c9 [- v5 C% ?% b0 O' ? //new block
8 H' S+ Q' [4 K UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag1 _: Y' ^! s# [2 [5 [7 z. B
//create vertical list2 v$ t5 ?7 j. [9 r* E1 J% A
UF_MODL_create_list(&vertical_edges_list);//create list
, d& ]% f$ L3 `0 u: e* D  q. I //feature -> body -> edge -> vertical edge, R8 g& ~/ Q0 s  h
// 1 feature -> body! T/ a1 l- k7 I
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);' ?" p7 Y+ l7 ~* s4 m' ^
//2 body -> edge
/ l" h0 n% B& J% ]6 { UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);2 N! P+ N, `) V$ D& [
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
" ]3 h' B& X5 @1 T1 c$ v UF_MODL_ask_list_count(edgeslist,&edgesCount);
! o9 u. \  u9 G2 B( I8 R- m" Z. H sprintf(mymsg,"edge count:%d\n",edgesCount);7 [7 M1 e$ f3 k1 F5 a
UF_UI_write_listing_window(mymsg);
7 {$ }5 l* E; W //edge -> vertical edge
2 P7 Y# R, i. q, [0 P for (i = 0; i < edgesCount; i++)
" n$ e5 n+ q1 \# n! d {2 U7 g5 Z) r7 J$ a- B. B2 I
  UF_MODL_ask_list_item(edgeslist,i,&edge);. |  f2 l* d/ y& d! p+ r- d. N
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
) a: J. M7 P6 @" H8 A6 b0 a# n  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))5 A& R% V3 j% u  M( ?
  {* h4 l5 G6 C7 X  c: x
   UF_MODL_put_list_item(vertical_edges_list,edge);
* C  T$ K! D$ s3 q5 M8 {   //add arrtibute
1 X; r/ Z' _3 J7 o; v. p   myattrvalue.type = UF_ATTR_real;
7 ]% N. Y  \- v$ V0 K! J' W   myattrvalue.value.real = 10;! z% Q5 F: z; k5 ]+ P! c
   UF_ATTR_assign(edge,"blendradius",myattrvalue);, ?( T6 X; z0 z/ c
  }
# c: v" i4 `+ G, X }! Y6 v" e4 J* w9 C+ T% E
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
6 ~, i$ Z* M( _' z" ?& i8 b5 y sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);) S( \' @& e% O! r) ~
UF_UI_write_listing_window(mymsg);
3 M1 S0 N- f8 e2 U/ o; C  V4 T: O) l : E1 r: e6 |- ]& V- c8 F& J6 ?
//create blend(倒圆角)
5 k3 i7 j& K- a0 ~/ j  [ UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
/ U3 I8 V$ e5 y8 l( }0 g4 W UF_MODL_delete_list(&vertical_edges_list);1 T* z4 D& I8 [5 P- T
//change body color、translucency7 @& N; m0 X. ]! Q
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
: w& b- G3 v+ `. }5 q UF_OBJ_set_translucency(blockbodyTag,50);7 F  }' }( d" l3 `. l4 O, |
    /* Terminate the API environment */
4 {! ]1 |% J2 Q    UF_CALL(UF_terminate());
. G4 h5 n" B" g9 P, x  B( {}- m3 l) w# ^  E. n' U& h
/*****************************************************************************
7 h+ E2 r4 ~9 B**  Utilities
& c/ w& p8 n! g- I1 F1 z" x*****************************************************************************/% F& w0 b6 J. L9 U& F5 p
/* Unload Handler
, ]4 T* ~: @* h! H$ `" ^( N9 D**     This function specifies when to unload your application from Unigraphics.
2 v( [/ G/ U: k' U3 m7 p+ W**     If your application registers a callback (from a MenuScript item or a
+ s$ b% H8 U2 ^( p1 e8 B0 M  W**     User Defined Object for example), this function MUST return
" N! r% i3 @. k& ?- G**     "UF_UNLOAD_UG_TERMINATE". *// }5 B. v2 W# z; H- ~& `9 z
extern int ufusr_ask_unload( void )
; b3 p& L/ B0 ?8 B" R3 X, o{) w) Y: D$ a; m! u$ ?5 ^
    return( UF_UNLOAD_IMMEDIATELY );
2 j' R$ E- r4 r8 M& p7 _. ?8 |}
/ l7 @; n" |, x$ Z: }, Z
8 w  D5 ^' t6 s/ v
无标题.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二次开发专题模块培训报名开始啦

    我知道了