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 3055 1

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */1 F) Y! u5 P5 [! s8 u0 k) ?8 ]/ H
#include <stdio.h>0 `( {4 N4 ?( b5 Q* @
#include <uf.h>$ `+ ^+ d4 I8 K: u7 J, p% y8 B
#include <uf_ui.h>8 U4 {" g  a1 K
#include <uf_part.h>0 g+ A! n1 I: |8 H9 L
#include <uf_modl.h># W7 }' K  m4 u6 ~
#include <uf_obj.h>1 y6 ]" a' ~) V4 l9 }
#include <uf_disp.h>
" p9 {, e0 n( M# [. G  e#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))), N# b; y2 k6 [# U' ]
static int report_error( char *file, int line, char *call, int irc)/ ]6 {# A* c/ e, ^9 ]
{% y: c: N  g" X0 ~2 }3 }9 }8 I
    if (irc)1 h2 N4 t" A6 }. r" V; S
    {+ ~7 J* r/ q0 i, x
        char err[133],, d5 I* G* r- F
             msg[133];' a- F3 G5 j2 n  u
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
8 V8 L' c9 U) o1 A            irc, line, file);
- c' }' R; u* C3 e* P+ E' U/ i8 J, s        UF_get_fail_message(irc, err);
) z( \4 q8 z$ m: R2 \7 G. c2 m: x        UF_print_syslog(msg, FALSE);3 s- ^1 j* m' m) ]+ }! t* c- d9 o
        UF_print_syslog(err, FALSE);& m+ @# M: ~5 a' P
        UF_print_syslog("\n", FALSE);9 J; O/ O) C5 G( S
        UF_print_syslog(call, FALSE);( d+ K# ?& c; i9 n- t
        UF_print_syslog(";\n", FALSE);
0 C8 y, m  D1 Z0 V        if (!UF_UI_open_listing_window())
" C$ E+ y' R" l, m8 X        {
( {% ^$ G5 h8 Z+ f  I+ Y            UF_UI_write_listing_window(msg);
1 g9 B. O* s( s( s$ M/ L2 w            UF_UI_write_listing_window(err);% h) N6 y: L/ A
            UF_UI_write_listing_window("\n");
" U# M3 v0 u. e7 H. a5 ~            UF_UI_write_listing_window(call);6 Z4 T0 e, z2 I2 L9 j
            UF_UI_write_listing_window(";\n");% V0 H1 U& b1 R6 B& \+ e; p" `
        }
8 ~  B/ h; ]( ~1 e8 e) k    }
" ]7 T9 S  [( P# q& x) N    return(irc);/ ?6 g% K# B( b. ^; `: ]
}
6 Y  z  f3 c/ Z
8 Z' X/ ^' V1 F/*****************************************************************************/ R- @; Q6 Y, v) N* l
**  Activation Methods$ t; V8 b& C$ B& ]: |
*****************************************************************************/
  M  E, ^: a7 ]7 I& H; |5 f& ?" g/*  Explicit Activation
' A5 f+ {7 x3 p) w) P3 i**      This entry point is used to activate the application explicitly, as in
$ F3 a' E$ Z8 w: @0 ^5 T**      "File->Execute UG/Open->User Function..." */
8 f! j' g+ S: e/ ?extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
' j( ]7 C2 Q' ]+ j: V3 E{
  [8 A8 {* `1 W' S3 x: L$ [( j    /* Initialize the API environment */
6 a6 D- q* h) d tag_t partTag = NULL_TAG;
# E( `2 j# d) N& z double coner[3] = {0,0,0};
" }4 O0 H/ }& O7 p6 I7 Z char *edges[3] = {"length=100","width=40","height=50"};# `8 H, [. G+ k/ K: p
tag_t blockTag = NULL_TAG;" c- l. F4 _1 }7 Y" `
const char * radius ="10";
9 T1 D: t6 n) ~ int smooth_overflow = 0; + j6 m4 Q5 \! E) \, }  h( D
int cliff_overflow = 0;
9 ]: g6 m6 S5 \# c6 A; ~ int noTCh_overflow = 0;
8 i/ _' S1 O. S: s+ ?/ k4 G double vrb_tool = 0.01;( h& R3 Y( B" V/ l0 w" c& c1 K
tag_t blendfeatureTag =NULL_TAG;5 M* w2 H8 Y0 [8 V
uf_list_p_t vertical_edges_list;
, y: q/ I8 X/ P" G8 }+ b uf_list_p_t edgeslist;
- e9 Y5 x& p  ] tag_t blockbodyTag;" n% m7 ?9 o& t
double firstpoint[3],endpoint[3];: C- z8 w, u' Z) j
int vertixCount;9 b& o- i1 Z7 ?% d" `- B3 r
tag_t edge;
# k* k- _$ B# i int edgesCount;# I7 E  |$ W4 D4 v
int i;
4 A: C6 z0 o2 K+ I9 H, Q char mymsg[256];; l/ o  q0 f- z. ~
int vertical_edges_Count;
7 O6 X! V' p5 n( Y/ U UF_ATTR_value_t myattrvalue;
8 E; M9 s1 o8 I( U8 V! Q0 U5 b- Z3 K+ {
    if( UF_CALL(UF_initialize()) )   }, f- T! |& ?, [; x: V
    {' N6 ?! z: b% k0 Z
        /* Failed to initialize */" A- S0 |2 o$ F& P
        return;- t6 ^  ?  b, o9 o# J" J/ y( k
    }0 q* g2 c1 w  M. ~! s
    , @# N& J- K% O  [! c
    /* TODO: Add your application code here */; X( G* S, T- I( C; k6 ~
UF_UI_open_listing_window();
, j7 P7 q/ `2 s6 T0 p //new part# x6 |; t6 k. a* }+ ]9 t
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
7 D& o" M5 C- w4 H9 O6 f //new block1 S4 l/ _  J1 r. e
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag" }) e# z# e6 R2 ^1 V# U
//create vertical list
$ q+ X- n' _( |- S9 O7 w& u* T UF_MODL_create_list(&vertical_edges_list);//create list: f# D8 ?0 a* N0 Q3 ^3 V
//feature -> body -> edge -> vertical edge1 u# l/ G  t8 Z/ |
// 1 feature -> body
( X7 r" [. Y/ d! J" [) a UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
/ Q/ `3 s) x* {3 k+ W //2 body -> edge. y+ o7 `7 ~2 ^2 N+ h/ O# g
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);/ Z( J0 h' N* M! o# t6 f% M
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
1 `, t; d9 Z' j$ o9 E UF_MODL_ask_list_count(edgeslist,&edgesCount);: e6 k" m6 M' W( {9 F0 Y6 p3 Q
sprintf(mymsg,"edge count:%d\n",edgesCount);  F- N1 ]! u- c; G8 F" Q( O
UF_UI_write_listing_window(mymsg);+ B" m& p8 n3 L5 l+ ]4 {( t5 p
//edge -> vertical edge
2 _# V- H# G7 z5 g( E5 s for (i = 0; i < edgesCount; i++)
/ o! K0 U1 Y- t2 V% L6 R2 t: R/ K; ?7 i {
1 \  Q! \1 l# {' n. {2 @  UF_MODL_ask_list_item(edgeslist,i,&edge);/ n! J, V  s# b, @7 p
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
: j1 X6 I; s" O, H$ }  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
4 O; U- Q' g' y5 ~) b  {( h9 X: Q* w/ |; o  |5 g1 f
   UF_MODL_put_list_item(vertical_edges_list,edge);
' ?) _% J2 N; }) H+ d   //add arrtibute9 w4 `& t9 ]( D3 R6 P
   myattrvalue.type = UF_ATTR_real;
4 s0 _6 b5 B" n9 T! G1 k% A   myattrvalue.value.real = 10;( C/ ^* h8 W3 [
   UF_ATTR_assign(edge,"blendradius",myattrvalue);  k5 B! @: B! k
  }
! c5 Q8 b6 A  S" L. \- ^ }. {1 m( d$ N6 E0 w
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
5 q4 ]3 _$ N  K0 [( Q/ g sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);3 p, k; T- c" K
UF_UI_write_listing_window(mymsg);
* p) y* U$ y2 Y6 e8 E6 o, H
9 _) X$ C; j* m: | //create blend(倒圆角)* N! k6 v$ k9 ]0 u) V7 K
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));8 B. u$ k" \/ t& s0 C5 X' m
UF_MODL_delete_list(&vertical_edges_list);4 X4 n; C0 v% L) n
//change body color、translucency  P) Y, o# G) h/ i/ A
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
2 p/ r# Q+ o" ~" ] UF_OBJ_set_translucency(blockbodyTag,50);. X% q: I- M, h& M6 m
    /* Terminate the API environment */
% M4 o7 e/ c  ]. }$ @  s/ r1 w    UF_CALL(UF_terminate());2 u% f, x( X2 A& _5 b. a/ v# S
}
, j$ u7 _) G; g$ ?# Z3 y/*****************************************************************************6 w% y) c: x" ^: D' p: u
**  Utilities" V  y8 u" g1 f) _, j
*****************************************************************************/" q) E9 @, l; y
/* Unload Handler% ?2 }' x8 [; U' z8 v
**     This function specifies when to unload your application from Unigraphics.
! I3 e3 {/ ]5 D+ S1 g**     If your application registers a callback (from a MenuScript item or a; U% W/ A# p9 D$ d1 h7 _) F
**     User Defined Object for example), this function MUST return  w; }4 l8 `- p* W
**     "UF_UNLOAD_UG_TERMINATE". */
5 x  R( ?& X( t# V" Z7 W0 C' yextern int ufusr_ask_unload( void )" n4 [9 p( h( z
{- N( ^6 |% [% S; j% Y* m
    return( UF_UNLOAD_IMMEDIATELY );5 O, p. g: g* e; T* i7 S& K
}
2 N2 \/ x) ]  Q8 \2 i! Y8 y+ t8 n: H
无标题.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二次开发专题模块培训报名开始啦

    我知道了