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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
+ T+ K" q  q. S* F% U#include <stdio.h>: `& Y+ X; a* o& n1 ]
#include <uf.h>. Y9 s; s1 p3 T8 ?" j
#include <uf_ui.h>
2 x* I/ j6 l! s- ~#include <uf_part.h>0 x% I; ^& @" H& ^7 L- p0 Z
#include <uf_modl.h>9 r/ |* ?& \! Y' F. t; C) A
#include <uf_obj.h>
1 B$ ]# }. ?0 G! I9 }" A2 n5 `; J#include <uf_disp.h>; ~' L* @  _+ }* e
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
4 D& W' X# [3 f* @static int report_error( char *file, int line, char *call, int irc)
3 i$ |5 q6 _& h+ |. W7 q- c( g3 a{
/ o* u% x$ y6 ]7 S    if (irc)
* h( c( x$ y; p, B9 B    {
" Z" m  ^# `; D+ d        char err[133],
3 ~" |/ e0 I, R+ M             msg[133];5 s. n3 I% m9 L" U/ R. O( \! M
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
1 K# ?+ R; q: u            irc, line, file);
# _" Z2 g5 G) d* f, T+ z% f- X        UF_get_fail_message(irc, err);6 B5 H. ]! ^3 R7 F* `: u6 V
        UF_print_syslog(msg, FALSE);
, h% M1 W  Q6 ~5 `7 a# i        UF_print_syslog(err, FALSE);0 s5 ]" c7 j. j( v4 I
        UF_print_syslog("\n", FALSE);/ I/ J' K$ Y1 d% j6 Z, q
        UF_print_syslog(call, FALSE);+ y: b' l( F1 R& q
        UF_print_syslog(";\n", FALSE);. V( E4 C9 y. K
        if (!UF_UI_open_listing_window())* C% W$ X- @$ Q4 Z5 D7 o
        {
3 j2 Y1 B. y0 Q8 z9 D6 l3 G            UF_UI_write_listing_window(msg);
1 s/ p6 @! u! K$ I5 w            UF_UI_write_listing_window(err);
6 L: d! W& _' n$ \- d( e1 U1 c            UF_UI_write_listing_window("\n");" h6 h8 z$ g! {6 A9 P3 N, W! G
            UF_UI_write_listing_window(call);
6 r) A0 n5 }: G: X  r& w            UF_UI_write_listing_window(";\n");
) X+ p+ x. R: ?* U! B        }7 b4 Y* A  [" J+ T/ i
    }
; ]& N& I0 v6 [, y" a    return(irc);
. v- r. i) l4 ^, e4 K" Z# v) P5 G8 r}
, O( n2 m7 H/ `4 ~- K- r) G/ C" D' f. b3 G' ~# X
/*****************************************************************************
3 B  l! j! x# ?2 H& j9 D4 [4 m- O**  Activation Methods
2 x8 }1 @" ^4 s/ K2 L' E6 N, e*****************************************************************************/
5 h  @. E3 ?& K/*  Explicit Activation
$ q4 p* u" T% e3 D4 {& p  {+ K  F**      This entry point is used to activate the application explicitly, as in) J- C% m/ J: q, c6 a& s5 _
**      "File->Execute UG/Open->User Function..." */! {! ^, e- q! A: s
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )# P+ D! R9 P. S
{! X' v7 Z( J7 _( G/ t% \
    /* Initialize the API environment */) y& V4 y0 }" L6 I  [4 Q
tag_t partTag = NULL_TAG;
9 Q) ^: d1 Q3 t2 V* q. P: }4 X double coner[3] = {0,0,0};- M6 s/ w  y5 ]2 `" x3 V
char *edges[3] = {"length=100","width=40","height=50"};
. j( O. V1 f2 l. `" L tag_t blockTag = NULL_TAG;
3 D# Q: P& I1 { const char * radius ="10"; 6 o! s- t8 l0 [3 S3 @2 Z
int smooth_overflow = 0;
; f3 ]+ s" V/ p9 M int cliff_overflow = 0;0 `: O+ q& U  ?$ z9 ~. K8 {, M* u
int noTCh_overflow = 0;* _5 n% \% z) p* Q' h
double vrb_tool = 0.01;
& F, Y' r, v$ j tag_t blendfeatureTag =NULL_TAG;1 A: `0 r* A: F9 p. X1 T
uf_list_p_t vertical_edges_list;
  R+ O- U2 Y9 M% a" G uf_list_p_t edgeslist;) E( x9 C" E0 r; J% ]1 n
tag_t blockbodyTag;
) b3 n3 l* U8 I, n$ t2 ]3 I- ~, `6 L double firstpoint[3],endpoint[3];% v& U1 w/ j. N# L
int vertixCount;
3 i, K7 s- x: B& c  E" \ tag_t edge; ( ]( j1 K# j; C+ ]
int edgesCount;1 F5 ^8 M4 w% k$ U
int i;
8 \, t; _) m, K char mymsg[256];
% j% ~3 e) L3 o9 l0 a  G/ R int vertical_edges_Count;
" B) \  o9 z* D2 C" j5 L/ U3 J: n UF_ATTR_value_t myattrvalue;! U0 S0 U5 E' n

/ @3 m; p: K  ^. y% M    if( UF_CALL(UF_initialize()) ) $ ]# y! f0 V3 p4 q) ]' I9 i! J9 S
    {$ c7 i  [6 b3 J3 X
        /* Failed to initialize */; v* S% Q9 w9 ~% C7 h: O
        return;
. J% Y/ Z* j2 x6 H3 ~" |    }
: p) w; {0 l' q7 t: B( D8 P  J! B    5 C! o& g( ?4 s6 j7 h
    /* TODO: Add your application code here */; O! E) C) }* B
UF_UI_open_listing_window();
* n% U+ }( {- ~- Z' f2 v //new part: ~+ ]& ]5 T( X+ b8 P6 V" v  v$ g
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
7 w4 Q  H) t7 }3 J4 K5 ? //new block
! L9 e5 e1 v' L) L' A& p+ D UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag& G6 w4 ?3 o* Q& b: v# d
//create vertical list
+ S4 ?+ d+ q: E/ X8 w  @  |6 y UF_MODL_create_list(&vertical_edges_list);//create list
. ^- |4 p$ g$ G5 { //feature -> body -> edge -> vertical edge/ j4 t: g0 ?; Z; i% k
// 1 feature -> body4 B: c$ R9 A3 t. u" P4 x- Z& A
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
2 y9 f8 K2 O. s# F6 S# e/ @6 B/ C //2 body -> edge4 I1 {0 J4 ^5 o- _5 ~
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);0 S9 r9 O0 l# _) i7 i
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的3 ]# L' p2 a% j1 f' J
UF_MODL_ask_list_count(edgeslist,&edgesCount);# i7 \( g1 K) a5 t' \; G, ?- n
sprintf(mymsg,"edge count:%d\n",edgesCount);
1 B8 y3 D* F0 @2 S8 X& c" V UF_UI_write_listing_window(mymsg);
; }) }2 [; ~6 s //edge -> vertical edge
' z. {) ?3 w8 } for (i = 0; i < edgesCount; i++)2 U3 S- B) l' r* }& R
{! U# \- e4 J& H9 F- J9 u8 w
  UF_MODL_ask_list_item(edgeslist,i,&edge);2 k) ]6 ~: Y4 d3 ~
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
. A  l( k+ W3 C5 T$ v  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
( [4 t. V8 v0 _+ W, W! W  {! h# v0 ?! o) m& k6 s$ K
   UF_MODL_put_list_item(vertical_edges_list,edge);/ _  C7 p4 k$ \, r  c  c  x
   //add arrtibute; U) ]* K% E! X
   myattrvalue.type = UF_ATTR_real;
2 F8 E- K4 w; i( g7 |) U   myattrvalue.value.real = 10;
7 N: t1 u) D; Y% \! e* ~3 v   UF_ATTR_assign(edge,"blendradius",myattrvalue);
7 I" Y) V( @+ R2 d% v4 k6 z9 u  }+ S3 h. ?& m/ Y: T5 s, S
}
8 _: I6 M; d: z+ S( [ UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);# {1 S3 a3 J+ r9 P# @
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
2 J8 k# d  q" E" z7 U UF_UI_write_listing_window(mymsg);
; {5 w$ e7 O. t9 A! N  x( l
. J( p6 ?% v, @: u# |( ~ //create blend(倒圆角)1 n% N4 ]1 e' P# o. u+ p* s" m, j
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));  u9 q$ g2 [' z2 e# u: X4 M7 a# |
UF_MODL_delete_list(&vertical_edges_list);/ N! }' A/ t3 C& I. s# i+ K& t
//change body color、translucency
* k9 E. x$ @* P4 `% B6 D UF_OBJ_set_color(blockbodyTag,21);//186红;21白
1 T1 p6 f9 F6 O1 O) X UF_OBJ_set_translucency(blockbodyTag,50);
9 Q# }# o4 q8 H' g3 T/ P; [    /* Terminate the API environment */- Z# A% ?7 a1 V
    UF_CALL(UF_terminate());
. R& p0 y) R, Z7 p) j: H% [* Y( C}5 J' U) {% V' h7 }! n+ u9 W
/*****************************************************************************( l% ^. W6 K; Z
**  Utilities
, c$ B" {' V9 p6 i+ U% m*****************************************************************************/% c' H9 M5 v+ C2 |1 c- G9 s) ?
/* Unload Handler+ l6 ?9 \1 J4 ]" W' S
**     This function specifies when to unload your application from Unigraphics.
6 W, b# _, @7 R' d7 k' @0 A8 C**     If your application registers a callback (from a MenuScript item or a. w, i2 X: t* ~- c9 Z
**     User Defined Object for example), this function MUST return
, z* X9 l( N- k) D8 l$ N**     "UF_UNLOAD_UG_TERMINATE". */# y' A3 p# C% y' T+ [8 @" `% W
extern int ufusr_ask_unload( void )
& M& |2 V- C1 v{: x' G) L* Z) o, }3 z3 R
    return( UF_UNLOAD_IMMEDIATELY );5 \8 b$ @. g# p  k; x  f
}
5 a8 q& E" y0 m8 F; a
( H) b! p  F0 d* F% W. 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二次开发专题模块培训报名开始啦

    我知道了