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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

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

x
/* Include files */
  _3 u6 j- O/ Q1 j#include <stdio.h>
5 }* |, i! n2 v#include <uf.h>; z4 _1 J" ?9 o; _/ C' X
#include <uf_ui.h>+ X5 I' T+ ^! |, a
#include <uf_part.h>6 a' t/ u. i$ I+ F1 P8 G3 A
#include <uf_modl.h>" y! y+ T, @$ z+ R9 u; J9 c
#include <uf_obj.h>
* m- c6 O' m8 ~# b8 P#include <uf_disp.h>' L" L5 K7 [! a* {
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))# {9 W5 t( I6 j/ {. d
static int report_error( char *file, int line, char *call, int irc)5 g) e/ E/ v) I8 [1 l
{
; }, t& Z; r7 A! {( _" |    if (irc)( V5 c" L' x* v, H8 k9 u" D
    {" m3 W' K7 j# Q* j' ?
        char err[133],+ A1 U; z( M* V% O9 N6 v8 {1 ]) E
             msg[133];
6 }+ J0 v$ q# a7 v9 u" y* l+ B        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
" t, }" ~' b: L0 X- N( L1 m1 t            irc, line, file);0 I& @: o7 U0 M/ Q- B
        UF_get_fail_message(irc, err);
+ w- @" s+ a+ q4 q2 M" \( U" V        UF_print_syslog(msg, FALSE);
# w  d1 E# _1 \  b/ t9 C        UF_print_syslog(err, FALSE);! Z; D3 H6 o0 g7 p0 ~- N7 U& `
        UF_print_syslog("\n", FALSE);
  M# c+ W6 Y2 E6 a4 ^) V0 C8 h        UF_print_syslog(call, FALSE);
$ }5 i1 F% o! H) Z( J: }, h        UF_print_syslog(";\n", FALSE);
* G9 m; z8 ~" Q! c3 d; M" H; K2 z        if (!UF_UI_open_listing_window())9 o0 f7 Q& t- u- m
        {
& e4 b/ m7 Y; ], e% u, G, q7 f            UF_UI_write_listing_window(msg);
3 X0 D0 f2 U# K: X7 X% c            UF_UI_write_listing_window(err);
6 O1 S# h3 N7 D            UF_UI_write_listing_window("\n");
8 f; C* X& P: ~/ D' [4 ]# n            UF_UI_write_listing_window(call);  z" h$ T* F3 p
            UF_UI_write_listing_window(";\n");6 F, \) D. e1 I2 V$ p; T
        }% I: O7 g9 C  @8 e8 }2 e* q
    }
- v* X( \: X2 O7 }8 \8 I    return(irc);8 z( X9 b; k6 t6 ^$ M; B1 \3 n" V: x
}! s' j3 y5 w0 w. \* G
  w' S+ G: K6 ~8 ^3 D
/*****************************************************************************4 N, L' G( \' H# }$ p. ~
**  Activation Methods
+ ?( @& ?! b1 f2 I5 ?5 i( ^*****************************************************************************/) Z/ r9 z6 x( l- k2 A1 `
/*  Explicit Activation
1 C& z2 V$ j* x  B& z* [% @**      This entry point is used to activate the application explicitly, as in7 v: }& P* W! W2 E. D2 T
**      "File->Execute UG/Open->User Function..." */7 ?' M1 r0 K: t" p
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )5 a) f/ K. @7 C/ H% R4 p4 ^' C, ~
{% H- @6 b) \! E9 F- M
    /* Initialize the API environment */
, q9 B( {/ F) S# ]5 e$ h" U$ _ tag_t partTag = NULL_TAG;0 p4 _8 M3 u0 [( [
double coner[3] = {0,0,0};; [, H8 j4 _& {8 j9 g
char *edges[3] = {"length=100","width=40","height=50"};9 S- \( ~' T3 b' m$ F
tag_t blockTag = NULL_TAG;! s  `/ P: q" e* V5 V" n; D
const char * radius ="10";
- p7 K- ?$ Y; A1 F6 r int smooth_overflow = 0;
3 i. A1 v5 \0 o; a int cliff_overflow = 0;2 a+ q* s* }2 }! b' {
int noTCh_overflow = 0;7 d( ?0 W3 E' {* H
double vrb_tool = 0.01;1 @) c5 h7 F+ y2 z2 u' L
tag_t blendfeatureTag =NULL_TAG;
  O0 W* T" R& |; b# J uf_list_p_t vertical_edges_list;% r: X$ A' M; E. m0 A- n- o6 U
uf_list_p_t edgeslist;9 x. ^; ]3 l/ h1 I4 l3 {: `& K; l
tag_t blockbodyTag;5 D5 o1 \( s3 G# d) W+ [' w2 Z( _
double firstpoint[3],endpoint[3];5 D( G* N1 p& p. t* J% m" U
int vertixCount;
$ B  S$ S  l, w3 R+ _ tag_t edge;   d. Y9 D9 v( @: m* w
int edgesCount;
9 E, [& ]7 A0 j. H! p, ~ int i;. ^' s' _' f4 w' P) [; c
char mymsg[256];8 A* }5 C- b* O$ K8 W/ M
int vertical_edges_Count;
  ?- T+ R! Q5 j% Q" i) L+ s9 {, l UF_ATTR_value_t myattrvalue;
0 b* r7 y9 M, v& y& H9 X6 D- C4 k1 ]% X1 F* m  M
    if( UF_CALL(UF_initialize()) )
/ k0 w( K# R  l) ~7 A4 a& `! ^    {
8 X$ a+ o/ ]3 |! _7 F5 p9 J        /* Failed to initialize */
; o' U2 n8 ?3 \; H        return;
3 x* n: S8 T$ L1 f" @( E, a! S    }
1 W0 Y4 |2 R8 ^, q6 f9 |4 v   
4 W( Q& B' P( ^3 i% I- F    /* TODO: Add your application code here */
2 j) I9 y3 t6 |6 b7 B UF_UI_open_listing_window();  X, g9 B' r: D' P
//new part, [' R) Z5 A; m3 R" R; y
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));" J  o. ^2 H* B3 t; s. y
//new block; I' A7 `$ R  m) [+ c6 _2 }
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag2 p7 a- ]. Z3 D# a- A
//create vertical list
; x; Y* z$ ]' v$ I, H, h0 y UF_MODL_create_list(&vertical_edges_list);//create list7 i) w$ t8 D# ~1 W( b  X( ]
//feature -> body -> edge -> vertical edge- O. s+ R8 a: X* P; H  n
// 1 feature -> body
7 b1 A0 b# N+ U/ C UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
7 ]$ X% r4 n  u //2 body -> edge
; H: V" V$ c; Z+ J- Q UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);, ^% q. W  \! T2 A
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的9 V/ w! m' v, n3 i3 Z
UF_MODL_ask_list_count(edgeslist,&edgesCount);! n: ^) C9 I1 _; D
sprintf(mymsg,"edge count:%d\n",edgesCount);4 m6 ~8 D& C; `. N. D5 ^! H& G3 Q7 h  j
UF_UI_write_listing_window(mymsg);! z" h/ W+ j+ D5 D% k
//edge -> vertical edge
) i2 T3 e- ^) S# T0 P$ R for (i = 0; i < edgesCount; i++)
5 P; p3 d7 h! W+ B# ~* e+ u {
6 d; T* x/ y; O0 h1 ~  UF_MODL_ask_list_item(edgeslist,i,&edge);7 i, G' q) S1 f; E( R
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);8 g  }1 ~7 ^7 {6 F+ L; d7 b
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
% j+ ]+ }( v3 u: W  {& L' b1 d6 g7 v( ?% F8 j6 ~8 W4 T
   UF_MODL_put_list_item(vertical_edges_list,edge);9 V0 s! H0 I; a# z  _/ s
   //add arrtibute/ T! h3 ?. T- X& w, r9 g# x/ I
   myattrvalue.type = UF_ATTR_real;
% J! o* ?! d' J   myattrvalue.value.real = 10;
1 U' a1 \8 r  y  F- Y, {: I8 Z; q   UF_ATTR_assign(edge,"blendradius",myattrvalue);
" a5 d! d2 P! L. I3 s: j  }4 r4 n" [( B- Y1 M; r9 Y; Z
}
# Q! ]2 n% {* d UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);, c/ j  O, |7 p
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);& L" r: A" q8 T( k% I$ F  |
UF_UI_write_listing_window(mymsg);
$ i# Q2 \* C3 a& [: w3 D - B1 k' e7 A4 I( ^! d
//create blend(倒圆角)
9 V6 U& d& ]  A/ M8 E: j UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
/ f3 |$ s! _7 F) v1 o UF_MODL_delete_list(&vertical_edges_list);
/ h; l2 O7 x' d //change body color、translucency" f! u! `% q( M& A
UF_OBJ_set_color(blockbodyTag,21);//186红;21白& C/ G3 F1 Y( ~8 H* d
UF_OBJ_set_translucency(blockbodyTag,50);1 C- K6 ^/ Y% L9 F
    /* Terminate the API environment */3 c! v' Z! B# Q
    UF_CALL(UF_terminate());
. l8 F" W* |$ Q5 j}. P7 K, J/ h% S4 x- p
/*****************************************************************************
$ W5 A# F- W( N$ ]. R: `**  Utilities7 _% |$ V9 U* N( `
*****************************************************************************/
3 d' K- k! {6 d$ @. w  `. U/* Unload Handler3 h9 C$ n& ~' N6 W! b! e' z
**     This function specifies when to unload your application from Unigraphics.
, Q% D& t+ }6 i" Y! ]  T**     If your application registers a callback (from a MenuScript item or a
9 s! v: G$ I9 ?8 D**     User Defined Object for example), this function MUST return$ S/ M! J# Z" q3 D* x
**     "UF_UNLOAD_UG_TERMINATE". */
+ J9 p5 b( S! y+ iextern int ufusr_ask_unload( void )
; L! H7 R1 G/ D5 K* L6 j4 l{
9 p) n9 ]  C- ?; n    return( UF_UNLOAD_IMMEDIATELY );
: \8 q: a4 M9 h2 I# l* A}
9 Z# c+ G! C. W1 R! d! T/ q) i
7 i0 l$ w& v1 n1 y+ q% \8 d6 q
无标题.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二次开发专题模块培训报名开始啦

    我知道了