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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
1 ], X8 U' K9 l& u/ t) {0 P) R#include <stdio.h>
2 \& d" g' g7 ?% H" l2 r& ^#include <uf.h>* L# r1 T  e* w5 D' b/ @
#include <uf_ui.h>
0 x$ t' [) B1 x; H( A  g: {/ [#include <uf_part.h>+ o0 D* \3 O1 J) p  S& n" U1 A) h
#include <uf_modl.h>9 D9 M! @: w4 C
#include <uf_obj.h>
' W' ~& h5 v# D$ s& u) n#include <uf_disp.h>
, m4 c$ l8 |' ^( p- q2 B#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))" p  T5 A: C) K7 l
static int report_error( char *file, int line, char *call, int irc)
& s9 E/ U3 y7 E; C' T9 w7 z. b/ {{1 j' r1 k4 N* s. H
    if (irc)
; W! l; v% t7 ^: A3 j    {
# |8 b5 P( j% [- @* P- X. L        char err[133],
( x* j% e1 p5 ]" I* o; N             msg[133];, ^( }8 Q2 F! z
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
: s' q8 `) @) w* X$ @            irc, line, file);
& F  E% L! j6 z, Q        UF_get_fail_message(irc, err);) E4 g5 I0 J/ a9 D: r9 D+ t. r0 \
        UF_print_syslog(msg, FALSE);* i/ c0 Y0 \% n3 Y1 n# |+ Q" p
        UF_print_syslog(err, FALSE);9 o" X- O) V1 p5 e+ m+ U8 n1 ~
        UF_print_syslog("\n", FALSE);
  _0 ^' x( ^' L) j$ U' T: Z        UF_print_syslog(call, FALSE);
$ e4 [! l( J% R# i1 R: l$ a        UF_print_syslog(";\n", FALSE);/ |4 B' h3 t- m3 Q+ U1 x
        if (!UF_UI_open_listing_window())
  G- u/ b* ^9 {7 p1 O        {
/ T  e7 \1 n; j$ F            UF_UI_write_listing_window(msg);# u2 s9 X, W. M
            UF_UI_write_listing_window(err);
# P! H" j' x0 c3 H& S) J0 l5 U            UF_UI_write_listing_window("\n");
) M2 g3 H, p0 |- I            UF_UI_write_listing_window(call);& \( I/ e3 ]2 k. z* ]; P
            UF_UI_write_listing_window(";\n");$ y$ j* h% J+ f: ^
        }
/ a4 i9 V- K0 H  X+ `( u7 p    }
* p8 `5 @2 ]% P6 U, A    return(irc);
: w% ^1 h0 G: l( M0 g( O! n}! f$ c. c( F) X

* ~5 g$ h. l5 h# _/ c/*****************************************************************************# D! D- R0 `$ N& \4 h& s
**  Activation Methods
7 N1 U& U8 h' E0 l: H* i5 [*****************************************************************************/
8 {4 J$ g. n! ^3 h/*  Explicit Activation
( n  u) H" \: \" Z) O- n**      This entry point is used to activate the application explicitly, as in) S5 ~9 n5 U" H+ ?1 k  c9 i6 G
**      "File->Execute UG/Open->User Function..." */* S- W: T( x: @) h8 j
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
$ I# f, }$ m# y% L& U( T" k{6 ~. I! |% U2 E# ~, k: F
    /* Initialize the API environment */
0 g* @/ @( v# M; B4 P8 i3 ] tag_t partTag = NULL_TAG;
  E: y' }+ R* v. |3 N4 J double coner[3] = {0,0,0};9 r' V/ l4 \- z; M% k
char *edges[3] = {"length=100","width=40","height=50"};
# |: S4 A% `7 `3 Z tag_t blockTag = NULL_TAG;6 X2 v% j; W7 f2 ]1 `* f6 H2 Q
const char * radius ="10"; 7 K" w8 P+ {0 P% @
int smooth_overflow = 0;
- y# U' v: _0 D% B( _  V, ~ int cliff_overflow = 0;
% Y8 T- F; a5 [  A" T9 X int noTCh_overflow = 0;
4 v; u$ l* b, P double vrb_tool = 0.01;
" V4 O+ `# m/ K2 e: o tag_t blendfeatureTag =NULL_TAG;
5 K3 h; C+ b$ V/ A uf_list_p_t vertical_edges_list;) r) d1 g+ P4 c
uf_list_p_t edgeslist;
  D0 I% U; p' a tag_t blockbodyTag;
2 e+ f+ |+ h2 M! g. \; o" m double firstpoint[3],endpoint[3];" ^# P( s' g" }
int vertixCount;* ~& y! r4 L! h: w5 i0 ]6 |4 D/ z8 N
tag_t edge; ( s9 W9 B( ?3 X. r
int edgesCount;
( Z% S/ a; {5 r) L int i;
& C% v' R, @, |' h char mymsg[256];$ _; B% @- \( Z+ V
int vertical_edges_Count;4 k& S, F3 g, z2 w
UF_ATTR_value_t myattrvalue;! O1 q: I0 B1 _

  p3 V: _2 O3 c: x: t    if( UF_CALL(UF_initialize()) )
4 a0 m. Z" A9 c- [8 `    {
" k  X; f6 K% h        /* Failed to initialize */4 {4 g5 _% q$ B$ P6 R
        return;7 l; t% H4 [9 |% m" D& I8 \
    }3 @  F2 E, x& o1 V+ U, Y! y( g
    & _, K( h6 W9 m, ^2 o. }
    /* TODO: Add your application code here */% Q; v2 s) B1 L, u; \
UF_UI_open_listing_window();
. Z3 f  _, D& N1 ^) Z# E/ L: _; C //new part
/ o& N2 n8 p$ H. F9 \+ X: o# N# Q UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
1 |$ _2 f1 N4 s$ J5 N4 ^3 B //new block
+ G1 r! M5 s$ p- n* I! b UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag1 v( J( h! ^6 H: o1 c" c
//create vertical list7 A7 J/ y" j3 o% g
UF_MODL_create_list(&vertical_edges_list);//create list0 Q# S* a" Q% K* ~" i7 {
//feature -> body -> edge -> vertical edge
/ y( G& m" h1 y' u8 R( v/ [$ @ // 1 feature -> body4 L0 k0 W$ `! ^, ]5 y6 j
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);$ S1 m! o2 y( y# v
//2 body -> edge
3 H, `, K; i" }0 T4 A8 ^+ o1 D UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
, J  `3 r  E0 T: A //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
2 e  m. p# ~% D( o UF_MODL_ask_list_count(edgeslist,&edgesCount);
2 Q1 k. @2 _8 e5 i; I, A sprintf(mymsg,"edge count:%d\n",edgesCount);
9 p- u+ M, W$ v1 ~1 D+ g+ s+ x UF_UI_write_listing_window(mymsg);
% [6 J. U  j" H //edge -> vertical edge
+ Q& W" H. H7 L$ Y, B0 B* P9 j for (i = 0; i < edgesCount; i++)
1 z4 _$ A( Q; Y) a7 N) L# L' l3 @ {
' x8 i- ^" _6 N$ D  UF_MODL_ask_list_item(edgeslist,i,&edge);
5 t" D9 n. T2 v1 z  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);. r; ~3 i. L- i' q
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))4 ?$ o$ a; j3 N4 R3 s  q+ b- ^
  {& p) K7 v+ a- Y: H! `
   UF_MODL_put_list_item(vertical_edges_list,edge);- l/ n0 }& j4 _6 p2 [& F! ]
   //add arrtibute$ Z  u* @) W; c5 o& A% r
   myattrvalue.type = UF_ATTR_real;
( S" g* t* I! X! O1 ^! N   myattrvalue.value.real = 10;
& i1 x' Q; _3 T" a# F4 b" S+ z, G   UF_ATTR_assign(edge,"blendradius",myattrvalue);& m1 {  x3 }% u/ L
  }6 C! X7 d' w4 q6 D) v
}
6 g$ t; O" o) i% X" L$ t1 G. p UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);9 v" w  ?' E; l7 i9 ]
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
6 v1 S( P2 `# m% i( T7 ~: P' L, J UF_UI_write_listing_window(mymsg);/ F! _2 a" {/ y* H( N5 ]& _

  \5 V# i8 W+ N$ V //create blend(倒圆角)7 G0 w7 T- ]: y4 T4 a, w
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
* C* k/ }0 N; o8 o UF_MODL_delete_list(&vertical_edges_list);
. ]& q! f/ R  _( \ //change body color、translucency
- O! }* i7 y3 m) b8 [, O UF_OBJ_set_color(blockbodyTag,21);//186红;21白
) S6 |' j3 D2 V- |4 j UF_OBJ_set_translucency(blockbodyTag,50);" z% I/ T; S6 ^- L* x, O
    /* Terminate the API environment */
8 O' C* r% f. K( [- n    UF_CALL(UF_terminate());; \, u3 A) j# P% C
}0 O6 V+ R, E$ }
/*****************************************************************************
7 w, Y9 W$ G# k& k* t$ |" N**  Utilities0 b% Y4 y+ J0 @) X) }
*****************************************************************************/' I. }2 n2 i/ b- f2 `! d8 l
/* Unload Handler2 c9 c0 q! ^0 k8 o+ A6 h0 H) W
**     This function specifies when to unload your application from Unigraphics." z4 \2 V% c* w# k. k9 V& T
**     If your application registers a callback (from a MenuScript item or a0 Y) Y, Z& t# ~& L
**     User Defined Object for example), this function MUST return  l0 M6 G% y" j4 e/ V) a! E
**     "UF_UNLOAD_UG_TERMINATE". */! y) Q0 k1 a7 F7 d3 m. V% [2 }
extern int ufusr_ask_unload( void )8 X! l% x; {2 U* c( ?
{
: l/ O! j7 _; D( R1 d3 ^7 m    return( UF_UNLOAD_IMMEDIATELY );$ [& p- {5 S! Q; I% Y) T
}
, k0 B( h' d. b7 p" N
1 a# \$ H9 ?8 d) M7 }( W
无标题.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二次开发专题模块培训报名开始啦

    我知道了