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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */9 |) P, {* x! g# E9 R
#include <stdio.h>
, L! I: U9 Y' q4 F9 w% {! S# k% }#include <uf.h>
  U2 K' w, k) `. u#include <uf_ui.h>8 \/ y; R/ v$ T1 F- G8 h5 u3 w/ h
#include <uf_part.h>
% u% T7 b$ I% E5 _# a; k9 n#include <uf_modl.h>* R3 G$ H2 z  Y  B, G$ u
#include <uf_obj.h>
* }! ^8 ]- Z+ c9 N( W9 ~1 H, A#include <uf_disp.h>
$ b7 X2 _1 w8 p0 h6 b) f#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
3 J+ c! E2 r2 ?1 z, P8 R! \; y7 o8 O) mstatic int report_error( char *file, int line, char *call, int irc)
0 G, E$ L; K1 P7 V: j{6 B( y& T) a. ^& P  f9 e
    if (irc), q, h# G, C* w/ b6 F+ f  N
    {
! J  P: I6 w! o, j7 m4 [" T        char err[133],, e% {' v" z2 R" G* v
             msg[133];
# z, I7 U: s6 X        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
& e: W  P/ c! S# Q) [9 h3 ~2 g            irc, line, file);) i; `: K6 V' K# j
        UF_get_fail_message(irc, err);8 Y9 T: H& Y" g: J6 m( F
        UF_print_syslog(msg, FALSE);
' I& F$ K7 D" h0 K5 ?$ K1 U        UF_print_syslog(err, FALSE);, Q" l7 [, O0 H( r* ~. L( n
        UF_print_syslog("\n", FALSE);
7 s+ Q+ H- o5 e) F( j        UF_print_syslog(call, FALSE);
- n, y8 k) z6 _* C3 m        UF_print_syslog(";\n", FALSE);
/ q- m5 n" U% F7 x3 h+ R1 S% ]0 }        if (!UF_UI_open_listing_window())+ \7 w! J. a2 l* m% x% o
        {! U* j' s/ t  F9 U0 ]  P
            UF_UI_write_listing_window(msg);
1 S& G9 C; H4 m- e. v            UF_UI_write_listing_window(err);9 u6 J, D" _/ ?- m; v( Q
            UF_UI_write_listing_window("\n");& N" W2 x' h# m$ Q: S
            UF_UI_write_listing_window(call);- i6 i, m0 n5 ]9 l, R% A' V& k, j
            UF_UI_write_listing_window(";\n");
: T! E' m4 N/ G  o" g/ n) `, F        }5 Z( r3 q# b2 ?
    }
. ~& |! C7 {# M# c7 W- \1 Q$ S: _    return(irc);( W% M5 V) _( p1 |7 Q
}+ X) U; k$ p' U
  [- g+ T0 u8 d. [3 \' r3 _
/*****************************************************************************
4 O* Q4 u5 v) I( W- m- v8 w' i' n**  Activation Methods4 s5 ]; r; A% Z4 r9 Z
*****************************************************************************/
' G/ l; }" J) k/*  Explicit Activation
9 V. y2 O0 d: C; i2 x* Q% F**      This entry point is used to activate the application explicitly, as in0 c; Z2 m: z% r8 q' N, x- ^: l
**      "File->Execute UG/Open->User Function..." */
- X& l3 E# L: s3 }& F  V3 lextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
+ \- e8 ?; _' Z" `& _* S0 m{% L  S3 N( G( ~2 \0 R6 h
    /* Initialize the API environment */; i$ ^0 g6 ^' L% R$ m- W+ }$ X8 ?3 s  }
tag_t partTag = NULL_TAG;1 @7 T' P6 |, G" S2 F* E* [
double coner[3] = {0,0,0};
0 d# n# u0 Q$ W& S' U. ~5 q char *edges[3] = {"length=100","width=40","height=50"};
# e1 l6 o0 }4 D, V tag_t blockTag = NULL_TAG;
1 i6 c/ P; F* a4 |& Z const char * radius ="10"; 9 E' A, b( }* }$ X& k8 k
int smooth_overflow = 0;
5 l7 h: \& X* {( f int cliff_overflow = 0;
  {9 Z- t3 j7 }8 d/ v int noTCh_overflow = 0;
! ?' q6 F+ \+ y; e double vrb_tool = 0.01;
2 |' @' a. j6 E% X% l tag_t blendfeatureTag =NULL_TAG;' d* q) H4 y& E" m9 L3 k
uf_list_p_t vertical_edges_list;; H! v) Q- _8 f: N$ f) S
uf_list_p_t edgeslist;
5 t5 P0 ]2 I9 i) K tag_t blockbodyTag;5 B# L/ z" K9 B0 C* w' k$ [
double firstpoint[3],endpoint[3];$ g" R4 w$ y; |9 }2 Y
int vertixCount;
+ g8 Q) A' W( |5 L1 p- C7 S9 S tag_t edge;
0 R# D+ D! A( S$ K" o int edgesCount;
6 `" h( H2 C3 i) q( n+ }( ?4 B& G int i;% L, ?2 @( s% {+ ?( t7 L! r8 f
char mymsg[256];
! n$ |' J! f/ R7 I9 g1 ` int vertical_edges_Count;! e9 Z& N1 p1 w! l) L
UF_ATTR_value_t myattrvalue;
* K1 i9 G  ]/ S3 X) ]/ a1 S' z
' Z* ^+ V  K0 p- f    if( UF_CALL(UF_initialize()) ) - }- {9 q  K+ Y( c! W3 m. Q
    {: v6 P. i: E+ s$ V5 d
        /* Failed to initialize */6 Z, F  _1 |, R+ q
        return;
# b+ z5 a  s" ^$ `' W! P/ W    }8 N. |6 s! C! M# q. g( n1 `7 _4 {
    & j/ V& m( I, N* ]$ ?
    /* TODO: Add your application code here */- }/ W6 C6 w% E$ P: L, @& B1 R: D
UF_UI_open_listing_window();, G3 U! n4 B) x$ b, \; I4 T1 p- R
//new part
+ X/ i7 ^9 G! u! t3 S( M5 J" e UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));; `1 B2 j1 {. ^# P
//new block
1 O; z# S! y4 N UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag: x2 |. Z0 O7 q6 l- H/ `
//create vertical list4 Y6 _% ^1 A; L. P/ q, b  J
UF_MODL_create_list(&vertical_edges_list);//create list
" s5 R3 z: M  b2 c- G/ b. X; p //feature -> body -> edge -> vertical edge
8 v$ p1 O$ E4 P) | // 1 feature -> body
: }/ Z. b+ ?4 E  |- Q  m) W UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
* y0 \- U7 `' @: [5 u //2 body -> edge9 w# _; t3 j2 J6 n' T7 S
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);& w" b0 ]* u# t0 p- c
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的) U: `8 U- u5 j  x
UF_MODL_ask_list_count(edgeslist,&edgesCount);6 d( z" g' f" G1 ?" |  F
sprintf(mymsg,"edge count:%d\n",edgesCount);7 [6 v5 i3 A: }% s; Q0 J5 d" ]
UF_UI_write_listing_window(mymsg);
& y0 t+ _. F( y: e$ g. j //edge -> vertical edge. u. s' J. R1 `- C$ \6 w' B- J) E
for (i = 0; i < edgesCount; i++): B6 p( J8 j9 s, m
{) q& x% l) G' `$ |
  UF_MODL_ask_list_item(edgeslist,i,&edge);
( N4 {4 [3 L, b$ q3 R9 b; a5 o0 N  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);) p6 O+ f6 S" ^* F. Z
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))% R' a' I! o# Z7 _6 ]
  {' ]# Z" x9 `% p( i1 x; e4 z4 W
   UF_MODL_put_list_item(vertical_edges_list,edge);
) j; q6 y) D+ f   //add arrtibute! W- M0 ^# i, L& ~2 r1 D. S
   myattrvalue.type = UF_ATTR_real;. P1 p) r+ S- W8 D6 c5 q
   myattrvalue.value.real = 10;3 W9 ^7 p1 K6 r/ L* n/ `
   UF_ATTR_assign(edge,"blendradius",myattrvalue);
. a' [4 U+ N0 G, \+ H  }. h7 H# D) W0 [4 L& H4 q
}, t% Z: i: h3 O2 b
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
) z8 x; X$ [. K6 Z/ k& g: c sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);  t  h9 s( E! j( o
UF_UI_write_listing_window(mymsg);
8 L% g+ V, F9 ~2 O* j
2 x+ y: ?3 k1 F //create blend(倒圆角)
8 D/ c  x; N1 H2 x! R UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));' i: B$ I7 {+ l4 f& N1 N1 [* t
UF_MODL_delete_list(&vertical_edges_list);
4 @( e$ E. @$ L6 ^- n7 d0 p0 x5 p: n5 a //change body color、translucency, j3 ^) y- A, e. J7 l! c/ S
UF_OBJ_set_color(blockbodyTag,21);//186红;21白$ q' o. M( V# ^$ Q
UF_OBJ_set_translucency(blockbodyTag,50);
7 H/ K& U8 \( ]7 k# k% E    /* Terminate the API environment */( S4 `1 g1 ?5 {# n
    UF_CALL(UF_terminate());% N& m& `& o' I% i
}' |: A! }2 J6 a! p- S9 I+ f( c
/*****************************************************************************
% ?1 P6 H9 D: f" D8 f" Z# z**  Utilities4 N% m( Q) I' C1 i9 |
*****************************************************************************/& ]0 u- D" ]* {' `6 e  w' L
/* Unload Handler; B- A3 `1 d% `9 X# ^
**     This function specifies when to unload your application from Unigraphics.8 P! w. Y8 ?* n! d, F, Z7 J; ^
**     If your application registers a callback (from a MenuScript item or a
/ X0 k5 o. r0 Y**     User Defined Object for example), this function MUST return
4 s5 ~5 E- z+ i! O# {; u**     "UF_UNLOAD_UG_TERMINATE". */
3 J9 ]7 K' S/ W4 f& s: P& Bextern int ufusr_ask_unload( void )( o3 w+ z  k6 p
{
3 s+ z9 n$ G8 C% p7 G! j8 R/ b$ b" S    return( UF_UNLOAD_IMMEDIATELY );0 [" R& B7 Z) h. F2 m, @$ P
}
. L0 }2 ?- [+ o, h4 J+ H' U, q) G" w! J) j# 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二次开发专题模块培训报名开始啦

    我知道了