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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files *// S- I# k0 e7 v+ U. N
#include <stdio.h>
; ?8 ^" c; G( I#include <uf.h>) c/ A' e5 r8 K, k+ x
#include <uf_ui.h>
+ R0 p: D  b; ]/ j5 w/ a#include <uf_part.h>& }: r& }1 n' ?7 E3 k, }3 d
#include <uf_modl.h>
3 ~8 O' X* ~! \& S! ]  K: b0 F#include <uf_obj.h>
8 H! G0 g) U+ }0 P6 B8 z, P, q#include <uf_disp.h>0 ^, U$ |2 T8 ?, W2 `$ X4 I
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
; g5 v/ T8 Q; x% |static int report_error( char *file, int line, char *call, int irc)
( b- |; K1 [9 N! O- b; O{
. n- E) g/ R8 G1 Z# V% m) t    if (irc)
) [- `( t0 ]/ a8 ]    {0 I  i, I' }4 Q4 Z6 k) G+ K# J3 ]% W
        char err[133],& l1 y& h" w0 ]+ A
             msg[133];
% f( Z' J# c8 p7 J" E% z        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",( W- o! m% y, {6 L; |  {" c$ I9 P
            irc, line, file);6 R4 x1 Z. n4 y4 B, H
        UF_get_fail_message(irc, err);8 o! Y% R( q; I  s6 a( D& g
        UF_print_syslog(msg, FALSE);5 c( B0 M3 q) ^9 u& b' N
        UF_print_syslog(err, FALSE);
! W) G. x: u, D: D+ [        UF_print_syslog("\n", FALSE);  c; o$ q2 m2 a
        UF_print_syslog(call, FALSE);) Z! w) Q+ d( h& O
        UF_print_syslog(";\n", FALSE);
$ Q; i; d+ A( r( S1 I        if (!UF_UI_open_listing_window())
+ F  ~! B: T4 D4 o% [1 o  j        {% l2 v; x# y$ z, Q8 R+ g
            UF_UI_write_listing_window(msg);% Z. M1 z: N6 E# i- F& @! h8 D
            UF_UI_write_listing_window(err);
2 q+ O+ r  U2 x1 W3 Y2 G            UF_UI_write_listing_window("\n");
1 \: h6 B6 Y6 W8 S  ~% o; D            UF_UI_write_listing_window(call);6 T, c/ M- s1 I' b1 b- {8 M
            UF_UI_write_listing_window(";\n");
. x+ `+ J# a# s) ?6 l. P% a        }* C4 a. j; j9 ~5 O5 C
    }
2 ^/ ^2 r: `* f5 E9 Y    return(irc);! T# R. n8 g% D# M
}$ P$ Q7 ^% U8 O; |/ l2 T# Q
3 Z  b) p/ o$ j# }* P' p
/*****************************************************************************
" ~) ^2 y- ~5 Z8 ]**  Activation Methods
" _: W  v) f. d5 [5 o*****************************************************************************/
; `  r, e! z6 H0 H* M/*  Explicit Activation( l, |6 r+ P' s$ w% ]( U
**      This entry point is used to activate the application explicitly, as in
/ E+ \* g9 o5 G! Q  ?  }1 k**      "File->Execute UG/Open->User Function..." */& K, a* h, @; h2 ?, u6 E
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
- z* ?9 D; M5 V$ o{
/ ?" F! {6 N0 w    /* Initialize the API environment */' k. n% J' Q$ G+ i! g+ ~6 \! d8 y8 C. q
tag_t partTag = NULL_TAG;, r% a& J$ I; R1 @7 S
double coner[3] = {0,0,0};
! Q  m9 Q/ J: R1 Y char *edges[3] = {"length=100","width=40","height=50"};
. e- P' S) i' C$ {7 `0 s8 u tag_t blockTag = NULL_TAG;
' V2 P0 P$ W$ ?9 n. H7 N const char * radius ="10";
6 B# F: E9 J3 T, [6 ^7 t int smooth_overflow = 0; 1 ]% L" o9 Z) e6 v2 |. b
int cliff_overflow = 0;# Y  }$ ~" r& [6 ~( I  i1 _
int noTCh_overflow = 0;/ u& d; Q! N0 g0 ]! p
double vrb_tool = 0.01;
( R! z  A6 K% l; S. Z! Y2 d tag_t blendfeatureTag =NULL_TAG;
. q5 N5 @0 G1 Q2 L' t, q uf_list_p_t vertical_edges_list;
4 c2 Q, Q. v  X2 J uf_list_p_t edgeslist;
7 |4 [" y4 M4 O# d tag_t blockbodyTag;
) Z6 h. Y8 v) i/ }* l; ]% i double firstpoint[3],endpoint[3];7 K5 A4 K# b6 g
int vertixCount;0 q0 G5 {+ _6 r* {, V
tag_t edge;
: s4 p, W( e# l int edgesCount;0 e8 ]% ~  m5 W
int i;
9 A; m- S2 D2 l char mymsg[256];
& g& p9 p2 \0 S4 p3 Q1 ^ int vertical_edges_Count;& _& _* w: e6 w$ t) x
UF_ATTR_value_t myattrvalue;2 ^( j1 n- P' [6 W2 o

6 f# h: r0 e! q, s8 t3 C9 G    if( UF_CALL(UF_initialize()) )
; Q0 ?% R) ^0 x2 b  @    {
$ k% y5 T( s1 A1 h  `6 p9 c7 Y        /* Failed to initialize */
3 c  Z' D1 |/ d        return;
5 M  I+ }0 v9 W. S, k    }
/ T: L7 j! n- q" M: n    6 b' W& Y  K9 i# a) s
    /* TODO: Add your application code here */
5 b9 N$ n) [9 r% J! R/ h UF_UI_open_listing_window();; O5 W- F+ R" r& M
//new part
; F, \% c0 H8 @2 q8 b" t6 K: T UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
: R8 W! |1 f- @6 B# ~ //new block
, E2 P3 I8 }* ^" n- ?% _% f/ m) _ UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
. n+ S" d  ]# `0 B  C# x //create vertical list& r9 I- D' d3 H/ e4 A
UF_MODL_create_list(&vertical_edges_list);//create list
, U. `" {! ~6 \& r9 M! B* f5 { //feature -> body -> edge -> vertical edge+ o2 g' K4 @9 D# I. D/ G
// 1 feature -> body
* V! |: D8 R; ?7 m UF_MODL_ask_feat_body(blockTag,&blockbodyTag);8 N2 a* {7 a1 k6 M+ r7 f3 `
//2 body -> edge1 J) J9 a1 s$ i+ {
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);9 z. w6 f6 |3 d" W+ G
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
) t0 l2 Y+ @1 w, y; ^' _# F$ G UF_MODL_ask_list_count(edgeslist,&edgesCount);
3 W5 [3 g6 G& i1 q. `6 q$ R sprintf(mymsg,"edge count:%d\n",edgesCount);
3 i% a0 }% O- o UF_UI_write_listing_window(mymsg);
5 w6 I0 B6 [& d# _4 v //edge -> vertical edge) e0 j( W; h1 j
for (i = 0; i < edgesCount; i++)
# [/ L) J9 l8 ^& W4 E {3 |  E" e+ S8 J; |3 Q
  UF_MODL_ask_list_item(edgeslist,i,&edge);
2 j5 [  t% @+ n+ B: \0 R  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
2 G# A4 I8 f* J* Y: A* s  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
; }% }' Z0 ~) b  {9 [( s$ X% j% ^& g) @& K% c
   UF_MODL_put_list_item(vertical_edges_list,edge);7 L' V/ X9 J8 }9 R; ?
   //add arrtibute& M6 z" X# Y& w" N
   myattrvalue.type = UF_ATTR_real;
9 }' Q/ ^4 ~& H; V; p   myattrvalue.value.real = 10;
) U# j. s, M6 B! Q  ^: M   UF_ATTR_assign(edge,"blendradius",myattrvalue);5 R3 H0 n; z5 B; [9 T- l
  }
4 Y' ]) K' e+ G* n. j: {: k4 k, ] }( h! E3 h% j9 E+ p: t  N
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);: A2 b9 G% v2 u+ h& ~. @- X
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
, r- C/ j" h( | UF_UI_write_listing_window(mymsg);5 ~; a" h) {" `0 l' ~
- ?& `" ?2 x7 [& q2 w7 I: T
//create blend(倒圆角)
+ `$ q* A: l' n# O3 G" Y, e) p UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
0 A0 m$ r" b  g3 s+ |& B8 F, P) B" {6 j& s UF_MODL_delete_list(&vertical_edges_list);
$ Z# n% L" G! v //change body color、translucency2 {# G) f* f" w9 `
UF_OBJ_set_color(blockbodyTag,21);//186红;21白# w7 b$ I: ^6 b  _* N6 I
UF_OBJ_set_translucency(blockbodyTag,50);
/ K" \9 U: a" g/ J- g+ [8 P    /* Terminate the API environment */- A7 H- B. N& h0 `& n
    UF_CALL(UF_terminate());
7 |7 ~1 `$ M9 y1 ~}* x1 A0 R( \9 r1 P6 l5 O
/*****************************************************************************
3 {( W: s% j+ B**  Utilities
$ h8 M! t1 R# M% ?; Y*****************************************************************************/
* V5 [" Y/ @( Q( ?/ J/* Unload Handler% a! [. l( k7 w7 Q0 A5 X- d* H
**     This function specifies when to unload your application from Unigraphics.) H6 s2 F, Z4 n5 y& j
**     If your application registers a callback (from a MenuScript item or a
( {0 ^% v/ d  P: U& l: u**     User Defined Object for example), this function MUST return) Y2 q" X" @, u) S* H2 L' A
**     "UF_UNLOAD_UG_TERMINATE". */2 W4 P- B4 O9 O% U0 `) C3 r0 D
extern int ufusr_ask_unload( void )- F- L0 l" F- \
{
. }0 K+ o9 }/ V% s$ H2 Q8 n0 w    return( UF_UNLOAD_IMMEDIATELY );
, l/ Q$ ]% z6 n5 Q" u( R2 F}- t2 N' O6 L5 k

! N" _6 Y& t" T0 z; |3 E, G) _2 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二次开发专题模块培训报名开始啦

    我知道了