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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

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

x
/* Include files */
' i; w4 I( `* V' i+ U#include <stdio.h>' w( e! s- `5 v* ~8 N# J& ~3 b
#include <uf.h>
: c* B0 h; i5 ~1 c#include <uf_ui.h>
4 l0 g' v4 g, {, B; g#include <uf_part.h>
% T* S. K$ M5 m! F9 q#include <uf_modl.h>
6 Y2 ~* \! b3 r. C#include <uf_obj.h>
9 G& T( S( n6 _  j/ V9 K2 \#include <uf_disp.h>
+ I4 C# x. j" p5 I$ B1 A) b#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
6 }: \0 {# N9 L- e( ]static int report_error( char *file, int line, char *call, int irc)
( Y7 S- r$ k7 D/ |4 c3 a% W9 k+ y0 k{
7 C: p% F* Q# Y* y/ f. {    if (irc)0 D7 k( h/ q! A
    {
: J; `1 s7 L9 Y8 C) C        char err[133],! B2 g4 K( z& g. L* m
             msg[133];
" ^9 Q* w5 w, f- z+ n4 ?        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
0 r; S9 J$ o& _$ B% C/ L( s            irc, line, file);" m0 e1 u- @* {! z& m- X' V1 Z
        UF_get_fail_message(irc, err);
" o$ g# t; h. z+ z* D/ W        UF_print_syslog(msg, FALSE);
; h) `) a8 c( p( i        UF_print_syslog(err, FALSE);
  A5 t' N" h5 [) a3 u        UF_print_syslog("\n", FALSE);6 \; c( _2 Y1 w
        UF_print_syslog(call, FALSE);
! S, p' S: l) ^* o! l( {        UF_print_syslog(";\n", FALSE);
; u1 w* D3 e- ]) Y2 G' a        if (!UF_UI_open_listing_window())  }8 g+ B* ~+ V1 @$ t; b! t, i
        {; L: m# G# i+ @$ m$ e. ]
            UF_UI_write_listing_window(msg);7 \- I) k4 s% o6 p: a/ f# q. W
            UF_UI_write_listing_window(err);3 E) z6 C: a3 b+ T  E5 y$ U# \9 @; m
            UF_UI_write_listing_window("\n");
! i* o: k) J* F+ M            UF_UI_write_listing_window(call);- f& ]8 a2 \9 f7 _8 g% b% h# |
            UF_UI_write_listing_window(";\n");) m% j4 {  Y/ {( f: w  I
        }
3 _* B1 [1 b' _( A1 N    }
5 \1 \4 m* N$ s0 l+ O. v    return(irc);
- w$ ^0 P1 H9 F* A( ^" G* u: E! f! O- V}6 |  `+ m4 P) ?
* X" b" B+ A7 n
/*****************************************************************************
# e+ {4 X4 B/ p& l5 n**  Activation Methods* W) B1 h  O  a  X/ t% w3 D7 s3 C
*****************************************************************************/2 X  X2 ]; f/ D5 @- R) d0 p( }! K
/*  Explicit Activation" u) F, e6 Q. f  y
**      This entry point is used to activate the application explicitly, as in2 _% y4 g9 e3 w/ ~7 ~
**      "File->Execute UG/Open->User Function..." */
" z7 z% B3 p, t; i9 t3 {extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
8 H4 ~& N. Q7 {8 e' n. |6 a% f{
- `5 F% c6 d5 L3 e    /* Initialize the API environment */( p% U# t9 `+ d) v: E5 }
tag_t partTag = NULL_TAG;2 W5 z+ g. D+ g4 k
double coner[3] = {0,0,0};4 [8 H/ I8 v8 W& |2 b6 S: b/ Z7 W
char *edges[3] = {"length=100","width=40","height=50"};
+ D$ K# M6 \" e& J# O5 A tag_t blockTag = NULL_TAG;
* z3 g1 [+ W( }1 M7 j$ ` const char * radius ="10"; $ o* V+ r8 w2 ?
int smooth_overflow = 0;
, R5 ^7 _2 f! b" G' E int cliff_overflow = 0;( M4 {6 x6 H* C1 p
int noTCh_overflow = 0;
7 Y) G; U2 r0 F, a double vrb_tool = 0.01;
) `9 A# ?6 Z# k4 V: i* q tag_t blendfeatureTag =NULL_TAG;/ B% P% D3 P8 v
uf_list_p_t vertical_edges_list;
8 O$ P: G- w% \; x8 s6 K' |7 l uf_list_p_t edgeslist;+ V5 ]+ j( L) k* r$ D9 y
tag_t blockbodyTag;" o5 Y& E4 s: m* \; Z
double firstpoint[3],endpoint[3];
6 z% u$ q2 M" g: d/ y6 k int vertixCount;
# \+ S# V5 M. P, e; M) r! l+ D tag_t edge;
. n/ p* ~; g" [+ p* ?( @5 E int edgesCount;
" k; \! ]1 q5 O" R int i;
! g7 y1 `: ?' H+ ]6 O char mymsg[256];% V( Y- ?( B- S6 P- [5 `6 d- Q
int vertical_edges_Count;
2 T" x' _* f$ j) ^; o' t6 g UF_ATTR_value_t myattrvalue;
1 ~; t& T' M% K1 m
8 m- ^  a/ _2 d! m) D    if( UF_CALL(UF_initialize()) )
/ n! n9 }- y3 |    {8 w+ u( T: V9 M3 x* [
        /* Failed to initialize */
! g, k) @  |: [& }6 ^8 }5 ]        return;. T* q+ [7 S& r
    }
* b. z) C2 U; T7 E    2 }# V  ~, O1 ]% b3 d
    /* TODO: Add your application code here */
2 d  Y6 D4 Y& M( K' x" A0 m' w% [6 R UF_UI_open_listing_window();0 E4 x' A5 ~2 g' @
//new part
" a$ L3 Y2 {5 t) f/ I( v. ` UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));6 i4 o3 l( q4 \& T, r4 _
//new block
) A" @3 o* V3 Y$ J6 c UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
9 w! d, x& Y% S4 Z2 p; a //create vertical list
5 P- n3 n# _8 ^) p UF_MODL_create_list(&vertical_edges_list);//create list
7 z- h* @; C/ r5 D //feature -> body -> edge -> vertical edge
& E4 @- o" }1 w& O+ j+ t // 1 feature -> body- J: X5 M8 Z6 s- a3 w/ W7 T
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);) C' B: j- D+ S, m* s
//2 body -> edge
6 b" G4 Q9 ^5 f( ]* A4 k UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
0 `) r' O' Y7 C% c1 a# P //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的' T3 }" {6 C$ f7 ]+ S1 P
UF_MODL_ask_list_count(edgeslist,&edgesCount);! q$ M' @1 I* r7 V* T( N1 I( O
sprintf(mymsg,"edge count:%d\n",edgesCount);, C, A0 o3 t5 t( L# t. ~
UF_UI_write_listing_window(mymsg);
& X% h# L+ X0 D9 |9 e: s //edge -> vertical edge7 j, t: T* j/ ^: T
for (i = 0; i < edgesCount; i++)
- N; ^/ K, U5 X% v4 }, H! E: W {' F8 T& q4 i; N
  UF_MODL_ask_list_item(edgeslist,i,&edge);
3 x/ Y, q$ t/ U3 n  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);# u+ P" ~. l6 g* j+ J; {
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2])): O/ U# ^" A6 P+ R# r0 ~" Z# K- P
  {
$ A* v1 I% a- [+ E( w+ |$ o0 N   UF_MODL_put_list_item(vertical_edges_list,edge);
" {2 H! g( j8 F/ r) G. C+ m   //add arrtibute
& x- X/ O& \) f& R$ |5 q  R   myattrvalue.type = UF_ATTR_real;
( Y- Z. R. I. B- x& N% p( P   myattrvalue.value.real = 10;% u4 p; @& B& X" B2 G
   UF_ATTR_assign(edge,"blendradius",myattrvalue);
* H2 n% p) @  K" c3 Q8 X$ X+ j  }4 u5 t9 S- a  ^
}* v/ k1 A% _4 A
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
6 w; p3 V. t" q4 c sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);$ A  o8 B* ~! C6 e6 V: m
UF_UI_write_listing_window(mymsg);
/ l$ ?3 `, {" Q1 J" n; V
- B1 v# j6 N- `8 h/ [  w+ b8 j8 W9 { //create blend(倒圆角)/ I6 k! I' z% `% A
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
5 A  B# n  t8 |; |3 _, Y UF_MODL_delete_list(&vertical_edges_list);" w6 a! K! X1 M: C7 R) x/ N
//change body color、translucency
1 V! v' v+ s: h2 u6 C UF_OBJ_set_color(blockbodyTag,21);//186红;21白
: }9 p* W0 I( l/ U UF_OBJ_set_translucency(blockbodyTag,50);
  l0 g+ j9 y! D    /* Terminate the API environment */
, s6 a: ]# N, _- G0 f# V3 V# m. Z' f    UF_CALL(UF_terminate());: |( T* y) \7 }& H
}
# I! m9 X+ M6 }2 K7 W# U4 s% x' X  H/*****************************************************************************) W3 }- N+ \' T& N$ f4 e
**  Utilities5 E+ h! w4 L+ g
*****************************************************************************/: h+ J* T9 q! T, t- ~: _
/* Unload Handler- g6 y' H+ ^5 W
**     This function specifies when to unload your application from Unigraphics.% w& v1 ]6 [$ S- \6 Q, w
**     If your application registers a callback (from a MenuScript item or a
% r8 g& {2 H$ w, W7 f/ O**     User Defined Object for example), this function MUST return
! }& k  m( _: \1 H2 j**     "UF_UNLOAD_UG_TERMINATE". */3 \! d2 `# V. F& f* I! Z
extern int ufusr_ask_unload( void )
7 b  P7 Q7 x/ @{
# e7 o7 I2 w. T1 c5 j1 y& ]    return( UF_UNLOAD_IMMEDIATELY );4 P9 K; n: a3 b) i
}8 Q  Y& c, E( [4 R  @" j
7 l* G( a. n8 \4 {* m
无标题.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二次开发专题模块培训报名开始啦

    我知道了