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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
) Z3 q9 b3 X2 O. C& j' Y7 z0 c#include <stdio.h>
% ?8 L; ?) d- _#include <uf.h>
0 Q# d, w3 N) U1 f! q#include <uf_ui.h>
4 D) @* K) ?9 {& z/ p  I( e#include <uf_part.h># Q; C; \# r8 J& t' E2 h
#include <uf_modl.h>$ F" A8 x7 ?7 k) p- U3 A# M/ t
#include <uf_obj.h>
- }' i$ z  Z3 C" Z2 M#include <uf_disp.h>. k. Z& H$ `" z% O
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
3 `8 L) ~8 h/ a' lstatic int report_error( char *file, int line, char *call, int irc)3 ^9 d2 j& G+ ]
{5 k6 X8 T; s8 K
    if (irc)
/ \) H' M+ p3 |5 M: \2 b4 M    {7 F. @; K4 z  m/ _9 v8 m% z+ X
        char err[133],
& O; H% c8 `# p2 k4 I& a             msg[133];
: `0 l  Z0 j4 x8 y5 a! d        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",% x8 x  D, w+ z( f
            irc, line, file);
! ^6 n6 n; q' `  [$ a% d: G* J        UF_get_fail_message(irc, err);( v6 }7 B0 n# I' I; X
        UF_print_syslog(msg, FALSE);
5 ?1 {+ v' o0 n! Z        UF_print_syslog(err, FALSE);5 O) l/ S, L3 y* @
        UF_print_syslog("\n", FALSE);
" L, o, R  \' K% ^! A& q        UF_print_syslog(call, FALSE);
, G' F3 u- a  j" o$ q8 l% X, P/ ?        UF_print_syslog(";\n", FALSE);  e1 D6 v0 L! _' B0 X8 h% B) M
        if (!UF_UI_open_listing_window())
( Q9 N( Z7 D! d9 e5 r+ x  |6 N        {
2 t7 G1 Y  a$ t+ u9 g+ n+ N            UF_UI_write_listing_window(msg);
0 `! Z8 x! D, `/ R7 D$ c' I            UF_UI_write_listing_window(err);
0 [4 z; t: B9 h+ l0 v: A( V            UF_UI_write_listing_window("\n");
* @  w; }. W+ @8 E. `            UF_UI_write_listing_window(call);
, z5 J7 K1 Q. {; A3 L! L7 Z) c            UF_UI_write_listing_window(";\n");
% ~& T/ A0 U: Y* v        }
% Q* p4 _" ]  f' S/ f& ^    }/ E$ O; [# v8 [' V
    return(irc);
5 G. {( ]! R' H3 S# O}4 y! b- _2 D2 _2 l( i# |3 w

+ Q1 q* ]( }7 ?/*****************************************************************************
4 q2 y5 z0 [/ C# P**  Activation Methods) `9 Z0 B% Z7 t  y8 {8 w
*****************************************************************************/$ M9 t% c" p+ W8 ~0 L5 c
/*  Explicit Activation
6 f5 t/ X* m* J0 ~3 h**      This entry point is used to activate the application explicitly, as in9 G" i! L" B* H- g# z
**      "File->Execute UG/Open->User Function..." */
3 H1 m$ ~+ O4 @. K6 n, Cextern DllExport void ufusr( char *parm, int *returnCode, int rlen )& Q" [) ?) g" ~; Y
{2 m5 B; I2 E4 O9 P& H
    /* Initialize the API environment */
/ L( B& ?" \& t( G2 U tag_t partTag = NULL_TAG;! O  w$ J. H! f. r  H. v' H
double coner[3] = {0,0,0};
( k. H( v/ P% j2 e' u char *edges[3] = {"length=100","width=40","height=50"};3 v# |* L2 Q8 h% f
tag_t blockTag = NULL_TAG;" n5 p- r( S: O. L  o$ {! ^6 C
const char * radius ="10"; - g: Y/ ^( O% N0 J/ f# k1 i
int smooth_overflow = 0;
9 U  b1 c% [; `% G9 A int cliff_overflow = 0;4 @; D: K. f7 x9 V, D& a& C. p
int noTCh_overflow = 0;& u/ i& ^, O( D! H9 a
double vrb_tool = 0.01;
  c4 w8 E& F' `/ x6 n& d% Q' } tag_t blendfeatureTag =NULL_TAG;
" H- I- h- t$ C/ I/ O0 j uf_list_p_t vertical_edges_list;+ ?/ D" y" j$ @+ h3 @6 }4 H
uf_list_p_t edgeslist;
+ ]0 q1 x4 r, j- U- {5 W tag_t blockbodyTag;
8 l  [' t. \  }- j0 u double firstpoint[3],endpoint[3];
! A5 H" M4 |- v  [( L$ y; D int vertixCount;
, k1 X7 v0 q+ x+ U tag_t edge; 8 m3 G8 |+ _. N( @
int edgesCount;% [3 K3 z/ I: J! n
int i;. L! D5 w/ j- H* }6 W- s
char mymsg[256];; Q' {0 R9 `2 T) B3 P0 L
int vertical_edges_Count;# D( a5 K& e1 ^9 |5 p
UF_ATTR_value_t myattrvalue;
! w9 ?6 y+ z9 t: [* h
& R0 I4 d9 t# X4 z    if( UF_CALL(UF_initialize()) )
4 Y0 M: G3 c1 S! n: q    {5 [6 X9 N; s+ g
        /* Failed to initialize */. R$ R" D/ n$ `2 p, N
        return;
  `7 `+ C7 \  Q+ @4 A1 z    }
; z5 A1 @3 V3 |/ J4 x0 i! t   
( x' t6 ?$ s3 _    /* TODO: Add your application code here */8 }6 d% n9 e! T& N1 T$ o
UF_UI_open_listing_window();! q; v2 V! u0 o8 K9 p0 X
//new part
1 x  ^& @( u9 ~! x$ V+ ] UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));6 h8 r0 S0 Z& R( x+ v7 g* p: z
//new block4 T, ~+ ]; p3 |! ~7 m) _+ P/ v
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag  |1 V: U3 b$ `
//create vertical list/ w7 A# |+ H, w  T" A4 B1 d
UF_MODL_create_list(&vertical_edges_list);//create list
2 K& M5 u$ l7 ^- \- ^# L3 g //feature -> body -> edge -> vertical edge
) _: c' D5 ]& s$ B6 Y // 1 feature -> body
& [& s$ @. \9 j, E2 e# o  d UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
! U2 b8 a5 f. ]3 q. X" b' ` //2 body -> edge
6 Y1 M, n! f9 o  S. @& x5 q; }. z UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
0 ~& r) Q/ K8 f) `  m //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
3 D+ F' o$ j/ F% ^' ^9 A( e UF_MODL_ask_list_count(edgeslist,&edgesCount);% I$ s% U9 N, u7 n, l% X
sprintf(mymsg,"edge count:%d\n",edgesCount);) X8 X; A# u/ N' B' j
UF_UI_write_listing_window(mymsg);
9 o7 }  Z+ S/ |' J- q, z" o //edge -> vertical edge! V5 M: B. a  g3 n8 E9 A' U
for (i = 0; i < edgesCount; i++)
6 S/ G" A  k( E: n& c2 |  @! @6 C {
; \7 Z" l' }3 {  UF_MODL_ask_list_item(edgeslist,i,&edge);
2 e- `7 w, P+ m. x" H* Q  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
5 Z; x9 W  t+ \+ M  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))) k& O0 ^* V3 X) C3 `. B* a
  {2 X0 F0 r! S  H( _1 s' [  k6 T) F/ h1 v
   UF_MODL_put_list_item(vertical_edges_list,edge);( C8 P5 C0 c8 @" h
   //add arrtibute$ x/ Y: T" w& o' |# ~
   myattrvalue.type = UF_ATTR_real;- ?  |  h; X0 C* T; @: e; Z
   myattrvalue.value.real = 10;
+ w/ Z$ m5 R6 B# I   UF_ATTR_assign(edge,"blendradius",myattrvalue);
1 d0 m. u* g" V5 Z0 ^6 A0 A  }
& b9 v. ]& O: K8 ^4 s  | }  p( J6 U4 ?" r1 Q
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
3 X5 I! `  A  o7 m1 P, T7 V. W sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);+ u6 }, G* O6 G
UF_UI_write_listing_window(mymsg);
$ J  t& U  f  }% [8 v: D. D$ N6 a5 ] 6 d7 z0 b+ V, e6 L/ J
//create blend(倒圆角)
5 ]# i% V; w9 }# M  f8 Q4 l UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
. |; Z+ ?' f9 \; Z0 \4 a UF_MODL_delete_list(&vertical_edges_list);
* {5 Q4 W  _+ P  ^9 [ //change body color、translucency
) {0 Z+ S; O) Q UF_OBJ_set_color(blockbodyTag,21);//186红;21白  J% J' o$ V8 H; ^% c3 u  p
UF_OBJ_set_translucency(blockbodyTag,50);) i" o6 j$ Z1 y" B5 Q. z( S2 E# C5 s9 l
    /* Terminate the API environment */
" v; J8 f0 m# n8 R/ s5 ?# P( A    UF_CALL(UF_terminate());! n* [$ W2 S6 B1 q1 ]5 a- B, ~
}& x" y9 {) P5 H$ F' z# R1 L3 O6 T: |  g
/*****************************************************************************$ _5 l5 T+ X8 L" ^
**  Utilities/ h+ w0 T# K& S. J0 g
*****************************************************************************/
4 w3 ^" H8 \4 M3 q$ r9 l) c3 W% p9 H/* Unload Handler
* \: j% h: U' X# c**     This function specifies when to unload your application from Unigraphics.
9 [) o" X/ N6 p1 A**     If your application registers a callback (from a MenuScript item or a
! K. O1 P' K+ Q5 D" l**     User Defined Object for example), this function MUST return
7 W  o3 w8 g" @0 t! b, v**     "UF_UNLOAD_UG_TERMINATE". *// W+ `, w% {3 g4 @
extern int ufusr_ask_unload( void )& o# ~" m# W9 ^5 i; C8 B
{
% l9 @: t3 C4 Z9 B4 z8 R    return( UF_UNLOAD_IMMEDIATELY );
( m) `0 T9 w5 ^" E/ B! {: L3 q}
1 I/ L4 R1 V- [  z) y# R1 y( N& n& G' @/ H) A/ Y) l, U
无标题.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二次开发专题模块培训报名开始啦

    我知道了