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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */4 N# m3 U9 `( U$ K, w5 n
#include <stdio.h>
! O' c, d$ G/ ^+ a& K#include <uf.h>  O# `( a; j' _' N; l! N
#include <uf_ui.h>
: `# t, ^1 R1 q+ K#include <uf_part.h>; Q& ?" `* p+ G- A/ t7 H$ O
#include <uf_modl.h>
" [2 O: i& H4 J' `$ ]' ^2 [/ l#include <uf_obj.h>
: o) r7 \0 n! ?+ s, r: q- O& g#include <uf_disp.h>
; ]# {$ [: p! e#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
% g; a1 E; b) A2 Y1 Nstatic int report_error( char *file, int line, char *call, int irc)$ Z3 E8 {+ M2 p
{" o9 j1 Z' l9 T
    if (irc)
* Q# V& q. ]& u4 I  d    {
% f1 d  z* s, p6 t- F3 m        char err[133],
, c# V; s/ ~3 i3 v8 g& [             msg[133];3 Y0 X! w; I  B: j" r
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",0 f! T% C% k1 |  F' M
            irc, line, file);
- F8 o" {. z& g5 P! q: ]" g: ?: _3 H        UF_get_fail_message(irc, err);
2 e; x( x8 N7 y2 @        UF_print_syslog(msg, FALSE);* F$ Q1 C# R  l1 @
        UF_print_syslog(err, FALSE);3 Y8 E: p7 H  P* I( p, x
        UF_print_syslog("\n", FALSE);& K% q6 \1 {' g  D4 c
        UF_print_syslog(call, FALSE);8 O3 Q0 |- h1 l0 u
        UF_print_syslog(";\n", FALSE);
- n, P( P6 P& ?% Z9 T& }        if (!UF_UI_open_listing_window())% _* p2 }+ a6 y) e4 c* ^" p
        {
  _& Q; L4 q" U8 g0 D7 A- j5 P$ _. N            UF_UI_write_listing_window(msg);
( d4 H$ R' \9 _: }4 G* }            UF_UI_write_listing_window(err);
$ b, R6 ~1 V, y$ W$ {2 X0 h            UF_UI_write_listing_window("\n");
) f- |, j6 R# n! z( R            UF_UI_write_listing_window(call);0 R: `# V4 z( G" c6 s$ Q
            UF_UI_write_listing_window(";\n");
* Z( M5 f3 J. Y2 Z7 A! B        }
8 n% [# T8 u5 p1 e    }
+ r4 s) `3 k/ t  |    return(irc);  |" U7 |! g2 ]/ W4 c: `! q
}
3 G5 U. V$ l0 y7 A2 x7 c
6 {/ @, }4 G. a3 i9 W9 h6 X/*****************************************************************************  u. F& z0 ?4 o  B' v
**  Activation Methods  m& t6 ^6 n% u
*****************************************************************************/
! E& C" F" w1 v$ X/*  Explicit Activation- H: @! Z& Q/ H- e  {! h5 P" w0 x
**      This entry point is used to activate the application explicitly, as in
; l! [" X$ ]! y: a**      "File->Execute UG/Open->User Function..." */
' N* I" k3 J- W' X" B- K, bextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
( f) h& k% W6 L' a  [{
6 e+ G; k0 T9 b  \( I6 _. w    /* Initialize the API environment */" X1 s  Z2 x% m8 R+ r
tag_t partTag = NULL_TAG;
- X! T% X; W3 S double coner[3] = {0,0,0};0 A- {) Q/ I+ _4 a
char *edges[3] = {"length=100","width=40","height=50"};5 ]( o; Z7 ?8 m) Y# Z7 P
tag_t blockTag = NULL_TAG;
' G7 m" S. t; }6 L const char * radius ="10";
0 Z9 \# y3 y- e* X$ K" D! M int smooth_overflow = 0;
* l6 `$ ~1 z* l2 w int cliff_overflow = 0;
9 u( c2 [6 ]" t- Q" R0 F, t) G int noTCh_overflow = 0;/ C. M2 H9 _% b+ S2 A2 t
double vrb_tool = 0.01;" _$ o+ R3 i5 T
tag_t blendfeatureTag =NULL_TAG;$ d4 A' z' ?( O2 Z( t# K* g$ L( _
uf_list_p_t vertical_edges_list;' O( p( E  V( y
uf_list_p_t edgeslist;9 g$ S( C$ C& Y( o3 B
tag_t blockbodyTag;" m( T) B- @5 r
double firstpoint[3],endpoint[3];
& T% [* z) L8 p- ? int vertixCount;( j# s5 e; j# S* X
tag_t edge; 6 I) l& e% ~: ^9 J2 k. ~/ |1 C
int edgesCount;* y- c) V! P, m( @2 ]: s8 {
int i;* Z- s& u- G* R$ M6 q8 b' i* _
char mymsg[256];
  c) Q# Q7 h: ^) V" ]9 ^ int vertical_edges_Count;
3 U0 ^, D: z. a/ c! |& M UF_ATTR_value_t myattrvalue;
. @% N* e) u3 g% K# h/ ]
% L8 g2 Q/ l4 {1 [- T( L    if( UF_CALL(UF_initialize()) ) 2 Y8 X3 ?6 F7 R. ]' N% I0 T# l
    {9 H, V& _" I  \3 C/ A$ f
        /* Failed to initialize */
! r) r3 ^8 m. f) n7 v        return;
: q5 e- Z% X9 _& F6 `  K! _    }. ~* S* c# c# Y. j+ |( a
    : ]# ]/ o2 p0 O, n
    /* TODO: Add your application code here */
" k; Q+ w) X$ I4 L: K) i UF_UI_open_listing_window();# |9 e8 @, c; ^- q9 W
//new part
6 y/ v) b6 r: B7 m6 h UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));) p, d6 G+ g: s; K$ M3 M* _# }
//new block
* U* t* u6 }$ w4 G$ s3 \. S UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
6 ^" ?. [4 s. I //create vertical list% E8 f: a" F! d' d1 _( }( ?
UF_MODL_create_list(&vertical_edges_list);//create list7 p) G0 h; p1 K) @3 {& \
//feature -> body -> edge -> vertical edge- `: \$ P% p% W  b5 b4 c0 p3 P! ]/ q
// 1 feature -> body
  r9 u4 v" @& G# Q" X9 P6 Z+ W UF_MODL_ask_feat_body(blockTag,&blockbodyTag);% I1 X- M7 R! l) Z
//2 body -> edge
( A1 Y; f" B- z  L! { UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
) ]" W9 N! p' J8 T //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的/ @) G  t% W& I+ c
UF_MODL_ask_list_count(edgeslist,&edgesCount);* o- {8 G$ \$ ?
sprintf(mymsg,"edge count:%d\n",edgesCount);( `8 n, d# B9 b" _# i
UF_UI_write_listing_window(mymsg);4 Z, U0 t+ L. x. N6 n
//edge -> vertical edge: _8 p+ a' A* ~0 u2 o
for (i = 0; i < edgesCount; i++)
4 w) K8 H7 P# I0 w, s6 E" n: ? {
7 e+ v" o1 B* Z/ g4 [$ \5 ~* a  UF_MODL_ask_list_item(edgeslist,i,&edge);
8 \/ S: ]3 Y+ [, e  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
& V' [( v8 I- E9 s) Z  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2])), g, |) ~& j& c
  {
$ N* H$ h  Q7 ]/ J' Q* ]   UF_MODL_put_list_item(vertical_edges_list,edge);& G  @$ Z5 b. B0 J5 A' x/ X  T
   //add arrtibute" s. n0 i2 d1 R+ H7 n) t# p& Z
   myattrvalue.type = UF_ATTR_real;
2 Q$ V. ~9 p8 p! X- x( v   myattrvalue.value.real = 10;
. }8 J9 Q2 v/ s/ J# ]6 t% j( o   UF_ATTR_assign(edge,"blendradius",myattrvalue);
+ t* e( N1 x+ s' f  }
8 _1 q9 j2 u* S, a) } }  v  f4 n* t: H# C3 r
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);; R, Q! G: B. p, E2 u: D2 b# k0 A9 H
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
3 Q0 h' i& t+ c: X6 P% G% k UF_UI_write_listing_window(mymsg);( ^9 {! m1 V' n. s/ \) @7 x, c

. C2 E. I& n- i4 M( H6 D# ^* s //create blend(倒圆角)
3 E2 \$ d7 s' N UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
4 x  R+ v' \9 V( u* G UF_MODL_delete_list(&vertical_edges_list);
/ T) ?# i& R$ Q; v //change body color、translucency
7 c$ U0 \/ ], O% R UF_OBJ_set_color(blockbodyTag,21);//186红;21白
, l  C& @6 f- l0 l+ ] UF_OBJ_set_translucency(blockbodyTag,50);
6 `- `5 W# z& E- E) L, |    /* Terminate the API environment */& z, ]+ r+ A  f9 l# Z2 Q
    UF_CALL(UF_terminate());
- K; O) X8 u) Z: h, O+ H6 `: D: t}% `% \4 a& p# ]0 [2 b0 s3 d
/*****************************************************************************
# f1 k8 C" |+ e. [8 c7 d7 \# Z**  Utilities) q) M% e% c# k# s; H# m
*****************************************************************************/, D. {  `$ T2 Y
/* Unload Handler
0 s% o& z- g+ N/ c0 H5 p. G**     This function specifies when to unload your application from Unigraphics.3 S8 F( `% A3 t( K3 _
**     If your application registers a callback (from a MenuScript item or a
, M: ^: D, v0 p0 q**     User Defined Object for example), this function MUST return
0 X  G8 @5 X4 r* @**     "UF_UNLOAD_UG_TERMINATE". */
1 o4 V9 ]1 F# ]* E5 Textern int ufusr_ask_unload( void )
% Y8 U9 Y9 z3 I7 A- K; _{
7 W$ X1 X# n0 Z9 a7 ]3 R6 Y2 \. K    return( UF_UNLOAD_IMMEDIATELY );
+ _, y3 ~+ e. Z! u1 @% p2 P}4 D3 @- X1 R5 a1 h: v' d  \

4 v* K+ ^; ~; ?0 s3 e" Z
无标题.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 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了