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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */5 F6 |; e! {0 D0 P
#include <stdio.h>. M/ x; ~3 p: |2 q3 Q! m4 }1 M
#include <uf.h>- p' v  n3 L$ E/ [; O) ]
#include <uf_ui.h>
3 o& @: ]$ n  [) }) K0 L#include <uf_part.h>$ ?4 P1 g/ a+ t7 ]2 b
#include <uf_modl.h>! Y4 m. G5 F  X# x
#include <uf_obj.h>5 X: d3 }7 h7 }! \
#include <uf_disp.h>
5 n8 w: i) E. O#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
5 R# }) z( t  H$ cstatic int report_error( char *file, int line, char *call, int irc)# Q' G% g& K2 t& c& Z5 m. T9 k5 J- C
{6 {0 u9 l; h2 z, [
    if (irc)
. \* Z" D% w, P4 q    {/ J6 `# E* `# s* R; i- C+ }
        char err[133],
9 v4 B/ P0 P* K( \8 M( x             msg[133];
4 }1 i3 i* k, ^- i# y        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
/ X6 |1 z, A# q            irc, line, file);
" r; B# w; j' W# q  c* q# B7 C6 X        UF_get_fail_message(irc, err);
5 E/ _9 ~& [' S  d7 H  H& r8 O/ o        UF_print_syslog(msg, FALSE);, G# ^; u/ D9 s. x, h8 i
        UF_print_syslog(err, FALSE);+ z- L8 [$ r  {6 x! L
        UF_print_syslog("\n", FALSE);
1 I. q8 H% v9 f        UF_print_syslog(call, FALSE);
8 A! X: Q0 R. k+ |) d        UF_print_syslog(";\n", FALSE);
; j1 f8 L: K; Z* z$ L% S" e# G# [        if (!UF_UI_open_listing_window())- X. d' m. S: [7 l
        {  }0 f: W4 ^2 y1 I
            UF_UI_write_listing_window(msg);0 J9 D. s# r% P
            UF_UI_write_listing_window(err);
- Z% J. ]6 y1 l5 p            UF_UI_write_listing_window("\n");6 C/ n/ l" c3 g' t) L4 q
            UF_UI_write_listing_window(call);6 v! W5 S4 [5 i
            UF_UI_write_listing_window(";\n");1 ~* b6 p/ @2 ?( }7 E  R7 Z
        }6 o1 l6 i* M/ ^. v  b! `# i
    }4 T- c( H3 t( L" q; k
    return(irc);
4 Z. u- I% z* X- H' Q}8 R3 `! h* ]! K% X0 \
" r1 x  F& Q% G9 O! b# n2 a1 S! H
/*****************************************************************************
( J& {& r5 J$ {8 m% C**  Activation Methods6 g" p/ O: M: N1 z8 y- j5 J
*****************************************************************************/
8 D3 s- A0 [% d* k+ P3 e; l/*  Explicit Activation
) r: N( A# B9 r6 @# Q; ]7 e" n  [8 n**      This entry point is used to activate the application explicitly, as in- q* K7 l% I  {
**      "File->Execute UG/Open->User Function..." */$ l, K: [! F7 w! X: i7 y
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )  k! {3 t* H$ \, \
{
, h9 @8 F# l+ Q+ v, N2 ]! G; T7 ]    /* Initialize the API environment */0 M- |1 |. s5 h+ U1 T0 Q
tag_t partTag = NULL_TAG;9 h% q$ T9 t2 F9 s
double coner[3] = {0,0,0};3 o$ d; J0 g& J$ ^6 C
char *edges[3] = {"length=100","width=40","height=50"};  N+ q6 o* ?5 d7 C: A2 ^) R6 k
tag_t blockTag = NULL_TAG;) }! c9 z* F" C; e  ]
const char * radius ="10";
+ t* v& ~& N( ? int smooth_overflow = 0; 3 c( X- O6 \4 N1 A8 ~1 H
int cliff_overflow = 0;
* P/ H! F+ L4 p8 k int noTCh_overflow = 0;0 \7 p5 g  W+ m3 ]& n
double vrb_tool = 0.01;& e; f2 V3 [! h: y
tag_t blendfeatureTag =NULL_TAG;
0 w2 @# U! ]& j) N uf_list_p_t vertical_edges_list;
9 Z  Q& {( l9 ~7 l8 c/ @ uf_list_p_t edgeslist;
; O) T6 @  w, k# z/ x tag_t blockbodyTag;
. Q0 Z) Z) v) n double firstpoint[3],endpoint[3];, u# n  g/ d: S8 S3 A7 a: Q) s
int vertixCount;
! r" O6 ~8 E( {* W% ] tag_t edge;
7 n5 n3 K4 K7 k6 V* y* L int edgesCount;
5 Y1 E: b, A$ [3 q+ _2 o2 j int i;
5 n/ ?, l0 G) _! @* R: z- Q char mymsg[256];
( b8 d. y. R8 Q int vertical_edges_Count;0 t+ d" i" L+ m# e. s' D; u
UF_ATTR_value_t myattrvalue;  F( e9 k8 G# w/ ~; M1 _* T

2 J/ x$ z' i/ L    if( UF_CALL(UF_initialize()) ) ! M' @, m9 |# I4 E" D6 z
    {: O2 O: ^# c! {: o
        /* Failed to initialize */
4 J2 ?- W! K" }* m1 ^        return;- f" a$ p6 C4 F9 ?* Z9 H1 e  R
    }! c6 s6 a9 p6 ]2 L
   
- F. V2 V5 x& A& C; T    /* TODO: Add your application code here */! V1 K0 a& @5 Q- f+ D! M  n. n
UF_UI_open_listing_window();
+ R( Q- J- d% r. i8 P! w3 r/ } //new part  @" |" X& Z. u; K; t" z  a, t6 y
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));2 X2 t6 J; j4 s) w. V0 K% H  U% m
//new block
) }9 Y5 n; c% Q' o$ o UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
. x$ m8 Q" T' w; f3 a, e0 i/ b( r //create vertical list
# z. x0 X# O3 t+ h0 o# X& p UF_MODL_create_list(&vertical_edges_list);//create list
0 J1 ?$ [1 a2 j; `) B/ E //feature -> body -> edge -> vertical edge
) |- u' a% q& n# [, \4 x# f // 1 feature -> body1 C* u* T/ T" L# X% p& n* q
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);3 ?' h0 L9 q) l# o8 F
//2 body -> edge
( X3 A- t/ `- w3 I8 u5 w UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);$ u9 q  Q' L$ A/ T/ Z
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
, [0 G/ E  t: l* X. V* B+ y UF_MODL_ask_list_count(edgeslist,&edgesCount);
0 J2 y. N. P0 l6 v% ~/ J2 _ sprintf(mymsg,"edge count:%d\n",edgesCount);
* m; N6 [- u+ T. @7 e. @" O UF_UI_write_listing_window(mymsg);
6 p* x5 @; x5 n6 Z' H //edge -> vertical edge
  A5 N- c8 a9 F# h, H. w for (i = 0; i < edgesCount; i++)  u) ]. w  D6 H2 j0 c8 [$ A+ |
{/ M1 E5 k7 Q9 W* R
  UF_MODL_ask_list_item(edgeslist,i,&edge);$ W- w- m5 ?( O2 _7 [5 e! j% h
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
. P1 J# C2 G  Q9 l' K) D  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
: J  d: z+ j5 W2 Q( @' }  {
; X+ o* e' M; U1 c* L# g9 o) u   UF_MODL_put_list_item(vertical_edges_list,edge);
3 w, y+ B4 I5 l2 U* q   //add arrtibute
5 T( T% m) |, x( g- C+ S) _1 o( V   myattrvalue.type = UF_ATTR_real;8 G9 b$ E8 |2 `$ S( j# i
   myattrvalue.value.real = 10;% o8 X/ a% u3 X
   UF_ATTR_assign(edge,"blendradius",myattrvalue);! Y3 e& ~: I7 D* `5 ~
  }
% z% i" d1 H# r) M6 X( B, k }
5 M, n3 N5 Z# y, o) \" {( U! r) K UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
& b3 b- b$ @5 Z! v/ T0 k5 E3 s4 V sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);* r( \# l( H  q& M
UF_UI_write_listing_window(mymsg);
# ~! n5 r9 o' G$ v! ^ 5 F( p7 ^+ X6 J& `) s' V
//create blend(倒圆角)
- w7 Z% U$ d# ~& G1 @8 \2 U UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));" O0 H3 w) ~9 |- V4 H. R* \
UF_MODL_delete_list(&vertical_edges_list);0 a. ?7 U' ]* ~! T4 e
//change body color、translucency
1 ]* F  P4 O  i& s! D UF_OBJ_set_color(blockbodyTag,21);//186红;21白8 s" X" l3 W8 `3 H7 ]0 K2 k% R
UF_OBJ_set_translucency(blockbodyTag,50);' o0 r: X3 X8 |' ]  F+ \3 A9 ?# d8 Q
    /* Terminate the API environment */9 z1 S# |% ?* q
    UF_CALL(UF_terminate());; E  v( ^, M6 m. C
}. f# a7 k5 E8 [. \; |
/*****************************************************************************
3 L* `# @6 E# J# x7 ]6 X. {' m**  Utilities
. d) d6 _2 C# L' x$ P9 e# {9 F*****************************************************************************/9 p2 E8 H! x4 C, @* b  M
/* Unload Handler# m: E' K' n, i) A, Y# L
**     This function specifies when to unload your application from Unigraphics.
2 w& v% u4 d  M. x! G**     If your application registers a callback (from a MenuScript item or a% e6 H$ f$ N+ d* \+ s& b1 _; j
**     User Defined Object for example), this function MUST return
8 }$ @7 Z0 L) `0 [' t8 q5 F**     "UF_UNLOAD_UG_TERMINATE". */0 k& U/ e2 F5 L- D4 F* N) s5 `
extern int ufusr_ask_unload( void )1 I2 {- O& N0 n( x" G1 {
{% Q& a1 |% ?8 G% O: |
    return( UF_UNLOAD_IMMEDIATELY );
# x  A8 d- N0 b& `% ?! Z}3 R. `8 @5 I- i
( @& x! @. _. c/ D
无标题.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二次开发专题模块培训报名开始啦

    我知道了