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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
  {# @: C. a$ G#include <stdio.h>7 E5 t, p0 _' Y+ r& o3 d5 E
#include <uf.h>1 L$ A8 y) P9 V
#include <uf_ui.h>
( _3 }6 E" m9 V4 N, I  U#include <uf_part.h>  [9 F( {( ^$ r. T; P
#include <uf_modl.h>
1 U4 I2 h- H3 `2 w! T$ j- X& z#include <uf_obj.h>) t4 ]. z3 k- X
#include <uf_disp.h>
$ y8 a; d. f) j9 G* f#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
8 a2 k+ Q6 ^; l% v+ Y1 y$ Z/ ?1 pstatic int report_error( char *file, int line, char *call, int irc)" D/ O. A; j7 H1 l( R& ?0 c  M0 k
{. e) v) S3 v! z4 ^7 I; U
    if (irc)
$ N" y* C* N: F0 u' O    {
/ v, q! q+ G" K( [' K- |- M- C        char err[133],5 y) Z0 d) n8 W9 p0 v) l
             msg[133];
% y6 L8 E' J( F& a) @" ?        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
/ C* V+ Q+ u4 O2 V/ D            irc, line, file);, d" q# C& K/ p
        UF_get_fail_message(irc, err);
7 r" J$ `* G( e3 W  E* r+ D4 r8 x        UF_print_syslog(msg, FALSE);, ~( V$ E2 {& _% m
        UF_print_syslog(err, FALSE);' ~$ n* \6 p( _" y* k- b
        UF_print_syslog("\n", FALSE);
7 |1 j9 @. j7 p- ^& @! I0 L7 y0 g/ X        UF_print_syslog(call, FALSE);" g( j1 L2 u$ H" S" ~, q
        UF_print_syslog(";\n", FALSE);( Z' g8 S& j- o; G
        if (!UF_UI_open_listing_window()); g: V' z7 p# P5 J
        {+ [8 b; c  m9 I4 s: n' J7 g% J
            UF_UI_write_listing_window(msg);" i2 K+ N2 R; F5 f2 h* F& s
            UF_UI_write_listing_window(err);
8 x% o# k, @* u) b* w6 b# M, m% P            UF_UI_write_listing_window("\n");. s* E6 x8 i9 S  T) O4 j  r$ M) n+ Y. N
            UF_UI_write_listing_window(call);" Q) p+ P+ y2 @+ }+ ^4 K& o- [3 _
            UF_UI_write_listing_window(";\n");
8 {6 M& [- `- s- C        }
+ s" y, V7 ?1 J3 w3 c# u! i    }6 i( W* n0 [9 v) R/ s8 J
    return(irc);( d% L9 a# u, O1 h. Y3 p: \
}4 s  J1 a: q. |5 j' D
% ^# \9 ?5 U$ P
/*****************************************************************************
/ B4 D; @! {7 ^- E2 _6 d! p' w**  Activation Methods! x2 R4 e$ U' }( W/ C
*****************************************************************************/+ a+ ?! ^8 G+ B+ q$ W
/*  Explicit Activation
# a3 p. N, ^# u* ~3 I6 J" P**      This entry point is used to activate the application explicitly, as in
8 ~. j- v  ^* l8 g**      "File->Execute UG/Open->User Function..." */
% L7 w, \- p0 |2 E8 wextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
$ v& G/ m- B. Q1 b{2 S0 @9 ~/ R. L$ ~. J
    /* Initialize the API environment */
3 g2 l2 H, n6 Y2 P* o' O3 A% a- O tag_t partTag = NULL_TAG;
: n$ c' g/ D9 a0 b/ Y9 S% K! X double coner[3] = {0,0,0};  D6 m- q% r  h- G. Z+ j8 Z
char *edges[3] = {"length=100","width=40","height=50"};  Q& q( m* {6 d
tag_t blockTag = NULL_TAG;
9 Y/ o7 A8 N6 O, [  P% ?4 z  e- G1 q const char * radius ="10";
7 Q  z6 @- V9 t+ {- S( t6 H" g3 j' B int smooth_overflow = 0; 5 z0 e* Q5 L5 o+ @$ Z
int cliff_overflow = 0;
4 I" x, w7 K* M/ r, K) c+ l int noTCh_overflow = 0;
* g9 i* p# ~! a! M8 V double vrb_tool = 0.01;
& R* X, Q! M- U, H" |$ e  { tag_t blendfeatureTag =NULL_TAG;$ @; I1 ]: a0 b1 j
uf_list_p_t vertical_edges_list;  Q0 @# _& p/ R1 G; s7 x
uf_list_p_t edgeslist;9 S+ Y. H& o! q2 v3 A/ ?
tag_t blockbodyTag;) t% w1 [! n( V! c; r: ~
double firstpoint[3],endpoint[3];
( V& ]6 D: |4 t; {% D: Y% M int vertixCount;
3 R9 \9 q7 q- S tag_t edge;
9 V- Y# h% f. u4 r2 S int edgesCount;. N0 c5 @0 D; I1 J9 r5 j7 ^& T2 y3 w2 G
int i;
, J( |; `* d* a- A& k char mymsg[256];, {0 b7 b9 \5 ~+ ~; ^
int vertical_edges_Count;5 N+ c  q: u; h, u
UF_ATTR_value_t myattrvalue;* C) L8 Y' C) I
2 f( p; h8 p7 r$ E3 S
    if( UF_CALL(UF_initialize()) )
! \5 ]1 I3 w0 V    {6 S6 |# r' m3 ]! x* g( O. L$ x
        /* Failed to initialize */  y. p  e7 A( s4 O' g
        return;
1 ~# O# d% N  N4 B    }- L) F# x; A' h1 G0 ]- D  x
    & S1 {" w; d" w- O* U
    /* TODO: Add your application code here *// p& x5 I6 Y5 {# X
UF_UI_open_listing_window();) @* B) h# D6 a8 }( L- o
//new part
/ S7 E7 Q& X% J5 t% p. |' u UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));% n; v: }& J, |, f9 |7 M
//new block0 T) c) G3 D$ ^  z  p$ I
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag6 q4 O' w4 I1 _" E& T6 B
//create vertical list: Y; k, t3 c. a0 y' y: L! G2 y' {
UF_MODL_create_list(&vertical_edges_list);//create list
5 b4 x4 L7 t3 P- Q4 U, `7 M2 a //feature -> body -> edge -> vertical edge
4 e, \  F2 `8 W7 p# H( R- C  X // 1 feature -> body
" D' H- b& D) o' G7 x0 o: a UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
# p0 {# L9 s& i- H/ p //2 body -> edge
3 A1 d* s$ H. r& |. ` UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
) _# v9 H5 L" x  m //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的5 I7 \/ N! s9 K* J! B0 w2 ^
UF_MODL_ask_list_count(edgeslist,&edgesCount);  ]$ {( x/ P0 S. a
sprintf(mymsg,"edge count:%d\n",edgesCount);
: w! ^# ~* q, y2 n UF_UI_write_listing_window(mymsg);: ]3 ]0 m% f5 M: b! S- h/ R( e# i8 m
//edge -> vertical edge
' x/ T2 D4 Y# A: G for (i = 0; i < edgesCount; i++)
6 z$ f" T4 S# v" y1 r2 _+ I* Z/ j9 B {
; M% l2 C2 a- u; H+ T; N# p  UF_MODL_ask_list_item(edgeslist,i,&edge);) a0 S8 L' S) {* W% _1 o) X3 K
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);. y/ _. R- Q* a0 l
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))) L4 o; K7 c+ j/ M
  {* h* f/ f1 y: ~( E: m9 n1 L# t
   UF_MODL_put_list_item(vertical_edges_list,edge);
1 S# y/ A& J0 \$ ?   //add arrtibute0 R+ G- ~# ?; V0 @& n
   myattrvalue.type = UF_ATTR_real;
" `7 T$ o4 _+ x$ Y   myattrvalue.value.real = 10;) {& E7 k; k3 j/ [; W: X9 `, Y5 ?: ]
   UF_ATTR_assign(edge,"blendradius",myattrvalue);2 j' p/ Q' ]0 z( c
  }
. h) Y. K' K3 _# M) P }
/ @/ n3 i# W( g: r0 I2 p UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
& r/ f$ g, U! V  |: e  d sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
1 ~3 M7 p: J/ o- Q3 `" I8 V UF_UI_write_listing_window(mymsg);
5 z1 b; f/ z5 H 5 T, D9 V1 p! z6 f* ^
//create blend(倒圆角)
8 y$ [$ z! M1 t* p3 s& J# _  Y6 {5 s UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));; u$ Q9 S" n0 e* p& V4 f0 y, I
UF_MODL_delete_list(&vertical_edges_list);
& r0 q- `  U$ N0 }6 P6 y0 [ //change body color、translucency$ o& N; D- B8 p
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
/ |. p- @. [3 Z$ `$ c  \ UF_OBJ_set_translucency(blockbodyTag,50);& ?. G$ J/ K. ^- A
    /* Terminate the API environment */
" c* G  p2 Z; i2 N; L    UF_CALL(UF_terminate());2 x9 X* {1 S; H' a- r1 h0 n% R6 l
}) c' Q$ |8 O6 R: n
/*****************************************************************************" m: i( x- x0 \7 F3 k
**  Utilities
) M! V9 G2 k% }" ^*****************************************************************************/" x4 N# w+ O$ `2 L+ P# ]# G, b
/* Unload Handler
4 L$ _! D9 J! ~3 @. @0 T**     This function specifies when to unload your application from Unigraphics.- f$ }1 b/ m, E* C: G* P$ p
**     If your application registers a callback (from a MenuScript item or a6 R3 M( c+ w* F+ K- }
**     User Defined Object for example), this function MUST return
0 q: |1 a! F: M0 I% N. }; n**     "UF_UNLOAD_UG_TERMINATE". */
( }# P* f1 K; Z+ c3 V" zextern int ufusr_ask_unload( void )
: s9 |  z) T% q. f0 c{
' Q6 n4 ~, T: M4 I. @* h    return( UF_UNLOAD_IMMEDIATELY );& X* I- E4 S6 i( n( o5 t
}; K4 I* {  l& X- r

0 J! W, V5 j  l5 C2 u# N' 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二次开发专题模块培训报名开始啦

    我知道了