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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */; M( C' i. t  s: e9 Q
#include <stdio.h>9 L( @; S. C: D1 n
#include <uf.h>
( f/ _+ a- c& z#include <uf_ui.h>
& W8 @* o% @8 i2 I7 b0 h#include <uf_part.h>
; o% P: M3 v. Y#include <uf_modl.h>, v0 a* O9 Z. s+ K; {
#include <uf_obj.h>
- ]$ P$ d9 O1 f#include <uf_disp.h>8 R, B2 \/ r* r# ~- a
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
$ O( i2 e* o* I) X1 @static int report_error( char *file, int line, char *call, int irc)' p3 I# r, J* w9 ?7 G" D  e
{0 t  U  S: D2 E: n
    if (irc)# {3 C* x" ~) [. ?8 H5 G
    {
, z  y+ L0 H3 ^, p3 t        char err[133],
/ H* u9 g* b8 o% Z$ W; a             msg[133];
' N0 I9 @/ a# H# q        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
8 ?" o6 a5 j9 Z; c7 q: e8 P3 W% S            irc, line, file);# k, X1 Q2 f3 O+ z& N( y
        UF_get_fail_message(irc, err);
8 M( K) E: f  W# I        UF_print_syslog(msg, FALSE);4 T0 [8 o' C5 {
        UF_print_syslog(err, FALSE);
+ N; b! W0 J7 x/ w        UF_print_syslog("\n", FALSE);
- H0 u8 ]* [! l) d        UF_print_syslog(call, FALSE);
4 y7 q2 N& \- H3 K; D9 @* V% p7 f        UF_print_syslog(";\n", FALSE);
$ u( q$ F+ \! X+ J( V) T# m: Z        if (!UF_UI_open_listing_window())
4 k5 P1 {3 O3 Y& g. G        {9 w2 }. T( s: l% ^
            UF_UI_write_listing_window(msg);  j: G0 |- M' C3 V5 B# ]
            UF_UI_write_listing_window(err);) ^6 Z& z  [$ u: ?+ w) y
            UF_UI_write_listing_window("\n");( f0 J. A2 K7 K7 Q
            UF_UI_write_listing_window(call);1 M" O8 }) c, R# V& P1 x
            UF_UI_write_listing_window(";\n");
7 T2 }) }' r- i5 H5 p  G; F        }, e% U- C: U' w9 X4 S. J
    }
" c( t, [7 k4 l1 T; Q. \    return(irc);
: U+ U2 w, j: e3 O  l2 a( y}
! C4 v+ j! m9 r$ o4 c$ c# c# Q: j# V
/*****************************************************************************
, C/ s$ A% ]% `/ `8 q3 t**  Activation Methods
5 E- @% |; K# I! M/ _& E*****************************************************************************/' F0 U6 k9 }5 [+ f, |7 M4 c  ~2 h
/*  Explicit Activation$ _- ]( ^! x( a6 G) V% _
**      This entry point is used to activate the application explicitly, as in
' S8 c0 t0 z5 m+ R( O2 {3 L2 H**      "File->Execute UG/Open->User Function..." */4 z+ S% j7 @1 S* b
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
" [1 G3 P1 v8 j: W* U$ K, G" h6 X{
' }4 @1 x' A6 k/ J3 _$ C    /* Initialize the API environment */
* F) ^' F9 d* H0 g: D; l+ G tag_t partTag = NULL_TAG;" c% w6 c8 r6 x3 f
double coner[3] = {0,0,0};& [3 n; m7 u7 N: i$ {) S4 p: s
char *edges[3] = {"length=100","width=40","height=50"};4 v. o! b' o- k" l7 n- f
tag_t blockTag = NULL_TAG;; O5 O* z. b' y
const char * radius ="10";
# Q7 U- Y) V1 y7 E# @( A int smooth_overflow = 0; 2 L. U' `! o+ Z- |! P- ^& z
int cliff_overflow = 0;" C' H8 {- X- F$ }) @
int noTCh_overflow = 0;
0 I$ {0 D: _. o double vrb_tool = 0.01;
* h! M2 f% n! N. P0 x7 S5 g tag_t blendfeatureTag =NULL_TAG;
% i) O$ n& R6 O uf_list_p_t vertical_edges_list;0 @! ^& t6 ^  W2 q" C, o
uf_list_p_t edgeslist;
. A' P' s) |# |+ d# c9 L1 s# c6 ^, o tag_t blockbodyTag;& V* p+ }3 C" m8 p" R* j. G% T# r
double firstpoint[3],endpoint[3];- `. |% X4 ^0 l+ l
int vertixCount;% Q" H* ~# m6 u  G/ h
tag_t edge;
8 k6 G2 A( r3 _0 ? int edgesCount;
7 K) \8 L/ P1 i8 T, B int i;$ l* Q  h: s  d- C. w! Z  Q7 i
char mymsg[256];5 S2 h- P/ h5 k  m
int vertical_edges_Count;5 q; j5 d4 c9 U& G: B
UF_ATTR_value_t myattrvalue;
0 }4 k' A5 b) z9 r* R
( {# K. {3 l5 x3 @    if( UF_CALL(UF_initialize()) )
$ s- O& I/ u" L2 o( i    {! ]3 T# A% ^" X' n
        /* Failed to initialize */
: t: L5 Y7 K6 X        return;
0 A) u& Y5 m/ f  A- e9 I. y4 o    }  v4 l6 D3 E7 g7 V( K  s1 X) _
    % T8 B$ ]" F+ c; H
    /* TODO: Add your application code here */) E& q% \* Y7 J. r0 k0 T( m- ?
UF_UI_open_listing_window();
) m  c" v: h5 B) U+ R0 W //new part
1 b# Z% A' J- v( N; K9 z! n1 h( a  h! _2 Z UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
3 c5 r8 ?3 w; I5 h1 s //new block6 d* W3 z8 P. Y6 M) ?/ c
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag2 B5 s- b8 I; L* R1 ?! X$ @2 Q$ X8 z- T
//create vertical list1 U$ |4 }3 b- n, K1 y
UF_MODL_create_list(&vertical_edges_list);//create list- t+ Z1 M' n0 m; Y4 \& Z  }  M
//feature -> body -> edge -> vertical edge
) J+ H$ J+ V' H& o2 D/ o // 1 feature -> body; H# s; i9 v$ K9 g- t% z- n
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
+ t; q5 m8 `: J4 ?5 ^/ C: d //2 body -> edge1 C4 T1 @! \8 b0 v" N$ s
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);6 b6 Z6 k, B" m- B- _
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
. t. v) g: [  {2 \# f  z& J- R, s UF_MODL_ask_list_count(edgeslist,&edgesCount);0 _2 X- w8 @; r' V8 m) {% A# n
sprintf(mymsg,"edge count:%d\n",edgesCount);: X* e( \2 e/ ?9 e: Z' B  V4 H- b8 t5 J
UF_UI_write_listing_window(mymsg);( G3 ]8 D9 p5 q; t
//edge -> vertical edge4 D; G: S- V- ~$ n$ }3 u7 ]' e
for (i = 0; i < edgesCount; i++)
2 T7 l( k" J4 d' B- w( _ {9 A$ G- w# @4 f3 @9 m* w
  UF_MODL_ask_list_item(edgeslist,i,&edge);
+ X! U3 x% @1 T0 u  e  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);- \8 k+ c$ H& x" v: v
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2])); |& }. A- g3 ?
  {' U& P! E2 H* K1 A. Y
   UF_MODL_put_list_item(vertical_edges_list,edge);
# C% Y7 c! ]7 d+ G   //add arrtibute
& C+ R7 F# w5 ^6 ~' s   myattrvalue.type = UF_ATTR_real;4 K8 I* X8 e. q3 p, v: X1 `
   myattrvalue.value.real = 10;
0 A0 w1 L1 j1 O  x2 {* Q   UF_ATTR_assign(edge,"blendradius",myattrvalue);$ o& U  c1 M% `
  }
2 T! s0 `" {& o5 I }
, \/ T1 s% A5 ^5 i/ a2 w) f( R( [ UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
, E7 F( [% z2 ]' p, _2 w( A sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);$ ]* M( I, w; j
UF_UI_write_listing_window(mymsg);6 S+ Y: O/ b6 J5 y1 c0 ^

7 \0 w; R1 `% g3 C //create blend(倒圆角)7 O6 B* R. x  @4 b9 G1 z2 ?
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
2 n& n. z  V. C- j# ^: Q9 l UF_MODL_delete_list(&vertical_edges_list);
5 B' E- K* V' \! M$ v4 H //change body color、translucency
; F4 E+ k, A" c UF_OBJ_set_color(blockbodyTag,21);//186红;21白
, n: j- V, ~" D2 J UF_OBJ_set_translucency(blockbodyTag,50);, _: ]3 S$ N6 N* P
    /* Terminate the API environment */  c  M5 a$ M7 L5 e: \
    UF_CALL(UF_terminate());# s' y- Y3 ?7 |  c; \0 B4 I
}
" |- f1 J2 h$ t  y/*****************************************************************************& k2 r9 z1 F" K. B7 ~
**  Utilities( o+ l2 |' j& i  r
*****************************************************************************/; c2 D; ?6 _- o
/* Unload Handler
& a" G+ u  m/ p' l: \3 `" D+ I**     This function specifies when to unload your application from Unigraphics.$ m* N7 X. D  [* |3 k
**     If your application registers a callback (from a MenuScript item or a
' Z! [3 V7 n0 C% a( ]  a**     User Defined Object for example), this function MUST return: J: D1 q- `! m8 |/ q; y' O3 e* v
**     "UF_UNLOAD_UG_TERMINATE". */+ X3 _1 \- Z7 E8 x
extern int ufusr_ask_unload( void )
$ ]7 T) F" z% K% h' i{
! E6 O- R7 d4 }9 X    return( UF_UNLOAD_IMMEDIATELY );6 F; X1 B9 @# p) f2 v, a
}
0 V, {2 X0 M8 C
$ Q7 z, V- e8 D( i1 \: l( k% i% K
无标题.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二次开发专题模块培训报名开始啦

    我知道了