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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
0 Y( h& f  u3 R1 ^$ c5 G#include <stdio.h>, s1 S6 x6 L9 H
#include <uf.h>7 t- W5 X# x4 W6 n* b! E8 E3 F. N
#include <uf_ui.h>
+ o: J5 n( V/ k) H1 J9 Z3 k& c. r#include <uf_part.h>
4 [- b# U, \6 t9 `9 u/ K: y. Z#include <uf_modl.h>
2 E% e0 d' S7 b' C, L5 K#include <uf_obj.h>
" G" K# M7 T; L, u) x: S#include <uf_disp.h>; Z5 ~9 j# }% C) H, O
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))% `% C& N0 D3 m8 N. t% }3 W3 I+ x
static int report_error( char *file, int line, char *call, int irc)
$ ]/ k( h0 B& F: h$ a9 ?{8 M3 f* a/ c& s. h
    if (irc)
( }: K5 W* }6 I    {: \7 _( x) b& R% @0 d* K8 R" E
        char err[133],
$ w. h! K4 V9 y9 w             msg[133];
4 |6 k) J) N) }# g& `. ]        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",4 h2 q" Q& \# ?1 w3 \8 p2 u. N
            irc, line, file);
* P, }' N$ b( c4 H+ `' d        UF_get_fail_message(irc, err);6 X: q/ Y# \5 ?1 ^
        UF_print_syslog(msg, FALSE);( i- L# }0 |7 q; ?
        UF_print_syslog(err, FALSE);; F$ f7 H* X  y: d; o
        UF_print_syslog("\n", FALSE);
" T% N% W# V, o% E2 W. u) M        UF_print_syslog(call, FALSE);
' A1 r0 Z$ s( x/ r        UF_print_syslog(";\n", FALSE);
4 v8 |+ k2 Z8 r" h7 O6 L        if (!UF_UI_open_listing_window())
* Z+ g( n, I5 Z5 E6 k        {8 ^% `( C, [9 U& k7 i3 t* h- v
            UF_UI_write_listing_window(msg);! ?# ^( w) ?" l8 L7 M
            UF_UI_write_listing_window(err);
- H6 v' P$ K5 D  m4 ~            UF_UI_write_listing_window("\n");: W$ P6 s" {/ h" G1 x. R
            UF_UI_write_listing_window(call);0 S+ t& ]+ n" ]( P1 W- e1 ?5 G
            UF_UI_write_listing_window(";\n");
- J+ j& c& Z) J% U% s) j        }
% I9 Z; b2 R  [4 @% T" c8 R    }3 O' A5 K% ^' L3 Q4 \
    return(irc);( L- z* V% B+ U$ I7 O! M# `3 {
}
' f/ z0 E! ]& L, `  Q8 A. e6 v
' a4 Y1 S  Z; ~) D9 u/*****************************************************************************" W' P4 k+ T9 N% B3 E- `! a, F
**  Activation Methods* I. D1 ]3 ]* Y" l* Q: s' t
*****************************************************************************/7 h# Q  {7 M2 B' K
/*  Explicit Activation: C; F6 C9 K* v0 }- K" C: u
**      This entry point is used to activate the application explicitly, as in* Y! d% O  I# w; _5 C( S, {
**      "File->Execute UG/Open->User Function..." */$ G# K. @+ o$ ?" Q6 P6 @) g
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
- e  A; n" V' h% D! Y7 R{# l' {: v& F5 @# X! q9 s& v
    /* Initialize the API environment */
# {+ r1 ]' f$ P7 p tag_t partTag = NULL_TAG;
. |, u- n# @  V1 c1 R1 \ double coner[3] = {0,0,0};4 l7 D; O. O, l/ w* o- j
char *edges[3] = {"length=100","width=40","height=50"};+ c% x6 s9 w+ C( F* F: D
tag_t blockTag = NULL_TAG;7 p, ?/ [# g5 a& R* [" ]
const char * radius ="10";   `6 E+ ~, s1 ]4 G' n
int smooth_overflow = 0;
% _& k; d0 p$ K int cliff_overflow = 0;* |/ b8 T1 c* r& O8 G( y( W) b
int noTCh_overflow = 0;
8 p  S0 v% D1 B6 n6 G+ |: k double vrb_tool = 0.01;
7 d$ R; @8 n9 z1 Y7 v5 Y1 B tag_t blendfeatureTag =NULL_TAG;) V1 h# g9 G& z' l) T8 N
uf_list_p_t vertical_edges_list;6 I3 P1 p( n7 ~5 B4 u
uf_list_p_t edgeslist;# \* |" O2 P3 E2 ?* a- h1 b
tag_t blockbodyTag;
7 L* y! p- u" z) D3 M double firstpoint[3],endpoint[3];+ x( F- A# u3 D  F( b+ r% i- q& Z
int vertixCount;
5 j' A% }0 n% X) X  b0 G$ a' K2 q tag_t edge;
' ]/ A6 \/ T& @- m  Z. F7 i int edgesCount;2 B5 w( I4 _& {! V8 r
int i;
) G& o* m* W  [ char mymsg[256];
6 H9 f; C* |0 k5 |- I/ f+ M5 y0 h' _ int vertical_edges_Count;1 J! a5 j  ?* K4 n; A# L" N# E1 o
UF_ATTR_value_t myattrvalue;
( E8 k4 J" X( x. K8 ^
/ l1 z$ B, Z) C& x    if( UF_CALL(UF_initialize()) ) 9 ~( ?/ e% {; A
    {5 v! v/ _: E$ X
        /* Failed to initialize */$ M7 O5 Z" q1 Y  v) Z
        return;: X$ @; D7 N. O
    }
* p5 y& `$ P9 D( E6 |2 E$ d/ Y4 R   
) I) ^3 M" \1 @8 I6 o    /* TODO: Add your application code here */' \+ F* L& |9 u! C, B/ [7 u
UF_UI_open_listing_window();8 f2 t- B/ V- u$ Q
//new part4 l0 v% v% R& d
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
! z1 U6 T9 i8 y% m4 L. P( N //new block& S: f$ X0 Y* |9 G9 Y
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
" q  x1 _+ T% y8 F2 l //create vertical list
0 E' \0 o; j9 s6 ~4 m6 Q( Y- F UF_MODL_create_list(&vertical_edges_list);//create list
) ]' a# A# N, `+ g& C* Y0 e //feature -> body -> edge -> vertical edge* s6 w/ p% j/ x
// 1 feature -> body
. I% b- N' `9 ~/ P UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
7 E6 T, O, y+ _+ s$ o9 K2 _( ~ //2 body -> edge
5 F: S/ z0 r7 H& M; l+ q$ l UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
0 \7 m/ {# w4 v2 J4 y //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
& O: u$ a: a! g- P9 T4 V7 v UF_MODL_ask_list_count(edgeslist,&edgesCount);
; s8 ^& i' t) v; P; ~7 z! w sprintf(mymsg,"edge count:%d\n",edgesCount);, e8 R: l' S& x$ `" A3 @3 H0 U% I
UF_UI_write_listing_window(mymsg);4 c# V: i' ^! L7 f; e
//edge -> vertical edge
' c! L4 f/ ^8 W for (i = 0; i < edgesCount; i++)
4 F8 v: u# B" [7 n5 [* V! B {" N* l0 c9 T" d& `
  UF_MODL_ask_list_item(edgeslist,i,&edge);" {+ P4 _( H0 u7 F4 l. g5 P: I
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
+ j  O9 u) P' G  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
! A# ?6 ?0 _) k2 K; Q7 @% ?( M) ]  {; H/ k1 E: S* [$ T0 W. M/ y1 [- [# K
   UF_MODL_put_list_item(vertical_edges_list,edge);2 I* y( G3 [" z
   //add arrtibute+ C4 F. n: _) ]. ~( z% A: |: y- r
   myattrvalue.type = UF_ATTR_real;
" m; P* l( z+ ]  n+ z   myattrvalue.value.real = 10;
0 t: u* a2 ?& L! x' g2 p   UF_ATTR_assign(edge,"blendradius",myattrvalue);, Y1 G* G/ a; G: k7 b. E
  }
, }- q# ~- A: R }5 J* L$ F% ~& k) L' b
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);+ m3 s/ v8 L0 s
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
4 v8 u3 z! p* {2 y8 t UF_UI_write_listing_window(mymsg);
, w+ T7 E( q" P$ m& X, n7 { 7 k! V& q+ C; k% E+ Z! T9 M7 @
//create blend(倒圆角)# J  S5 z9 l" s8 N. f. K! Q& [& N
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));& o0 X" S4 g3 m) o5 S5 z( D
UF_MODL_delete_list(&vertical_edges_list);
  ^0 d$ p- w: U //change body color、translucency; `2 Y% {, b5 i. C
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
% h, _) w( e, A0 Z: \/ B4 C7 D UF_OBJ_set_translucency(blockbodyTag,50);6 G0 {. O7 B1 i
    /* Terminate the API environment */
, N' x  G! x8 o7 A0 W    UF_CALL(UF_terminate());! x3 B. @" A- C/ I: `6 ]
}
0 x7 a! q; H* a2 g/*****************************************************************************
, y) }( {1 E: X, x6 S7 C5 S& _) P**  Utilities9 }+ Z5 C, c7 @9 `; S9 g/ X
*****************************************************************************/
5 E/ _: ?% U3 \' E/* Unload Handler9 J' r3 l' O; M% O# o/ {' \: K! m
**     This function specifies when to unload your application from Unigraphics.( \0 p- V  o# A) M
**     If your application registers a callback (from a MenuScript item or a% C. m9 T6 t: n9 P* V
**     User Defined Object for example), this function MUST return
* H8 o. B/ A$ x0 {- H# x$ F3 p**     "UF_UNLOAD_UG_TERMINATE". */
6 H/ V, _+ {' lextern int ufusr_ask_unload( void )
8 A7 n! e  g9 F6 L{
: x- J9 V) K% z& Z5 d9 ~    return( UF_UNLOAD_IMMEDIATELY );) a" w: s" t2 L. N# s0 W" _/ |. {
}
" M- k& N( N) Z/ n* _1 S' u, z9 P% P2 @  v
无标题.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二次开发专题模块培训报名开始啦

    我知道了