PLM之家PLMHome-工业软件与AI结合践行者

[交作业] lesson3_CreateBlock

[复制链接]

2015-4-22 11:09:58 3371 1

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */$ Q9 F4 l# N0 d: G, F1 Y
#include <stdio.h>% l  m, m6 g: F( Z7 F0 s
#include <uf.h>
7 b) w5 T+ ^3 A& c: Y#include <uf_ui.h>
( G# U$ b* I9 @% w9 y#include <uf_part.h>2 @1 w2 n2 G* t) C
#include <uf_modl.h>
' ~* e; W  P9 V. W#include <uf_obj.h>* W" ?6 Y5 {) s# g4 O
#include <uf_disp.h>
- G) |* x! G" W: b#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))). Z/ V& P+ N' F& N. e+ B% \
static int report_error( char *file, int line, char *call, int irc)
$ N4 A2 p( h5 `* v! n% x# a{
5 z3 V( u8 e9 l; `. n    if (irc)* n% J# ^, {2 q4 q* K# \
    {
# V6 w4 F9 X9 M7 |        char err[133],* o' Y; {! x/ i# V# p' S
             msg[133];
- w- |. g3 k+ ^7 F6 G        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
6 V  s1 @9 G  A1 P            irc, line, file);
9 W; B  l1 T4 o, W4 ^        UF_get_fail_message(irc, err);1 U+ J6 u( ~2 F; a  s
        UF_print_syslog(msg, FALSE);
  d4 O' G6 e" n: ?  H) @        UF_print_syslog(err, FALSE);
( @% h8 W& e3 u        UF_print_syslog("\n", FALSE);# O5 y- `; P5 |0 b- ]3 d# U
        UF_print_syslog(call, FALSE);0 z/ v. F. }' Q5 B8 A+ z& V$ r3 k# b
        UF_print_syslog(";\n", FALSE);
" X: \. `9 i; I# q        if (!UF_UI_open_listing_window())
  G' l# I5 o' v7 P. E        {) U/ o) j4 g5 \- m; J5 j6 O* ~
            UF_UI_write_listing_window(msg);1 D, \" f6 h, k. m6 c( ~
            UF_UI_write_listing_window(err);
) [6 h$ ^' b: t9 u3 g4 p$ t0 j            UF_UI_write_listing_window("\n");3 K" x' o' I# T* @
            UF_UI_write_listing_window(call);6 A4 D' v, R8 c1 H0 ]" X( o7 m% f
            UF_UI_write_listing_window(";\n");( e3 z) D  c4 v; G" r9 E- M1 D0 Z
        }, A6 W5 O9 R$ i' m$ m1 m
    }. W3 |9 X7 t0 Y& Y+ H& o
    return(irc);2 G- D/ Z6 `4 m
}2 Z7 O6 D# i* l1 b
" X: g" R1 B/ p( ^( w
/*****************************************************************************
2 J* n. K, y1 ^, W2 l* \% Z**  Activation Methods, J% F: J& p; T* `. ?4 a0 M; Z
*****************************************************************************/
" w* f5 p/ k3 {7 R/ L# L/*  Explicit Activation
" W# r6 m9 _2 U& |6 P3 I**      This entry point is used to activate the application explicitly, as in
7 b1 ^. D  H# I: r" t**      "File->Execute UG/Open->User Function..." */
8 x. i1 x; g; ?  Eextern DllExport void ufusr( char *parm, int *returnCode, int rlen )1 X9 \8 ], _# z1 z
{
) z1 s2 A7 S. Y4 e3 L    /* Initialize the API environment */
4 f6 Y" [* g: B7 e tag_t partTag = NULL_TAG;: C9 O; p: [' `( t' ~
double coner[3] = {0,0,0};/ N5 z% E8 y( a
char *edges[3] = {"length=100","width=40","height=50"};- U: m; \; J4 D7 u, U; P
tag_t blockTag = NULL_TAG;
- @( R) j. W) B' a const char * radius ="10";
4 n4 x( R4 n2 R8 q int smooth_overflow = 0;
- u2 f; }0 ?  I6 _8 c8 v int cliff_overflow = 0;5 ~, _6 C1 \; R2 X, U" I% i' y
int noTCh_overflow = 0;
, @% z# N! T6 H  w3 j3 l+ u double vrb_tool = 0.01;+ f/ P2 ^# D, Y  A4 }. x
tag_t blendfeatureTag =NULL_TAG;/ t$ ?% H5 _/ Y4 I: ~
uf_list_p_t vertical_edges_list;
2 d* n: P9 F3 w& z3 N2 r( M+ `" P% F2 c uf_list_p_t edgeslist;# a4 A$ V2 Q  w! G0 A$ [' s
tag_t blockbodyTag;2 n' g( W& A" b' X; j  y5 N
double firstpoint[3],endpoint[3];7 Y; Z6 ~, d" R( c- g
int vertixCount;  M' D) h" U, y& N
tag_t edge;
5 K7 h' D, Q. O: c& { int edgesCount;  K: C0 Q# r& e& i# K' l. U* p
int i;
; F; B) r3 M- R& G' Q1 K char mymsg[256];
0 a, E, v( I/ j* z6 g. | int vertical_edges_Count;
# O0 l0 i* ^! [+ g8 @ UF_ATTR_value_t myattrvalue;
1 r: \. Z) P- W2 j5 f0 H+ c
2 o$ Z" Y4 e) c3 r! A    if( UF_CALL(UF_initialize()) )
3 g+ k, m$ |: h3 `! D" Q    {" M  J  ^8 G8 W. x% s, s& v0 {" M
        /* Failed to initialize */
2 h2 {" d4 Z% P        return;) f: h1 m# R- `* \+ V
    }
5 b* d  L7 q7 I2 E" @" w, _   
4 ?; }6 h/ {' S$ X" d0 C8 U    /* TODO: Add your application code here */" [# j' p0 ?4 j7 Y
UF_UI_open_listing_window();# z: y: {  R' J2 @( G7 H
//new part5 Y3 x$ [4 g% H8 [# x/ w8 X3 I& P
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));) n) L! p4 r; V7 J8 ?8 }
//new block* V3 t5 J% a9 j  Z2 m7 U
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag
$ T- q; z) a- _& ^ //create vertical list% R4 V0 P0 ~* ]1 [; m1 X
UF_MODL_create_list(&vertical_edges_list);//create list
" X+ p+ ]) \. M* l3 j) K //feature -> body -> edge -> vertical edge
3 |; ]" B! `+ Z // 1 feature -> body
6 J3 u1 s% n3 B. s1 E8 U UF_MODL_ask_feat_body(blockTag,&blockbodyTag);& A( K% @3 S% e/ d
//2 body -> edge
0 l9 o+ ^5 m. G3 Z) J$ w UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
* M" E, ~* O) p3 P //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的; `  N3 B2 y* ^8 T
UF_MODL_ask_list_count(edgeslist,&edgesCount);' I0 }/ f' [' _; n
sprintf(mymsg,"edge count:%d\n",edgesCount);. r+ A) m' F2 z0 C
UF_UI_write_listing_window(mymsg);: E+ c7 c" R/ L! W4 U( R( R9 I4 O2 B
//edge -> vertical edge) ^7 |6 ?; K! ^# n! V
for (i = 0; i < edgesCount; i++): V( s6 I4 g1 x
{7 b6 D- ~+ l6 p& Y: Y' T( N
  UF_MODL_ask_list_item(edgeslist,i,&edge);$ S, u% d& x2 X$ k
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
: M$ D7 ?1 b9 ?& ~; Z7 P  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))& Y$ w# l& [1 _4 k0 K: W$ j
  {
% U4 A3 p' X0 T, U; n; i8 @* v   UF_MODL_put_list_item(vertical_edges_list,edge);
+ [0 F2 ?! z5 B9 S   //add arrtibute6 O& u( H! I' A! {: ~. S
   myattrvalue.type = UF_ATTR_real;
0 X8 l& _  P; ~4 x& C9 O   myattrvalue.value.real = 10;) N4 P" o% s0 s, n8 M: k  j
   UF_ATTR_assign(edge,"blendradius",myattrvalue);
+ X* G! H) b% D$ T  }
( _3 v/ ~8 }2 x# g }
' s/ H) n$ V2 o* o UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
2 `2 p: r* P* W; I+ J9 g5 p  { sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
/ j9 k4 A9 G  K7 S% X UF_UI_write_listing_window(mymsg);' g+ {' K, H: }) ]2 O( S

3 j+ u" ?5 K" M" H //create blend(倒圆角)
% s2 k- Y2 ?: { UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));- D6 Q) z: {5 d2 V
UF_MODL_delete_list(&vertical_edges_list);& R% O- L/ G8 B; E8 ~1 c
//change body color、translucency1 j5 i# E" E4 w# ]0 I! r( r6 _/ B
UF_OBJ_set_color(blockbodyTag,21);//186红;21白) n  o; G9 [8 ~, m' Q
UF_OBJ_set_translucency(blockbodyTag,50);# A% m* b- m! h4 W# A' C8 d# ?( N
    /* Terminate the API environment */0 H- M8 X$ @" I8 }" @. l
    UF_CALL(UF_terminate());
; D- v/ |) ?% [( r8 _}' U  E+ s* {6 u+ x% K$ i
/*****************************************************************************
! E! `* J- n& o  g**  Utilities6 l" ~! k3 \9 }/ r
*****************************************************************************/
) i+ V+ x/ G! Z" I/* Unload Handler% @* l6 p$ Q) l$ S8 w  t* F
**     This function specifies when to unload your application from Unigraphics.% I) m2 ^. p8 b4 J2 L
**     If your application registers a callback (from a MenuScript item or a2 I9 i  ]/ A/ U$ Q/ }  I+ W
**     User Defined Object for example), this function MUST return3 b, _9 r" G  E" R2 n$ z3 P* `
**     "UF_UNLOAD_UG_TERMINATE". */2 r# H/ j8 l) P% h  o
extern int ufusr_ask_unload( void )
/ o' H. p8 I7 Y% Y. Q. L{
2 d0 b7 I1 \+ R& a& {+ Y    return( UF_UNLOAD_IMMEDIATELY );; x- _$ c* s* m2 ]  ?
}
1 {% E  [7 {- @" A8 `
3 @2 D& Y3 r4 z3 b. ]+ 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 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了