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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */( y  v6 ]. ]) F& p/ U
#include <stdio.h>
  j5 o, |* I* R; e- r#include <uf.h>( z  x& S$ Z( U0 E
#include <uf_ui.h>8 Y' d/ c1 l- F7 N/ U5 P& S) ]
#include <uf_part.h>6 H$ q' P6 b& C# o, ^. Z
#include <uf_modl.h>; d2 s( T7 e/ Q, v0 D( L: h" O
#include <uf_obj.h>9 H! z9 b$ ^$ g
#include <uf_disp.h>
4 g0 B/ b. g" k* b8 n$ P#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
, h, L* w+ ~" c, l; @, lstatic int report_error( char *file, int line, char *call, int irc)1 k2 e' Z6 k& \
{( K$ g0 g2 P' H, ?: o" R% v6 L
    if (irc)' _" L: G) Y- L/ m4 P# A) @
    {2 S+ ?) g! m) _3 A, ^
        char err[133],
% b' `/ Z/ v" L' o0 k- }             msg[133];2 v5 t: ~$ I1 k
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",' Q; C) n  H. L5 I5 {9 b; J
            irc, line, file);4 p2 i" c3 b( O& g7 K3 w0 E
        UF_get_fail_message(irc, err);$ p. s' ^- L) f: y
        UF_print_syslog(msg, FALSE);  \* x3 k3 E7 c: P& p
        UF_print_syslog(err, FALSE);; |" H1 \* t! {' @1 k7 @/ i
        UF_print_syslog("\n", FALSE);
" v4 t+ O) \9 t0 H- W7 B# F        UF_print_syslog(call, FALSE);  J0 H% Z7 I1 x7 d6 B9 O- V
        UF_print_syslog(";\n", FALSE);
1 P% X- q; w! h* i        if (!UF_UI_open_listing_window())  e6 C0 R2 ~( h/ t6 [  j
        {
  Z7 G& f! Y6 j/ ~            UF_UI_write_listing_window(msg);0 U) }3 w+ }" q1 c& J
            UF_UI_write_listing_window(err);
/ [8 Q* D5 F( s& r3 V9 P' j            UF_UI_write_listing_window("\n");
3 a# R" z' v  }; e) m; B0 y            UF_UI_write_listing_window(call);
& u2 B' l3 b( ~" g: ]7 G+ }" \8 g            UF_UI_write_listing_window(";\n");+ n1 m8 j% `' A# q0 _# U) o
        }2 c. G( p% d! ^$ o
    }; |9 N' [" v+ R! q3 L
    return(irc);) k( P3 E3 |9 B* W4 J- J
}
$ ]! n* }9 \8 a
' k& [, z: }+ R4 n/****************************************************************************** v/ ?2 |9 Y7 I* \* a4 I: C4 m2 a7 w3 M
**  Activation Methods! m8 u5 y$ E+ z0 d; A* b7 P+ C
*****************************************************************************/. J/ i0 O/ B7 N4 A) ~! h
/*  Explicit Activation, B2 F1 h- G" O
**      This entry point is used to activate the application explicitly, as in8 d4 `1 _1 U5 w4 {
**      "File->Execute UG/Open->User Function..." */
  w  a% ^# `* s- D; E4 Rextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
& v/ ^  l  Z7 @. Y' t{- I, L3 l' a- `9 [$ b6 J/ \
    /* Initialize the API environment */
# K% ^6 A+ R1 h7 p tag_t partTag = NULL_TAG;
  j  @4 [& ^/ S: k, i double coner[3] = {0,0,0};
6 C/ M- U! L& h. g/ V char *edges[3] = {"length=100","width=40","height=50"};
8 o; |% u( K) f% n tag_t blockTag = NULL_TAG;
( B$ F9 U3 G6 u  |# b const char * radius ="10"; - d. s  S0 h6 O2 J. b/ _, q* @
int smooth_overflow = 0;
6 w) ]+ t) k0 i! i! Y; g int cliff_overflow = 0;* _, x  N6 B+ ]# M
int noTCh_overflow = 0;
- E9 X0 }% G: L! x% m! k0 } double vrb_tool = 0.01;" p% Z) f. \3 F; K8 n, W4 j( w" p9 y
tag_t blendfeatureTag =NULL_TAG;
" ~0 v, R* P5 k uf_list_p_t vertical_edges_list;
% `2 I: N9 i7 ?7 q( ^9 B uf_list_p_t edgeslist;
0 I$ {  p* [1 v' B/ I tag_t blockbodyTag;: ~' H) K! P4 ], D. ^$ c, x5 ]: M
double firstpoint[3],endpoint[3];; Y1 A  g6 f2 h0 Y
int vertixCount;
7 t; J: `& o1 E$ D0 N1 n, x" w6 ~8 ] tag_t edge; $ ?, W+ x2 ]$ {4 l1 m% v
int edgesCount;
0 K5 P( ?, O& ?( L int i;" l9 F8 Y5 B. n) O
char mymsg[256];. `) f5 t4 q0 {
int vertical_edges_Count;5 s, W1 M% c4 Y- W( S% W: B
UF_ATTR_value_t myattrvalue;* c; i' H6 u7 o/ Q5 u" H" c) C
, s9 i! \4 j0 B: N5 g& O# Z; S7 L+ P
    if( UF_CALL(UF_initialize()) )
. q) Z- G" i  ]7 {' |) {    {- U# W# I! _5 q, m. `
        /* Failed to initialize */6 J* C5 j! N) k; U) I
        return;
0 i: t8 W( U) h! b4 k    }; Z4 T9 Z+ |8 W3 U0 {0 e6 n/ ?) k
    ( Q. a) G, B% h. r* v# j9 B+ v
    /* TODO: Add your application code here */. K7 i: ?6 S' m  {
UF_UI_open_listing_window();
- o3 n' w1 L  M  F% b //new part
" @8 ^2 u% T3 V, ?; b0 k UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
! b; i& ~2 n4 J! G. M/ v //new block, T! _+ m: z. D4 I$ J
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
0 p% ]6 ~: C. x* T  Q1 Q //create vertical list0 r3 \5 T; v* K8 Y- V# a
UF_MODL_create_list(&vertical_edges_list);//create list5 o: J, z: @" }# h/ @
//feature -> body -> edge -> vertical edge
8 H3 X0 c8 G/ b& Q% w // 1 feature -> body1 x7 Z, E7 C  O% t6 r' f
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
& M0 N1 c+ [( N8 ^- y! w //2 body -> edge+ ]0 Z6 ~, ~; A8 e2 a
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);" A7 S7 R1 X3 e& G3 p: l. N
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的: F: a/ F% e6 R4 f
UF_MODL_ask_list_count(edgeslist,&edgesCount);( N/ a6 w3 g1 m' i4 F  m2 N
sprintf(mymsg,"edge count:%d\n",edgesCount);1 t5 Z% l2 _9 l( I
UF_UI_write_listing_window(mymsg);
* `' _0 g4 }3 o //edge -> vertical edge- q+ f8 X$ v7 _# M# H: @
for (i = 0; i < edgesCount; i++)
8 i4 ?3 [% Q% n {
4 c6 h) j7 ?7 g  UF_MODL_ask_list_item(edgeslist,i,&edge);
7 q7 k# m2 h: ~4 V  Q6 c  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);: J4 ?7 S& h& V' ?. {4 f  E) I3 p
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))* Y% ?' I5 H! k; l4 |
  {% ]. u% @" J1 a9 v
   UF_MODL_put_list_item(vertical_edges_list,edge);  q8 D0 S4 j$ k8 j9 U+ O
   //add arrtibute
0 c/ ^3 U5 i" }) D, ~   myattrvalue.type = UF_ATTR_real;* U, p$ B! C" d. s
   myattrvalue.value.real = 10;
" J- @1 N4 g" t% A' k2 R" j   UF_ATTR_assign(edge,"blendradius",myattrvalue);3 P& c- I; M/ @
  }% |' u" E9 o# D7 Q9 F5 k3 s" M
}4 \) A7 D/ u0 a; m. p# F% Q
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
1 q* {1 n) L4 @0 v3 D% E sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
% I( m. q% o" L5 ^* q0 c$ g+ n UF_UI_write_listing_window(mymsg);
- O4 e, f3 b0 Q% \/ P
- W; g  y8 g# y //create blend(倒圆角)
* p  e6 `+ p  Q. r! Y! X! b UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
, h" C" }" b: v, j" |6 K+ W UF_MODL_delete_list(&vertical_edges_list);
5 W* d) {. t) [& Y //change body color、translucency
( u/ k6 T2 g) ~  ?2 _8 c UF_OBJ_set_color(blockbodyTag,21);//186红;21白% {9 s, E3 u4 j8 N, v4 W
UF_OBJ_set_translucency(blockbodyTag,50);
- z' j0 W$ c2 F9 {+ h  x3 p+ _    /* Terminate the API environment */8 x+ U, T; }1 x2 t
    UF_CALL(UF_terminate());
4 M7 K! I# A1 Y& _( G, G}' m+ A' I7 A, X/ S! I; p4 h
/*****************************************************************************: O' Y3 d6 E) E& I! r
**  Utilities
) t1 v/ a  X. V6 e*****************************************************************************/
' O$ H9 a/ h5 [/* Unload Handler
' R9 j) A( u$ B9 v**     This function specifies when to unload your application from Unigraphics.
+ i3 j+ o$ R! A1 @**     If your application registers a callback (from a MenuScript item or a
/ m; W7 `" A( f  Q/ G**     User Defined Object for example), this function MUST return
1 W6 b# s% l' U# D- Z+ x4 T' @**     "UF_UNLOAD_UG_TERMINATE". */
! O/ i3 }9 V9 }3 F* fextern int ufusr_ask_unload( void )* E) y/ ?8 N6 ?
{
0 ~! D, {  x  C7 s6 d  q    return( UF_UNLOAD_IMMEDIATELY );' O+ R: v% ~) ?9 W7 f0 x
}
+ K1 l' `: A/ @1 z, u5 e* p5 M) C4 v7 L& M" F) E& v$ t
无标题.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二次开发专题模块培训报名开始啦

    我知道了