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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */  @" P2 Z3 j! r1 X
#include <stdio.h>4 T4 d2 @& C2 _  f; r8 a# A' }1 e
#include <uf.h>- h7 O  z# x6 Z9 e5 I1 H" q
#include <uf_ui.h>$ S4 R9 \: v/ I9 x' p' H: }9 y2 t; W  V/ Q
#include <uf_part.h>* J: x1 D) d: `0 W! b. ?- P  v
#include <uf_modl.h>, S% ]0 Y6 F. D8 z" R& m, ^
#include <uf_obj.h>/ c- H, q  u  U+ v( H2 P
#include <uf_disp.h>
7 t0 w# J1 {* b5 f& a, q4 {% E& S#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
4 [$ q5 |# u. _' L7 _. ystatic int report_error( char *file, int line, char *call, int irc)
, w5 G, X# `! o" l/ S9 ~( Q{
, M! e$ I+ W! ]( H    if (irc)% r1 q/ R/ {( V( ~0 U0 V+ D
    {7 Z+ D8 i) l( o; |8 A
        char err[133],
4 [7 h7 t# N4 Y) Z: q             msg[133];2 U; n# n% A: _$ `
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
9 C" ?# w! \3 |+ X2 Y            irc, line, file);( y9 E( s2 p! q1 m
        UF_get_fail_message(irc, err);
' Q/ W8 ?# ?, Y' W% }+ V        UF_print_syslog(msg, FALSE);' c# a3 N) l9 y" b- \- ^! s& W
        UF_print_syslog(err, FALSE);+ H, C- g* y3 W% B
        UF_print_syslog("\n", FALSE);
% a$ {, `9 Z6 O' I: A" n, A        UF_print_syslog(call, FALSE);# t) ?6 {' n2 P/ g/ M& y& `$ |
        UF_print_syslog(";\n", FALSE);
' f0 o! P( U% i0 ^0 y2 |3 e0 D% N$ }        if (!UF_UI_open_listing_window())+ B' H- j: |. K
        {. W8 c7 ^2 _$ f+ C
            UF_UI_write_listing_window(msg);1 ^7 I1 I3 }" t& ~" d
            UF_UI_write_listing_window(err);- }4 G; n5 W7 ^* U& G  X* A
            UF_UI_write_listing_window("\n");
: g$ q7 V) _! P8 Y( w            UF_UI_write_listing_window(call);
* V+ H4 i2 U& d, j  p4 M8 d            UF_UI_write_listing_window(";\n");9 e& O% T' P# V! d8 A
        }* _7 ?( x( W2 w3 u4 @; d
    }
) E  |. U# k/ L! W" m    return(irc);7 r" t4 o8 i3 d
}
0 Q/ W2 x" w. Z; ]5 A) ~
, A6 u& x  k$ _; ]/ @6 R! I" X5 Q/ ^/*****************************************************************************$ E8 ^  y0 y! g4 u8 d! z5 K, i: r3 X
**  Activation Methods* b5 O8 t& I6 E& A: P7 j
*****************************************************************************/
5 d9 Y% q2 J. t# y/*  Explicit Activation1 }$ b2 `" Q9 T- O3 m
**      This entry point is used to activate the application explicitly, as in
9 e" }: }0 s6 y1 I3 c) F: O. O**      "File->Execute UG/Open->User Function..." *// }  [5 z6 Y( p4 u  C' V: O9 V! L
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
8 W' w( y5 K+ l0 @) U$ i4 R{. \* F0 G: g  R, N
    /* Initialize the API environment */1 D9 C4 D5 u7 a% ^7 [
tag_t partTag = NULL_TAG;
8 X5 J% L7 ?7 p. l double coner[3] = {0,0,0};
+ v; m. J  e1 t. N1 _7 T$ g4 \. _0 Q char *edges[3] = {"length=100","width=40","height=50"};. M; {7 G# ?6 u% x7 A, R- H
tag_t blockTag = NULL_TAG;% ~# H) T+ O7 w6 @
const char * radius ="10"; $ W' K4 N( g/ n. P1 \
int smooth_overflow = 0; ' g6 h% o5 M  C+ j# w
int cliff_overflow = 0;
4 c4 U* z7 ]3 E  a int noTCh_overflow = 0;5 Z  p7 S5 |  {5 ^+ E# P4 g# r
double vrb_tool = 0.01;
) i. P. G) s* t tag_t blendfeatureTag =NULL_TAG;! ^! v  z0 d  Q2 i; i: r4 B
uf_list_p_t vertical_edges_list;
& \( Z' l1 M8 r. S" d$ I8 V uf_list_p_t edgeslist;
0 N$ D6 n7 a. b/ S& l2 u0 b- s tag_t blockbodyTag;' }9 [) ~% Y1 A6 C. Y' a
double firstpoint[3],endpoint[3];
6 E7 G! |  g1 p" O/ b0 F# q' \ int vertixCount;1 g- z8 y& o. T  Y& d* @9 x
tag_t edge; : f8 i9 Y( N9 u% u9 y/ R( a
int edgesCount;* g( ~2 |( |# \+ _6 T2 u* k
int i;
% c# ?* l4 E! w* A char mymsg[256];7 s. X' C" h. c) q
int vertical_edges_Count;1 L6 H# ~- {/ X. |/ d. `
UF_ATTR_value_t myattrvalue;8 m: M: L6 N  V8 a
. |) t# e1 T0 f% z1 t2 n
    if( UF_CALL(UF_initialize()) )
8 g% a7 }2 W2 s, l& g8 }0 i- Q  y    {+ A# Z7 @5 A" w9 c5 l) D  I
        /* Failed to initialize */! w& u0 ^) G2 G+ w; l* _2 `8 M
        return;
2 J& L" ?, w0 b6 f# W9 f4 z    }4 A9 s1 p: U/ F8 W& Z
    1 `& `4 [$ a0 i2 b! [; k) r+ K
    /* TODO: Add your application code here */
2 t* E# C( [; c0 J# | UF_UI_open_listing_window();5 K9 I3 j: E) o! C
//new part* n' K: N9 v/ b' p) D5 z
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));' [/ Z# d9 n& ~: P% T$ s  s
//new block
- z- n4 c* c* s( k8 I! k UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag* s2 f( ^" W" B# v1 h
//create vertical list+ p: L: A4 \$ S' z/ ?
UF_MODL_create_list(&vertical_edges_list);//create list
; m" q- l. d6 v //feature -> body -> edge -> vertical edge! m, N0 g8 D% w: g2 W
// 1 feature -> body
7 j6 S6 |$ `* ?" L- i- H) ^ UF_MODL_ask_feat_body(blockTag,&blockbodyTag);5 G7 L5 g7 ~8 y$ P- I4 ~
//2 body -> edge* V  s7 \3 V) ]
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
2 ~6 I( O$ t1 {/ _ //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的/ C2 X( W+ l! r( z! X6 G
UF_MODL_ask_list_count(edgeslist,&edgesCount);0 Z0 {6 Q8 O9 W$ I6 J- L# t
sprintf(mymsg,"edge count:%d\n",edgesCount);3 l1 l5 X% N1 s0 p5 _% R6 ~$ {+ x
UF_UI_write_listing_window(mymsg);
  b1 ?  B+ q. v' A2 a% V //edge -> vertical edge$ R3 `' _- A5 p: M0 u+ J. _( j. V  {4 M
for (i = 0; i < edgesCount; i++)7 e" b6 Z, {  A8 P6 `
{
; `8 B8 i* D# r' g+ s! M0 ^  UF_MODL_ask_list_item(edgeslist,i,&edge);
# a( a# J- p, l2 g/ G4 p) Y, d  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
9 L' K9 L2 a, X9 Y  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
- b" }& J5 S) u" A7 n0 a  {
, L6 Z: I% n2 B) l   UF_MODL_put_list_item(vertical_edges_list,edge);
% x' T0 P( R1 r/ _. T( X   //add arrtibute
; x* \  _; p5 n, q7 U+ q8 u$ h* Z   myattrvalue.type = UF_ATTR_real;
# w/ h/ S) H4 y" a" Q   myattrvalue.value.real = 10;
3 F8 F9 |) {. L3 A$ C) D, N6 d2 b   UF_ATTR_assign(edge,"blendradius",myattrvalue);
& v9 N7 V2 h* [  }: g, g( k  r$ N: l) \1 s9 M1 N/ n
}
8 N6 V! X" F( W UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
7 z% B1 w* u; {6 o! y) V* M sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
# @9 u+ ]# V0 ~( n# m: H3 [ UF_UI_write_listing_window(mymsg);9 \1 _7 ^. ?" R! l, e9 O: k

; ^+ ~) h: w7 Q: w //create blend(倒圆角)
$ J' X) {9 u8 Z( ^8 V UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));0 M, J3 T9 Z: F* y3 I
UF_MODL_delete_list(&vertical_edges_list);* D- F% _, V. H' m& l1 W3 K
//change body color、translucency
& s' F# K0 o0 ^* { UF_OBJ_set_color(blockbodyTag,21);//186红;21白' T) g5 O5 F2 X! a, Q9 ^( V" p8 H  }
UF_OBJ_set_translucency(blockbodyTag,50);
! T7 w6 F; k" w    /* Terminate the API environment */9 ]" _3 L& W8 d: t5 ~
    UF_CALL(UF_terminate());& f  f% R% j1 d
}
! T* Z  z# ~1 \2 E. z1 |- R5 {/*****************************************************************************' j2 S- W5 F  B4 N8 d5 {8 }
**  Utilities+ j6 `9 ?' p) _- J! p
*****************************************************************************/& i7 \) N5 K  S, w2 w, r! p5 T) j/ t7 t
/* Unload Handler% m; A# g* I! `/ E
**     This function specifies when to unload your application from Unigraphics.
, e3 O/ Q+ A$ A' Z5 y- ^0 K2 C**     If your application registers a callback (from a MenuScript item or a- }. ~% s2 [1 z  k. j( I, l
**     User Defined Object for example), this function MUST return1 m) T, b6 y; \& v
**     "UF_UNLOAD_UG_TERMINATE". */
2 w( z' g5 ^5 W, i! k. E9 Vextern int ufusr_ask_unload( void )
! @: [, H" J  u& x% N- W{8 C, F1 e% a5 ]$ W3 F3 b
    return( UF_UNLOAD_IMMEDIATELY );
9 j- c4 q; K, b9 P% K+ W  H}! k0 i, Y; @/ r+ v# D
  R% V' s, G8 i3 C, V4 m; U+ F* y
无标题.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二次开发专题模块培训报名开始啦

    我知道了