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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
: a. F$ ~- \5 S8 e#include <stdio.h>
$ K9 Y# ?/ O9 a9 h) z! @7 T3 g#include <uf.h>: g% W9 l/ X/ w( {' `5 M
#include <uf_ui.h>
+ }- Y, q% k1 H8 z/ i' z0 P#include <uf_part.h>
8 a8 V3 X9 I0 p. E9 u; [5 `, h#include <uf_modl.h>4 F8 E7 n  X& k4 W) _& \
#include <uf_obj.h>
3 w9 O/ b/ m0 n8 T1 U#include <uf_disp.h>/ j: s6 x( _. k  q" u- E3 v
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))4 I, |/ x8 ]( P; |, U4 w. g
static int report_error( char *file, int line, char *call, int irc)6 j  `/ X5 b% x$ ~# b
{) K- y7 a" s) h
    if (irc). |3 W, A$ K* ?& h
    {& t$ ~! O/ B8 h% ^4 E
        char err[133],& g/ T. G+ r3 m# ?# V8 U/ R0 N
             msg[133];6 {8 J) y& L# N- o* m6 k3 F! [
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
# V0 ?2 t1 R: D2 U  F* m6 w            irc, line, file);
1 }( n( ]$ Z* a1 j& B# A; t4 h" @( m1 E        UF_get_fail_message(irc, err);9 ?3 N8 c/ p) n7 z
        UF_print_syslog(msg, FALSE);
* D' F& S* M& a        UF_print_syslog(err, FALSE);
: ]9 u" g1 G+ I        UF_print_syslog("\n", FALSE);- @! Z+ q' F( r- c# y/ ?3 l, u6 J4 m+ j
        UF_print_syslog(call, FALSE);
) |1 r3 o) ]7 q8 m: k& v7 Y        UF_print_syslog(";\n", FALSE);
: U" I6 Q  e2 a# S, m3 Y0 I        if (!UF_UI_open_listing_window())
' |- t9 H4 |, h; R8 m# q9 C& D        {0 I4 x7 i) ~1 J
            UF_UI_write_listing_window(msg);- X( B+ G+ Y+ j' ?
            UF_UI_write_listing_window(err);
" s. z3 @- w4 y0 m            UF_UI_write_listing_window("\n");* Q$ p# ]  m2 t8 v+ t
            UF_UI_write_listing_window(call);
  K  t( v+ e' u' I* A            UF_UI_write_listing_window(";\n");+ X% `; _: h, A4 Q
        }
! ?  d, L' f9 C8 |6 L4 z. D    }
, M5 e* E6 Y+ G    return(irc);) S0 C# h( G9 I8 l+ U; k
}( H1 G/ t) T8 q. R2 z
, x/ g" c7 s# u0 F( j
/****************************************************************************** x5 I: m+ O2 a; s: N* ]" S$ y0 B9 q2 P3 x
**  Activation Methods
4 k& M0 H( U3 i0 J( f*****************************************************************************/9 o! Q0 b! T1 |: k5 x
/*  Explicit Activation
- \0 T; q7 x: e; {**      This entry point is used to activate the application explicitly, as in
4 Y1 T, x3 j; U# \**      "File->Execute UG/Open->User Function..." */. p1 J  n5 W3 h
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
0 j% Q& k; T, I2 {* \. T8 K{
) u; F' l* C* m. E    /* Initialize the API environment */. d2 P& h) ~5 L4 g8 g7 _
tag_t partTag = NULL_TAG;
$ K4 J8 |. q2 G+ r double coner[3] = {0,0,0};) F- ~* Q$ H0 g2 g6 j6 `" l# A
char *edges[3] = {"length=100","width=40","height=50"};
1 l- o' p# s* X( f' [) j tag_t blockTag = NULL_TAG;/ f0 x! v# Q- R; y
const char * radius ="10"; - a( X6 ^4 u0 }
int smooth_overflow = 0; 1 k& h; M: ?2 H
int cliff_overflow = 0;
+ G3 A: O. j, K9 Z' I1 G int noTCh_overflow = 0;& {5 k. m- M' s: i0 O* G3 U- e
double vrb_tool = 0.01;
% O9 A# X5 O% {/ W tag_t blendfeatureTag =NULL_TAG;
. P5 O9 W8 g2 j* e: f7 V$ b2 d uf_list_p_t vertical_edges_list;' D' o/ [" ?) n6 k# k( M% @
uf_list_p_t edgeslist;
- j/ ^9 m6 |) e; o1 d: F tag_t blockbodyTag;
$ k" X' M( O2 Q" I: _4 K double firstpoint[3],endpoint[3];
/ I0 C6 A1 H  P int vertixCount;" g* A* s$ x' h4 E2 j' t/ ~$ e* k( x
tag_t edge;
9 `" m! }2 p# d1 K$ d int edgesCount;
& n: i! \& J' t4 f int i;
7 t1 J" @" J$ U8 U char mymsg[256];; T" J8 C  }- |2 @# ]
int vertical_edges_Count;
& c! t$ D: G* k8 B* V UF_ATTR_value_t myattrvalue;
+ e4 @7 n, h+ ~. }! V" h/ r
# K. p/ J; }- P. A! N$ O    if( UF_CALL(UF_initialize()) )
% W" D( I$ E: U1 X# o2 _) [    {
  \- J: f, ?' O+ f7 M- T        /* Failed to initialize */
8 z9 ~9 }; N( o6 q% C) H8 l* X& l        return;& k: y3 y# J' q/ Q* w6 V, c: E( r
    }
2 b/ G; L6 P/ Y* x3 W   
7 \- V% v7 }6 Y    /* TODO: Add your application code here */
  n0 F0 a5 P2 }" A: w UF_UI_open_listing_window();
( P$ _& h( I, v- E //new part
* Q/ N" {/ t: l( b8 X6 A" |) n UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
" p1 F; w3 d6 I8 B8 W. U //new block' f6 L7 J% c& F7 j2 N1 I
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag. y# M7 e' ?0 G( |! [
//create vertical list
1 Z" T$ R4 \& b' _& n8 D9 q( e UF_MODL_create_list(&vertical_edges_list);//create list% w+ [: T! b  r4 j! I
//feature -> body -> edge -> vertical edge: X6 s" p# u  O8 V, y2 n
// 1 feature -> body
8 U3 h/ R: A: s! Y  V1 K UF_MODL_ask_feat_body(blockTag,&blockbodyTag);& S. \9 [5 u' I, Q, k
//2 body -> edge
8 G% b  Y2 O( i UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);- r* r4 s! R/ H5 c/ [  B/ k2 R
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的4 C5 L  C9 b+ L* x4 n
UF_MODL_ask_list_count(edgeslist,&edgesCount);
* _5 w: S5 a! `- I  E5 x sprintf(mymsg,"edge count:%d\n",edgesCount);$ ^3 l; p! S* E# f( g5 E6 g
UF_UI_write_listing_window(mymsg);
) f/ v5 W" X9 E" g: g //edge -> vertical edge5 k1 h* D1 C& ?1 r+ n1 O/ x
for (i = 0; i < edgesCount; i++)
/ T+ t& `8 H3 e! t8 L, I {
3 T% B) {( w4 O# b  UF_MODL_ask_list_item(edgeslist,i,&edge);
1 S0 P- [+ i4 }# ?. X6 {0 Q% L  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
& b5 ~) i8 z7 P3 A" `  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))& k/ ^$ C8 a$ W
  {
1 L/ V; B! ~' v# N   UF_MODL_put_list_item(vertical_edges_list,edge);# [9 i+ J5 i6 ]( A$ }; Q
   //add arrtibute
* q7 H1 b8 d2 F* m2 m   myattrvalue.type = UF_ATTR_real;& ~7 s* r" j. S5 c, f# e0 e
   myattrvalue.value.real = 10;
2 v6 {5 Y2 N2 w+ [4 V$ ^, s   UF_ATTR_assign(edge,"blendradius",myattrvalue);2 C- x9 H) k3 @0 E* d* M1 N
  }
& y$ I0 S8 L+ q4 W. G6 J: ` }
7 [1 H; D) `+ ?+ O UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
- b0 [  B- @, s- A. p$ k1 y4 M sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);) X. e6 F, u& M9 g
UF_UI_write_listing_window(mymsg);
# ]$ B. R/ e6 \1 X5 k  p) o
. r1 U0 |* W# n$ w //create blend(倒圆角)
, n  C" n3 N+ B+ q; h UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));3 h' W6 i' A; ]2 N5 b
UF_MODL_delete_list(&vertical_edges_list);. s0 I7 k) _4 {$ t" j/ ~
//change body color、translucency1 p$ `0 L" S% f5 s$ n6 _
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
% e* \4 d% b" G- v) K UF_OBJ_set_translucency(blockbodyTag,50);
! Q$ p) ^- _2 y) e0 F: [" [* i  y    /* Terminate the API environment */
" e8 `" m9 Z4 \" N! ~; r4 ?    UF_CALL(UF_terminate());
  _; T: x: q# ~1 `}
5 O& l2 V/ v6 [& q, p- N/ n/*****************************************************************************% t, q: W3 P, f& o* V. [0 E
**  Utilities
; r* C- c( h9 d) `7 D. W*****************************************************************************/
  w- F6 B. Q8 T/* Unload Handler
9 c: s6 O1 j5 n% g+ Z9 e**     This function specifies when to unload your application from Unigraphics.; X+ V3 G0 R) D- r$ x  l6 k
**     If your application registers a callback (from a MenuScript item or a  k5 e- ^5 c! Y# ~* s
**     User Defined Object for example), this function MUST return
6 C1 P6 @7 m' L**     "UF_UNLOAD_UG_TERMINATE". */5 V# K! B( Q* w, q, ?
extern int ufusr_ask_unload( void )
' `/ ]- `6 s, H{* T; T, b/ ~5 B, q
    return( UF_UNLOAD_IMMEDIATELY );. O, e. N/ b% N" n1 V( L& M! W
}
+ I) l# P4 T7 U
- m  O+ L+ A$ p' t$ N
无标题.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二次开发专题模块培训报名开始啦

    我知道了