PLM之家PLMHome-工业软件践行者

[交作业] lesson3_CreateBlock

[复制链接]

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

4

主题

4

回帖

83

积分

培训VIP会员

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

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

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

x
/* Include files */$ ~# \  [3 }) T3 h  I+ y
#include <stdio.h>
% B! d2 `$ R* S6 J  X8 {( o# Y7 M. _#include <uf.h>8 t! D6 v( y' m
#include <uf_ui.h>
& }! ?. Q3 }4 {" S#include <uf_part.h>5 G8 G( t$ V* i. u% k
#include <uf_modl.h>) [3 O4 O: _" M0 \+ T
#include <uf_obj.h>' s9 ^/ g5 U* d- O/ t! m  u* E
#include <uf_disp.h>
+ t1 b5 i, k* c0 E#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
* L. L% ^& l+ E2 V7 Q; J5 f+ tstatic int report_error( char *file, int line, char *call, int irc)
9 W% N6 r4 M5 {2 q; a5 Z1 S{9 X# Y% \, u5 f' a# K
    if (irc)- t3 i! C1 F( h8 k
    {
2 h" Q: D3 E2 @& D/ Q9 P. `9 F        char err[133],
1 F/ Q: y5 [1 T" d0 w& z3 x8 f             msg[133];
0 c% I. t0 _/ e1 C9 Y8 p        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",5 l. k6 v# J0 {) R
            irc, line, file);
. F* t& [' D3 Y; b( v        UF_get_fail_message(irc, err);
: @2 ?; l/ T% X' t8 y0 e        UF_print_syslog(msg, FALSE);! h% t/ C& R/ U0 m7 h9 l6 l* F8 l
        UF_print_syslog(err, FALSE);' s; x- d4 R* Z  f+ I
        UF_print_syslog("\n", FALSE);3 ]1 v4 m% q8 y
        UF_print_syslog(call, FALSE);
7 ?4 n' V6 D# b( \6 Y0 e5 j; E        UF_print_syslog(";\n", FALSE);. W0 A2 I5 \" V- g5 z
        if (!UF_UI_open_listing_window())( p. r$ C7 t; ^) n
        {& B$ z) S$ G8 m9 m# T0 v' u
            UF_UI_write_listing_window(msg);
1 A2 b+ S4 h5 |# M0 _- _            UF_UI_write_listing_window(err);
- d2 E+ X, R# Q4 t  w1 o% F            UF_UI_write_listing_window("\n");
4 p8 z/ b/ e* m! ?  T) N            UF_UI_write_listing_window(call);- x: P( Q5 [- ~* e6 R
            UF_UI_write_listing_window(";\n");: M% U$ O: O. K" |/ g$ N, @+ k
        }
* J7 t. n7 \' ~    }
+ Y8 f# M9 v6 c+ V    return(irc);
, D) j0 w; k, k}  C, {$ P' y8 |5 O

1 z) r& a1 W- B) I/ w/*****************************************************************************
) O0 \5 Q7 \' a! p% M/ d**  Activation Methods1 Q; u8 _% x* L2 k
*****************************************************************************/
  J+ X$ {3 D+ s2 s5 {$ {! a/*  Explicit Activation1 ]+ d9 O. D. Z
**      This entry point is used to activate the application explicitly, as in
, x4 I5 ~( t% A  S; `**      "File->Execute UG/Open->User Function..." */( p9 ~# ^& g; U9 I/ L" s
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )( M+ ?8 `7 N# s! l$ f* c% R- U1 t
{# Q6 l  R# u& D8 k& ]1 \
    /* Initialize the API environment */
6 v: f' L7 G" I$ n. b4 E& u8 R tag_t partTag = NULL_TAG;
( I! Z- x0 o5 C" V double coner[3] = {0,0,0};2 f# `( x' \! R
char *edges[3] = {"length=100","width=40","height=50"};5 I( g9 u/ e' Y3 @
tag_t blockTag = NULL_TAG;
0 ^+ E$ W* G# m5 c4 |" x6 y% T const char * radius ="10";
7 \/ Y3 H% S3 O  @: r4 D& k) L$ p int smooth_overflow = 0;
8 u: B' t) B! p* s1 q int cliff_overflow = 0;3 h) b9 N* w# N
int noTCh_overflow = 0;) c2 C$ @% m$ ~- \1 m
double vrb_tool = 0.01;
/ V5 [9 i9 T* t) z% t tag_t blendfeatureTag =NULL_TAG;
/ f2 f& R7 m. P/ D6 ^( `1 E3 u4 \# E uf_list_p_t vertical_edges_list;
: t( `; @2 m+ e/ s% q1 v. a6 | uf_list_p_t edgeslist;3 I! w% b+ q' i  Y
tag_t blockbodyTag;$ h' q8 v1 p5 ^0 l& K$ ?8 Z
double firstpoint[3],endpoint[3];5 f' L7 M' p9 E: y' y
int vertixCount;4 `4 A$ w, m* Y/ O1 K
tag_t edge;
0 E8 _' W$ c' M( R+ q" N3 w int edgesCount;
! h- _* d* ?* W) A4 F; l) s# z int i;
4 k. ?- c; Z1 P  m  n8 ~1 r char mymsg[256];4 Y/ U1 [: L4 q! J+ o$ p% E9 M/ h
int vertical_edges_Count;4 r% z. o, p* |" z/ \: h, w' A
UF_ATTR_value_t myattrvalue;
5 K$ d" p# m3 u2 G# U' Y% S2 `# x& c# B9 }6 d
    if( UF_CALL(UF_initialize()) ) ) ]6 H2 r2 y6 b* [+ }! U' g
    {: y- L6 b' g4 a& O: s! N2 i: @
        /* Failed to initialize */& ?0 z5 T; S9 W8 S8 _" n% S/ B
        return;
5 N0 y) i$ w4 {. W6 Y6 Y    }" {6 m4 j% g! W. l
   
7 k4 T: `- M; R8 s/ X3 l    /* TODO: Add your application code here */
7 O. s4 Z" }* K% R: o9 H! x& N UF_UI_open_listing_window();6 N, h1 l, }5 ?9 ~5 V) n
//new part
/ q' S7 ~% c3 t' {% V UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
1 H# l  K2 \" s6 t# G //new block
. c" R4 ~, _% S- l UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
7 B# A) N2 G2 h$ j //create vertical list
+ M  n% @8 N2 S6 r' F1 D5 ^$ W* E0 ]' m UF_MODL_create_list(&vertical_edges_list);//create list0 ^/ K+ Y5 y  P2 Q* Y
//feature -> body -> edge -> vertical edge
' s6 F% z% \8 E0 e$ ~ // 1 feature -> body
& \% u$ J) U/ M, f# I$ W UF_MODL_ask_feat_body(blockTag,&blockbodyTag);- K' A' Q! K# k* {, I- P
//2 body -> edge
* U  r, V% j1 N( a UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);" M) O3 O" \9 {# C$ b* p
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的  P0 A# [& q  I; q) I4 q
UF_MODL_ask_list_count(edgeslist,&edgesCount);
3 H" y$ ]) Y) N. _! {- ^ sprintf(mymsg,"edge count:%d\n",edgesCount);- w: _$ E; k9 ~3 R& l9 Y" o0 O5 P
UF_UI_write_listing_window(mymsg);0 y8 T5 L& R1 N; h7 _7 k
//edge -> vertical edge
0 U; ~7 j" G0 f' A$ S" Q for (i = 0; i < edgesCount; i++)
  s5 j0 d) u" t" i {& K5 N2 [: r5 N, d1 L
  UF_MODL_ask_list_item(edgeslist,i,&edge);
# N; n. C8 f; J- W6 x4 G9 A  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);7 e' C: s# v1 ]5 V
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))! y5 k0 l) g3 C- J$ C6 }. ?5 J
  {3 H# P8 C$ x* k7 e3 ^
   UF_MODL_put_list_item(vertical_edges_list,edge);. _2 _& O! L! ?) y3 f
   //add arrtibute
3 d0 T6 K+ }6 _0 Y   myattrvalue.type = UF_ATTR_real;, l1 V7 D$ w1 w$ ^. Q+ ~( s
   myattrvalue.value.real = 10;$ m. \) q3 T- e/ B# E
   UF_ATTR_assign(edge,"blendradius",myattrvalue);) {* A, `  l: f
  }4 |. n# t( B# X! Z
}
1 e/ M( Z1 {% |6 K2 ^0 ? UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
8 c; M5 A8 Q( h/ ]" V( ` sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
( G2 w4 C& t- ?; r UF_UI_write_listing_window(mymsg);! G, u' b* f% A+ K& t  `: ^
6 k# N0 h' f  w( Q* d. [+ I8 h/ g
//create blend(倒圆角); h" P4 L0 `6 `( W1 i: ]& Y3 O
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
3 q3 o' @1 Z1 q- l% U  p UF_MODL_delete_list(&vertical_edges_list);- Z; p1 j) Q- a3 U
//change body color、translucency$ D( _. @, H. r0 l& l& v9 `
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
; G7 X. f. G% T- J UF_OBJ_set_translucency(blockbodyTag,50);; _  h6 V' \2 `9 L6 t' u& P2 T" w0 ^% M
    /* Terminate the API environment */
4 S4 ?' r9 D1 Q7 j9 K0 U1 X  V    UF_CALL(UF_terminate());
* O: w( [1 V2 s6 _+ |}, G7 A+ R! s  S/ E1 R7 C8 z1 }
/*****************************************************************************
' F( _2 N+ j5 A2 r# f+ m**  Utilities
# |4 h1 z  l& a' o*****************************************************************************/& L+ A/ e0 B# ~6 P
/* Unload Handler
2 \* j/ R1 b  w$ g% u% I7 M**     This function specifies when to unload your application from Unigraphics.9 b7 ~& f0 ]% Z4 U4 X  Y
**     If your application registers a callback (from a MenuScript item or a
6 }4 f# Y/ u& U1 _/ o3 B. q/ r/ s**     User Defined Object for example), this function MUST return
; e/ J0 C* z5 s7 f, r**     "UF_UNLOAD_UG_TERMINATE". */. x5 j* G1 n( R* N7 O( m
extern int ufusr_ask_unload( void )
4 T; l% N! Z" ^0 k. n3 a! P1 F{
+ B4 ]9 x2 Y8 g5 S" t6 ~    return( UF_UNLOAD_IMMEDIATELY );
" ]$ @2 J; Y& U}8 u3 Z, M$ e0 B! p' J
% D, S, C/ ~" r
无标题.png

评分

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

查看全部评分

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

使用道具 举报

全部回复1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 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二次开发专题模块培训报名开始啦

    我知道了