PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
/ n8 Z7 T3 g% i6 N#include <stdio.h>% a" C* P4 L- J0 _( @) ~- @4 N
#include <uf.h>* G0 L1 x/ J% x9 g8 ^' v+ G
#include <uf_ui.h>4 v0 A9 D5 M$ [  j! y: [
#include <uf_part.h>
4 p1 Q) z1 z& d0 ?1 F6 _#include <uf_modl.h>
4 [6 ?# N4 _2 A6 U0 L- o#include <uf_obj.h>5 \- R# F: `4 I1 X
#include <uf_disp.h>
! Y$ J: [* o8 e7 g* z, R#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
7 S! g; D, O, Z- }4 astatic int report_error( char *file, int line, char *call, int irc): y# o* J; c3 @) q* q( N
{: u& C* T7 |/ y& N7 |' U
    if (irc)
7 u8 D' s/ B* V, i# m8 V- ^+ i6 v1 i    {
& p. }' z% Q0 R6 L        char err[133],
* C; p6 P( y8 y0 Y; C             msg[133];
" Z' n' `1 j0 i( n- B4 i        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",$ D: j) M. h$ a6 Q+ W( y. {
            irc, line, file);0 y; Y& @5 U  n0 R' \6 s( u2 Q& O
        UF_get_fail_message(irc, err);
$ K0 O- I6 M. t& S6 ?        UF_print_syslog(msg, FALSE);' h: u9 @- |1 {+ C# x! l
        UF_print_syslog(err, FALSE);& {# K9 w1 o3 E( E% n' x, G
        UF_print_syslog("\n", FALSE);+ ~+ ]1 P& s9 h4 G+ _6 l
        UF_print_syslog(call, FALSE);
  K" ^6 K- @; [; @0 q# t' m        UF_print_syslog(";\n", FALSE);. O: Q' {  b9 C( A+ M" ]
        if (!UF_UI_open_listing_window())
5 S7 _9 h" ]5 T& \        {
0 g. D; N5 I2 [( c! R% {0 ?! x8 w            UF_UI_write_listing_window(msg);
2 P5 d2 H# D/ \/ q+ p            UF_UI_write_listing_window(err);
8 |# d% u9 p6 M. r! M  i2 X            UF_UI_write_listing_window("\n");* g+ u5 D4 Q# t% {0 M3 R: I
            UF_UI_write_listing_window(call);& `  p+ K1 P/ k: M0 c: i& r
            UF_UI_write_listing_window(";\n");# B4 i1 x2 C, W
        }
/ t1 C/ x  f8 n, }  ]/ j# X    }: t% C) Z: ?' a& k9 r0 w% z
    return(irc);4 Y6 v1 L, ]8 h; G% D/ c
}
9 K: X5 k4 r" y# A2 S# x
/ ~$ i% @/ H: h  G( w% A/*****************************************************************************% Z, {" g8 w! s) v, I% F+ v
**  Activation Methods; t( Y. _# v8 L/ k( n8 D
*****************************************************************************/$ Z) x5 i2 S8 q% z% d1 t9 f
/*  Explicit Activation
4 f. M- \& [/ x**      This entry point is used to activate the application explicitly, as in9 K: J6 c' f  D$ Q5 ~4 E
**      "File->Execute UG/Open->User Function..." */
; t+ g$ \5 m/ Z0 L, Cextern DllExport void ufusr( char *parm, int *returnCode, int rlen )* ]2 s3 N) ~( ?3 F" b
{9 U2 U' ~5 H2 v1 f( v# l% i# Y
    /* Initialize the API environment */: [% D$ }( t3 f7 N0 b2 Z/ e6 N# ]
tag_t partTag = NULL_TAG;9 A) @& Y, X  J: z& u8 z
double coner[3] = {0,0,0};
# L+ N/ ~+ L  F" V char *edges[3] = {"length=100","width=40","height=50"};7 ~( B+ b$ B& C3 L
tag_t blockTag = NULL_TAG;
5 I' V. C+ f: Z# v+ j1 A, @ const char * radius ="10"; 2 C! t/ a3 `  ~' m) v
int smooth_overflow = 0; - B2 u4 p& c8 d0 ~. J
int cliff_overflow = 0;
9 V' a* Y* [; z$ v+ m- o- B, a) a int noTCh_overflow = 0;& k7 J# C0 ?& p8 }& O' s
double vrb_tool = 0.01;4 ~: S: {  M4 ?$ Y' X9 |$ G
tag_t blendfeatureTag =NULL_TAG;% L' G( M, X+ p. o" F4 ]# r
uf_list_p_t vertical_edges_list;/ f0 e  U# W2 c, N1 ^
uf_list_p_t edgeslist;# G+ }5 v2 v0 ?6 T, [/ N0 |
tag_t blockbodyTag;
9 I# k- w4 P% W; r% ? double firstpoint[3],endpoint[3];
- p' D8 I3 o6 r int vertixCount;  C0 x) o5 c  Y6 w
tag_t edge;
: y" r" h( X$ R# D; z1 B  M int edgesCount;
7 r: l) V+ A# V- h. P int i;
' _6 K* Y8 ~/ a; M) T3 E6 G char mymsg[256];8 y6 K; E% p5 |6 R: a+ r' w' Q4 h
int vertical_edges_Count;
0 e% g. n1 w! N UF_ATTR_value_t myattrvalue;+ h; _% @# o8 K9 s- U5 H
; g. v. O+ b9 P& w0 b8 K' t* O
    if( UF_CALL(UF_initialize()) )
* O1 U$ i' E' `+ }0 W6 W3 w' m    {
& U% Q# D/ ?6 S' B, ~# H5 l8 i        /* Failed to initialize */
; ~3 k! T' O- O        return;
9 R& _3 h3 N& o$ q- o  p5 m5 h    }
) a) h% v  p/ e6 W! U   
: I: P0 [- e1 o3 d4 m1 ]    /* TODO: Add your application code here */
" g, b# `$ `: o8 B# D UF_UI_open_listing_window();
" Q, s) O6 f5 T- v6 D //new part$ H; Q8 w4 D* f0 u! O
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
; a( F/ I; ~6 g //new block( b( p+ D$ P) p! k
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
% X8 Z. K# }6 X& @6 d, G //create vertical list" V; F. c9 u2 w: ]7 B5 M8 n0 ~. m" E
UF_MODL_create_list(&vertical_edges_list);//create list
: [( m; u3 @& k( P  y; v //feature -> body -> edge -> vertical edge
$ l& g: D6 J; O // 1 feature -> body
  |/ g2 L5 Y" R1 b. {* C  ?( v UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
' x& Q. R$ L" _, t+ t- @' ]3 E6 V4 Y //2 body -> edge
  Q  m! B8 J0 K+ P% S9 T UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);' T6 v! I% @* P5 a5 o( f- g" m2 C
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的  L$ r* B+ Q. `# h; N9 }
UF_MODL_ask_list_count(edgeslist,&edgesCount);0 ?* \: O% D7 w% T4 n8 M1 p
sprintf(mymsg,"edge count:%d\n",edgesCount);
2 ?/ O9 A; N1 y* N  Y1 G& \ UF_UI_write_listing_window(mymsg);5 l/ s) G2 E( L( v$ A$ ?
//edge -> vertical edge
/ E3 a- h4 E0 V' [' ?5 e2 u for (i = 0; i < edgesCount; i++)
# y  X. F, ]3 _0 z& ^8 ] {
% j9 L6 A+ a9 E+ \  UF_MODL_ask_list_item(edgeslist,i,&edge);
; j# Q% K9 O8 w7 O+ Y7 |% o% R1 Y  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
, ?. u2 X/ y. f" n1 f5 x  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
/ n6 I7 o4 F* l" u: D7 j  {
1 U: X5 \1 x- J+ w( p" F* z   UF_MODL_put_list_item(vertical_edges_list,edge);
8 i  {/ m. r& G( r# ]! F   //add arrtibute  Y6 \* j2 x9 A0 x; @
   myattrvalue.type = UF_ATTR_real;1 }) F& a0 D) c, Z% ]8 n
   myattrvalue.value.real = 10;
% ]) ]! N1 F& O; J$ |   UF_ATTR_assign(edge,"blendradius",myattrvalue);
' o1 z  _, y, x: h( Q0 B3 S  }# @) E  K0 h  y& W$ w0 y
}
3 [9 L. {/ A. }6 t. j UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
- t3 W0 ~! S9 L% Z sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);( f$ Z; Q! l$ C, Y8 `3 }1 o
UF_UI_write_listing_window(mymsg);
, {$ U- M0 N0 h0 Y7 V8 O6 F3 q # I2 r# n) p& I+ y+ C: p
//create blend(倒圆角)% I1 M0 x& l' T! Y) A. A! G
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));' Z8 [$ d6 c& \/ |% G
UF_MODL_delete_list(&vertical_edges_list);1 A% ?& s* |1 p9 m) r/ {
//change body color、translucency
8 O$ f$ c0 F% D$ f* O UF_OBJ_set_color(blockbodyTag,21);//186红;21白
3 r9 o4 N" \' B9 Z. }2 | UF_OBJ_set_translucency(blockbodyTag,50);
# y) X3 M- ]. G! T    /* Terminate the API environment */7 H$ |% Q0 d5 n( O" ^7 |% H; k) n
    UF_CALL(UF_terminate());
# K: }: w% x4 Z$ U# `) h4 Z}
) m5 x1 j! S& B' c! r% ^+ }/*****************************************************************************5 |5 V/ q! r6 i8 D: {9 k
**  Utilities
: }, t9 N' R/ H. F% C*****************************************************************************/. Q8 ~; R/ j& u  P# X
/* Unload Handler
6 x7 n$ I. O5 f# {0 J**     This function specifies when to unload your application from Unigraphics.
, W7 u2 H8 c2 b. N**     If your application registers a callback (from a MenuScript item or a8 F0 r1 i1 o; g6 H  r
**     User Defined Object for example), this function MUST return+ }, q/ C0 R% T
**     "UF_UNLOAD_UG_TERMINATE". */
; B+ z5 t. T7 G: c1 S8 d4 k0 Fextern int ufusr_ask_unload( void ): [: ]8 _: h6 w( K; q6 P
{9 h( R7 S. q! b& q: |$ o$ L
    return( UF_UNLOAD_IMMEDIATELY );" ^# x8 i+ i/ o+ [' ]1 }8 U
}: w1 i3 M7 w4 a3 p7 [9 q
- J# O6 @- J7 F" u5 ~, |, {
无标题.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二次开发专题模块培训报名开始啦

    我知道了