PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[交作业] lesson3_CreateBlock

[复制链接]

2015-4-22 11:09:58 3211 1

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */1 s+ n) Y+ m- x4 H& A1 `
#include <stdio.h>
5 y- p/ N2 v2 z% T#include <uf.h>7 L" w3 D" e5 g. l1 q2 r1 Q
#include <uf_ui.h># R) m. f8 |$ D: g0 ^- n7 \* [
#include <uf_part.h>" T* v; W+ P$ e( {8 q' W
#include <uf_modl.h>
6 s( \. R* w! B3 ~; r+ v# @, A#include <uf_obj.h>
+ w8 p: D; F: S; R; a6 j#include <uf_disp.h>5 A* i: O' N) s: N+ k
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))0 y2 t* R) I0 G& S9 R! \% F
static int report_error( char *file, int line, char *call, int irc)' O' u; t: N# W- _8 T5 ?
{
0 g- c! [7 H8 U/ i  z    if (irc)0 I* ^+ i! ~% {7 M/ Y4 W. ]' O
    {+ m- `  a1 @( D. ?5 W- J
        char err[133],2 }: ?- K; L1 f+ H
             msg[133];
4 N1 o' N4 k7 J        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",7 L6 C* Z: h9 F8 B% g6 K/ h9 U
            irc, line, file);3 i. q. e) ]; \& q0 C8 ^' {
        UF_get_fail_message(irc, err);( {$ h0 ~! Q9 B% L# S( E3 b
        UF_print_syslog(msg, FALSE);, L" T* l' x6 b8 S
        UF_print_syslog(err, FALSE);& y& C: C+ t6 f1 K
        UF_print_syslog("\n", FALSE);, r, H0 d8 k$ f! p9 a/ K
        UF_print_syslog(call, FALSE);9 l3 Y1 s8 X+ m, ^. f. r
        UF_print_syslog(";\n", FALSE);/ Z9 P  R( X% t, V
        if (!UF_UI_open_listing_window())$ n9 M4 U$ r! B$ o2 ^  D
        {) x0 J7 W7 U$ U0 ^
            UF_UI_write_listing_window(msg);
9 v8 |3 [3 O* H  I4 t0 ~            UF_UI_write_listing_window(err);% T/ M" l, [8 Q% k$ F
            UF_UI_write_listing_window("\n");
1 l) @% l; v  v6 ?6 [            UF_UI_write_listing_window(call);
: d! c2 u2 z4 A" m( ?6 E            UF_UI_write_listing_window(";\n");4 ~" z5 i8 i. j+ ^" v8 D6 D
        }: |$ F+ k' `( q& U1 S8 A
    }. r: e( c4 D( l
    return(irc);8 H4 d8 ~" R3 c4 H6 [# p
}
4 s' J, |9 p# |& ^' Z1 ~5 z
, E7 S* e; ?7 Y5 y9 o" v/*****************************************************************************
+ o5 b; s! w2 }**  Activation Methods
) b3 |$ q! V4 B) `*****************************************************************************/" w4 f, T0 s  d" M; S+ f4 o& {2 I
/*  Explicit Activation/ K# g4 e/ i# {2 s* _
**      This entry point is used to activate the application explicitly, as in4 f# N7 J% w9 d# W4 d/ ^0 w
**      "File->Execute UG/Open->User Function..." */9 J4 h7 z; r- Q; w2 {
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )' M3 B+ E5 f# P# Y$ r$ L8 W7 h. u
{7 [7 h1 `8 V+ i. B# s" I+ L  [& m
    /* Initialize the API environment */
. j- f7 T; l3 Q tag_t partTag = NULL_TAG;
/ Z' a) c" g  L6 U, D double coner[3] = {0,0,0};
1 z+ w, X: W2 E) L$ Y# a! d2 _2 K char *edges[3] = {"length=100","width=40","height=50"};6 p0 g! V* R8 P' F3 O6 s
tag_t blockTag = NULL_TAG;
1 I) z2 ]6 O* A! V const char * radius ="10";   h- x# B0 b- I3 U" k% B5 k5 o
int smooth_overflow = 0;
  W6 K$ A* o3 Q7 m int cliff_overflow = 0;
2 I( F# j8 q( z) }4 ^ int noTCh_overflow = 0;
; D" X0 W* s9 Z' ~ double vrb_tool = 0.01;
* t' o4 |/ k( R5 b tag_t blendfeatureTag =NULL_TAG;& W  j5 @& o. W+ F0 |3 h
uf_list_p_t vertical_edges_list;9 O2 @) T% h7 f' Z1 n# C# G
uf_list_p_t edgeslist;
2 h' S1 C+ o/ O/ |# s+ V tag_t blockbodyTag;0 f! w# e7 y! B) T
double firstpoint[3],endpoint[3];
7 A% q8 m) h3 c2 d+ q int vertixCount;
, r( {9 r% H# G1 I( n6 i) V8 z tag_t edge; * C& W9 t0 h/ f. Y
int edgesCount;
) |" ^: J2 N- ^+ Y: z* i2 d+ B int i;
* Z6 x1 K- p, R$ m3 A- ?' t char mymsg[256];# u) r# a0 y5 a! o& y  e, o
int vertical_edges_Count;
- A' d. m5 q- D. ]: W" M3 Z# l UF_ATTR_value_t myattrvalue;! Y' |+ Z/ N, w! \( M6 {
/ K0 X# u$ \( c7 t4 P
    if( UF_CALL(UF_initialize()) )
. ]. y* x4 b+ b9 x    {
7 p: O; _$ i1 Q        /* Failed to initialize */
/ L8 i2 i, P, v+ X( `: r: X6 Z        return;4 e: w/ J, p" l
    }
6 B2 J' O  e% f8 ?    & q0 T* g) F4 d; T. m' [
    /* TODO: Add your application code here */' _  e  W7 P( s9 R% j5 N9 F2 W
UF_UI_open_listing_window();
# Y- i9 |) N) V& E+ R //new part) h3 N2 T8 h$ b  N" x6 [) Y
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));' \1 p3 x. a0 }: K; Z9 r
//new block
  F1 F8 F, E* M  d3 @6 J. _- T UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag( P9 l$ ~( t0 W% Y4 M
//create vertical list
1 u: S: x) w2 b' @2 v UF_MODL_create_list(&vertical_edges_list);//create list
: R2 J# ~4 P: y( n8 N" f( M" q //feature -> body -> edge -> vertical edge; x$ g: @. C/ Q
// 1 feature -> body
- g% a* ^2 p& I; D; ^9 W UF_MODL_ask_feat_body(blockTag,&blockbodyTag);& _+ O7 }% \/ U
//2 body -> edge
/ z' c' k+ X1 ]5 X! ?, t1 x5 l3 t9 X UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);4 ?6 o: }% A5 @1 p1 V
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
' Q7 C* R  |2 F% n UF_MODL_ask_list_count(edgeslist,&edgesCount);
( v6 m& x8 F- O( V sprintf(mymsg,"edge count:%d\n",edgesCount);; M0 c2 L( F; W! b
UF_UI_write_listing_window(mymsg);0 G7 G" }4 q& {) h7 _6 Y
//edge -> vertical edge6 e7 \5 q, G/ r3 E$ N" O
for (i = 0; i < edgesCount; i++)$ A, G* I' X) C! @
{' F' z; e5 G( }- e0 V! @6 l4 Z
  UF_MODL_ask_list_item(edgeslist,i,&edge);- _" w, a3 X, [& M* w
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
- A" @' k9 D0 Y9 s+ S$ p  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
6 ~! N+ c: R0 w+ U/ [7 ?  {& d# r4 O  @  c. O; F# g. `" j
   UF_MODL_put_list_item(vertical_edges_list,edge);
0 u/ {4 r# H7 r0 a' v0 E9 e   //add arrtibute
9 ?6 u2 W. \6 m0 |   myattrvalue.type = UF_ATTR_real;
9 m6 w7 W8 v8 o9 [. j$ x5 H1 H   myattrvalue.value.real = 10;
* p+ a" Y  M% j; Y0 z/ l" d   UF_ATTR_assign(edge,"blendradius",myattrvalue);4 @7 Y* }) P% K0 N' E4 }
  }5 `& W) q3 y+ A$ [
}
. U3 f, W, z2 F2 R0 \9 ~ UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);: E& ~$ j, N. h. ?9 B) V6 G, W
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
+ V" h3 Z, i3 J/ i' \ UF_UI_write_listing_window(mymsg);7 {5 y* n2 o! ^" `/ ]

) n9 n1 f) i" c" Q' [& R //create blend(倒圆角)
! n0 S3 D. j; `# K* E% i. X1 o UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));9 q" h7 Z# g# l# P3 a% A
UF_MODL_delete_list(&vertical_edges_list);
/ X+ l  t) k2 g4 q //change body color、translucency" J+ y; r6 k  W" p7 j3 p
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
/ b5 g7 P6 A) [# d& N: K UF_OBJ_set_translucency(blockbodyTag,50);; Z5 u* r* y- }
    /* Terminate the API environment */; v1 W- `8 I; T# m1 R: B# V
    UF_CALL(UF_terminate());5 y7 f" }: i! X; E3 B
}1 c! ^. O% r! \# q% P
/*****************************************************************************
( y4 ]1 d0 e. ]; J, e**  Utilities" d. ~; M: w. S0 D
*****************************************************************************/3 F4 p7 d$ ^  C( }; t
/* Unload Handler
& T# H. S. N5 K6 m) P! G**     This function specifies when to unload your application from Unigraphics.
$ x, e6 h5 y4 x. t% A1 U- f**     If your application registers a callback (from a MenuScript item or a
; J) Q! k; x" u, p$ x' V8 n**     User Defined Object for example), this function MUST return7 {/ G! u! L8 F$ |' a8 F
**     "UF_UNLOAD_UG_TERMINATE". */
3 _5 |% @5 j4 n6 \+ A% p' Textern int ufusr_ask_unload( void ). d% n* m! C0 B. k5 i) I( R  g( Y
{
( i; Q& z8 G+ W6 `( G    return( UF_UNLOAD_IMMEDIATELY );0 r' h, T9 L  ^& u+ y9 m, S( P! U
}
4 f/ @& U& m4 C# ?/ H
" t$ D# v  o6 u  y  S4 W* b
无标题.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二次开发专题模块培训报名开始啦

    我知道了