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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */# I8 b7 q+ }& S# h
#include <stdio.h>
0 f7 _6 f% ?6 U; x. n- |#include <uf.h>
! ?9 r# y7 |$ I, Q0 `7 s#include <uf_ui.h>
+ D* q' L6 _( P  Q5 t/ b#include <uf_part.h>2 ]2 F& ^5 j) {: ^
#include <uf_modl.h>! S; K- x4 o! K: c2 @' H
#include <uf_obj.h>
/ G' O, K0 ?2 {5 E  W# g( O#include <uf_disp.h>
% r8 Y* u' l, q/ {* U* i#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))' b/ l8 L4 n/ C7 p
static int report_error( char *file, int line, char *call, int irc)
( O4 j' {5 W9 f# R{
2 q) M2 n0 }0 A; T4 p% R    if (irc)% G7 y. T2 l0 t
    {
% V: N+ N+ {% p* e$ |: Q: K' S        char err[133],
; N" Q7 \% G% c$ g  p$ k. U. t' x1 R             msg[133];2 V5 ]0 c  h- `, Z, |. \
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
# J# ]" i: d" g% B6 |            irc, line, file);  H9 h. h- s7 c# W9 e+ [. `
        UF_get_fail_message(irc, err);1 Z9 J7 @5 O- \/ R! ]4 h
        UF_print_syslog(msg, FALSE);
) p, P, k5 o" S* A        UF_print_syslog(err, FALSE);
/ G% t/ g( T- d7 V% T        UF_print_syslog("\n", FALSE);- J  @# E9 L+ p1 Q9 h. g4 f
        UF_print_syslog(call, FALSE);$ T- _: v. p' H. q/ z
        UF_print_syslog(";\n", FALSE);' z4 d  G( m6 F, ?3 f3 B4 h2 n
        if (!UF_UI_open_listing_window())
3 S0 T; l0 C* z8 L( ~" y        {/ @6 D) J, |! F& Z3 p
            UF_UI_write_listing_window(msg);$ o6 ]0 W# Q; u9 D# |/ W; u
            UF_UI_write_listing_window(err);0 Z2 k7 i- u4 E, e4 `
            UF_UI_write_listing_window("\n");/ C  w, `" b0 t  ?$ ?' K% p
            UF_UI_write_listing_window(call);
7 x" j9 t' p5 _  b# h6 b0 ]            UF_UI_write_listing_window(";\n");3 @- X9 y! Z$ `! `- D  @+ v
        }4 ~6 G& }6 |7 H2 \
    }' a1 u( v  a  c2 b9 o
    return(irc);
8 i2 k9 V( U5 H8 i}
# l# f. D( K% a0 K3 V% f
# ?# T3 }+ M! z/*****************************************************************************
* W- ]% _7 Y& U/ V9 A**  Activation Methods' {  r% C2 @9 ]" D3 O
*****************************************************************************/
: B* d* u* D; j/*  Explicit Activation
% ~8 h: P. t$ T4 Z8 x& X( A**      This entry point is used to activate the application explicitly, as in
" y9 {+ g6 T" A. ?% X**      "File->Execute UG/Open->User Function..." */+ V7 i( \8 e' F# Q* f3 N3 P
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )% M: ?" R6 o- ~! v3 T8 M( l
{
+ b8 D' o* ]% E* W$ w    /* Initialize the API environment */
7 D) S' ]: S+ T/ x; i tag_t partTag = NULL_TAG;
5 F) D- S) G" c3 r double coner[3] = {0,0,0};
! l  A7 X1 s5 P+ t0 g/ J char *edges[3] = {"length=100","width=40","height=50"};, K6 |) A% w5 u7 v
tag_t blockTag = NULL_TAG;, n% i$ j4 V0 S* }% M  _# e
const char * radius ="10"; + }+ m9 X) A- D
int smooth_overflow = 0;
3 g/ H# i- @+ W5 t int cliff_overflow = 0;. z: j  f$ \" y: c/ w7 [
int noTCh_overflow = 0;
- {* G$ J  l9 |& P. A; `8 M double vrb_tool = 0.01;
6 E2 v* H" N5 T/ g+ d- X6 Q0 R" ] tag_t blendfeatureTag =NULL_TAG;
. N1 Q  Z# N# G  j6 o: h uf_list_p_t vertical_edges_list;' s" }7 J; I# a; X( B( i$ z9 x7 b3 T1 J
uf_list_p_t edgeslist;
8 U! Z. z& w8 R) Y tag_t blockbodyTag;, ^. b! o7 H! `
double firstpoint[3],endpoint[3];( S8 ]  _& S1 W* n0 i3 V/ F/ H
int vertixCount;% F) U6 ?# b$ w8 V, a/ ~
tag_t edge; - Q) K, O$ }# q# `. s, S
int edgesCount;
+ {8 g- l/ [' i4 Q( U1 ?8 |3 t int i;# r; M! w7 {. V! |$ i
char mymsg[256];! f* r9 S$ Z! g( ~* o0 K" W
int vertical_edges_Count;
, T' j: V8 \# O, P5 z UF_ATTR_value_t myattrvalue;
) @5 {. T$ ?% {6 v  ?
, s! [; _! S5 A! [3 F9 _* D    if( UF_CALL(UF_initialize()) )
' g; T  o- r. s( L. F    {/ x$ a# |6 e" u+ x7 R
        /* Failed to initialize */& E& B: o2 C9 V# j
        return;
0 ?8 X; t5 p8 N$ s3 H! F) \7 e    }) i' Q5 U8 a2 A/ P' S
   
8 L2 o  O- i% G, C; H% S    /* TODO: Add your application code here */$ a7 s* \7 \: ~8 l4 i& l
UF_UI_open_listing_window();8 N* X1 h3 a, G; u
//new part
: C; b) O1 a7 a9 T! B" q UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
4 |" S# m! D2 E( }8 N //new block
- M2 a* c5 k! W9 ^, @" Z UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
$ z' T: h+ b# T. t% q  A& ~ //create vertical list
! _1 C# U8 Y0 i- i5 O UF_MODL_create_list(&vertical_edges_list);//create list% e+ c& T7 d  T  J6 Y; f# J( B
//feature -> body -> edge -> vertical edge
$ P4 x5 e2 h3 V. {. y! R // 1 feature -> body
4 ~+ S! k2 m0 k5 i7 o$ R% m UF_MODL_ask_feat_body(blockTag,&blockbodyTag);6 q+ i& k$ _2 n% X
//2 body -> edge
% p3 u* B4 s6 w$ X$ i UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
/ m9 P: |  e! O2 \9 Y3 E1 G1 B //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的8 ~" }% j' h' w5 @8 t; G" \
UF_MODL_ask_list_count(edgeslist,&edgesCount);
5 z) A2 K9 p: c6 N( _% @2 F sprintf(mymsg,"edge count:%d\n",edgesCount);
2 U# n; W8 N2 G; I* o+ Y UF_UI_write_listing_window(mymsg);
  Y1 C6 t# h! ^& H //edge -> vertical edge
0 ]: J( t+ a. S/ _& e8 G for (i = 0; i < edgesCount; i++): z: {7 y: X5 K( B. n4 _/ {- D; O, R
{7 j; A9 \1 Y! L; |
  UF_MODL_ask_list_item(edgeslist,i,&edge);7 x+ V3 C, m3 k0 {" z
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);8 _1 Z! Y! k3 S, n: ^+ I1 O
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
" f4 ?, C3 T4 B  {
" ?7 @# D$ E& y   UF_MODL_put_list_item(vertical_edges_list,edge);
( Q2 T/ T% x& P1 }* J( A" t  v+ G   //add arrtibute
% Y) y5 }! v" Y! G" x: O   myattrvalue.type = UF_ATTR_real;" _' n  y; F4 ^) h% K+ H
   myattrvalue.value.real = 10;! n1 M- ~0 Q' [, S$ B! k; \7 R3 K! }
   UF_ATTR_assign(edge,"blendradius",myattrvalue);
3 E  `/ }8 y, v  }: r' P! }+ z8 f1 W6 F3 r
}5 e  I) |! y" H' R) ]4 c
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);  f+ W( |, `) b8 q0 D. A! z
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
4 `/ J9 x* A5 t8 d/ W UF_UI_write_listing_window(mymsg);
  k7 N- Y( R& Z0 y
* ?8 T& M- I) b% E9 p* J //create blend(倒圆角)
1 O5 n5 b* |. I$ h, c$ p  H3 c, t UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));! ~" I, g& }. _# B( g* T1 H9 c
UF_MODL_delete_list(&vertical_edges_list);) Y2 z) [9 L/ x& ^( |+ p; Z% F
//change body color、translucency9 {0 ^- ?3 E, w4 c
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
# W% z/ }' b# Y% M UF_OBJ_set_translucency(blockbodyTag,50);
. e7 h: l4 j7 G9 O) T$ |    /* Terminate the API environment */
1 _" r  v% i* X% [1 v    UF_CALL(UF_terminate());# Q7 O. D$ A$ p
}
, c+ [/ K0 \/ L% B9 h% v* u/*****************************************************************************
/ D( E# Q: Y1 Z& k5 G; y2 y2 V' H**  Utilities: V4 k- S4 ~- @) Z
*****************************************************************************/2 b# Y, H4 m7 w* A! i: W" A# ?
/* Unload Handler
  ]9 a7 {: v6 V" N/ y& ?**     This function specifies when to unload your application from Unigraphics.9 s+ S% i  \. |+ R
**     If your application registers a callback (from a MenuScript item or a
2 i' N7 g6 m0 j6 b- c) _  b**     User Defined Object for example), this function MUST return# S+ |! D0 O3 n1 a" D  `
**     "UF_UNLOAD_UG_TERMINATE". */2 p1 C! M' o2 r
extern int ufusr_ask_unload( void )
1 Y( `6 g9 C( g  O; [{
& i* m* o( w0 N9 W- [    return( UF_UNLOAD_IMMEDIATELY );
0 H! r4 c8 f' O* M6 H}
" R- s2 }1 b/ @1 _. j" ~
- d* z2 I0 V+ l) 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二次开发专题模块培训报名开始啦

    我知道了