PLM之家PLMHome-国产软件践行者

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */% D2 c' w2 O; {& p# ^; P9 g- a
#include <stdio.h>
1 W8 F" C+ W; s9 h#include <uf.h>
, _9 E( @/ y( \1 B: W#include <uf_ui.h>
/ g$ M! B" _8 W' o* O) Y#include <uf_part.h>
$ H9 Q3 U6 J, N( H1 p9 [0 C# o#include <uf_modl.h>9 k4 h4 x* E- p5 F
#include <uf_obj.h>/ p( d! w7 Y; _1 n5 k! e9 ?& B, \% H  I
#include <uf_disp.h>' F0 j9 W& Q+ e
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))" \' T4 M) z8 E: X" Z3 x
static int report_error( char *file, int line, char *call, int irc). F9 K* }* g& d4 a! C
{4 y: K( g1 z$ L0 `0 f0 z8 K& N. |
    if (irc)
6 S6 P( Y9 Z, S# m    {: D" @# Z5 l7 ]; r* l4 m( ^
        char err[133],
; U$ [! t1 q- k) `2 M             msg[133];
4 v3 K+ |9 u" m! i! Z0 w+ F        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
- k) L8 {- @5 G: K            irc, line, file);
; X9 c% F1 w% Q1 g" X* l4 z5 G        UF_get_fail_message(irc, err);
0 p. L; ^5 u# r, p+ [* E) x        UF_print_syslog(msg, FALSE);
) k5 V8 ~. J" l; I% a        UF_print_syslog(err, FALSE);- u" q( G" l: E& R: U& q* _9 r
        UF_print_syslog("\n", FALSE);" w8 u) i6 X$ h% a$ j) B+ a
        UF_print_syslog(call, FALSE);, _% P& I: V; U9 S
        UF_print_syslog(";\n", FALSE);) F& B  ]. b. e! o6 {
        if (!UF_UI_open_listing_window())
4 X& V; j% |) P7 }        {  x) U" S9 r9 a: ^) W& [( T
            UF_UI_write_listing_window(msg);
% S# a: h* D- {0 L0 {; T            UF_UI_write_listing_window(err);
( v# U1 u0 c; q, Z6 [* K/ B6 w, L            UF_UI_write_listing_window("\n");
# `9 P5 r- f* u            UF_UI_write_listing_window(call);
) P9 |2 ?% {, a' K( Y            UF_UI_write_listing_window(";\n");6 |1 w3 K8 Y3 [* X3 F1 b
        }
! }6 d4 _3 h, x6 u9 j    }0 ?! s+ a. ]5 p$ W
    return(irc);3 Q+ _( }. I2 p4 \( w
}( W4 |+ E/ T" m! e
) k' S; v' `8 F
/*****************************************************************************0 p  z+ T: z1 ]2 D# W
**  Activation Methods# ]0 V8 M! ~0 r) [2 W
*****************************************************************************/( G. P* l, D3 Q# E% w
/*  Explicit Activation1 x/ m" j, q5 Z% f
**      This entry point is used to activate the application explicitly, as in# m- N" I% j+ h5 O+ y4 _
**      "File->Execute UG/Open->User Function..." */
. V; w$ W3 p$ B) d9 I0 ?1 ?3 b* C/ Jextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
6 S1 q% _, ~. Q0 ]4 @% ^{' g" ?; f4 s* U2 |  Z. _
    /* Initialize the API environment */
/ p5 V1 Q! v% h  D/ S tag_t partTag = NULL_TAG;# N7 [6 ?. t! z7 t, ?: F' {
double coner[3] = {0,0,0};4 f4 y( [5 Q; U( g/ C$ B5 Y
char *edges[3] = {"length=100","width=40","height=50"};% u' m5 @' i0 c9 q
tag_t blockTag = NULL_TAG;7 G% C2 N9 G2 ~2 }
const char * radius ="10";
5 h) `" r  ?1 C1 o+ l int smooth_overflow = 0; ' L' k" E2 C, z; e4 D- ?
int cliff_overflow = 0;/ c4 P  W2 z6 D( N
int noTCh_overflow = 0;
9 r0 D+ k, Q0 Z  H  E+ H. T double vrb_tool = 0.01;
& J5 F5 l% T  z! j& l+ }: G tag_t blendfeatureTag =NULL_TAG;  G  a- B# i& e3 y: s2 @; V
uf_list_p_t vertical_edges_list;0 o# Z+ p" X$ D( T
uf_list_p_t edgeslist;" c, `: q* V/ U+ h6 P
tag_t blockbodyTag;# v* s. G+ D$ O1 \" K+ S  Q
double firstpoint[3],endpoint[3];- @2 T& e  {+ N
int vertixCount;
" R3 T, x( j* ]" `, {6 u  H4 W tag_t edge;
  [2 x4 l& \- I( W# O0 O5 a int edgesCount;1 q. e! {6 s7 @. z
int i;
( r; S9 P  U7 F8 @$ K" _- G. f char mymsg[256];( \, h- I8 v8 z2 A- J7 I
int vertical_edges_Count;: e; r* G( S0 @0 [; l, X3 i& N
UF_ATTR_value_t myattrvalue;
4 e' n7 `" C% Z
6 }% o5 R$ y% E+ u5 G/ }    if( UF_CALL(UF_initialize()) )
% x) k, w% h- z) ~# o  r, d! e: `5 J    {
$ n2 r' b9 Z( B* r& e        /* Failed to initialize */3 u& Z' ]; g7 H* |: ]0 J3 I- ?' F
        return;
9 S1 b( d. I5 {5 D    }$ i* z4 K2 _: g4 g+ Z3 U! o
    & g3 Q7 k* X; O7 n
    /* TODO: Add your application code here */( r$ k6 t2 }- }
UF_UI_open_listing_window();
$ s5 l; p9 @1 o8 `5 f3 [4 b7 Z2 S //new part/ J0 A9 u8 y+ h* `- q
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));$ P) D& _# m* v7 P
//new block$ ^2 s0 W& g- J. B6 ]& R
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag0 K/ t9 b; I, m0 s" t. g- ~
//create vertical list
4 x2 p- ^# T& w# R$ t UF_MODL_create_list(&vertical_edges_list);//create list
6 K! p3 U: h' [, Z8 p; { //feature -> body -> edge -> vertical edge6 p2 b3 q0 g* T1 s
// 1 feature -> body  q5 R5 b% _( G) d( i9 W  L
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
% y7 x; y- }5 I //2 body -> edge
( K$ }  j. y+ ~! A: S2 K UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);( |  K1 N0 R3 S5 O( ?
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
) t; i6 }1 T3 u( V: O/ p& J4 H UF_MODL_ask_list_count(edgeslist,&edgesCount);3 l# A/ I# T7 B, H: [! a' K. i# y
sprintf(mymsg,"edge count:%d\n",edgesCount);( D+ o) C) E6 `" p% g
UF_UI_write_listing_window(mymsg);# }7 [+ O- ]1 d4 H. h6 T- ]* r0 u' s! M( k
//edge -> vertical edge
# g0 p( L0 m9 l* s, U- } for (i = 0; i < edgesCount; i++)5 T/ O, t; s3 `% W: `3 R  k% ^
{
; b0 W% l# [, j& Z6 A/ p  UF_MODL_ask_list_item(edgeslist,i,&edge);
; h6 C/ V+ h5 V1 l% X8 S  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
1 a9 v' @' l8 B3 @  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
& y# a( e2 P$ R' _  {3 y. z: N3 d5 l% e$ E- n, B
   UF_MODL_put_list_item(vertical_edges_list,edge);
4 j: ]8 u0 f2 h* B: `/ j( O   //add arrtibute; C( X* @1 a/ S* q7 R
   myattrvalue.type = UF_ATTR_real;6 |: i, v' A9 r% W4 r
   myattrvalue.value.real = 10;# i* S  v) K  V7 ?
   UF_ATTR_assign(edge,"blendradius",myattrvalue);  C6 Y3 R! I% i; D
  }4 d) x$ t+ p( s( \
}0 Q+ H- t+ }1 I* o, }3 F
UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
6 k. ]7 {/ S8 ^# | sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);0 J: U: \& X" u' A2 F
UF_UI_write_listing_window(mymsg);
4 e7 X2 \6 H1 y2 J# j
3 P' w; _, l, a) M8 e% J: @+ w- q //create blend(倒圆角)
$ y% a. V2 A/ k0 {7 u- [+ l" Y UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
8 p6 }, K, Q; j9 @# c# Y/ d UF_MODL_delete_list(&vertical_edges_list);
3 ]) T; c/ v: Y8 a9 v% F. ]# U; y //change body color、translucency
9 _/ g) _+ s2 \4 R2 R UF_OBJ_set_color(blockbodyTag,21);//186红;21白" ^4 ?/ `- B& F" U- I  h+ q
UF_OBJ_set_translucency(blockbodyTag,50);* p% G2 b* G0 D' B+ C( A
    /* Terminate the API environment */
/ z8 U% w9 i% S. s    UF_CALL(UF_terminate());  ]" ~5 d/ F0 S: f$ ]
}
0 _5 I7 A1 K* o2 ?4 x4 z/****************************************************************************** x8 B8 ]0 s6 q2 r5 r, R( p
**  Utilities3 P. l* G; F- o6 j7 D+ |; K
*****************************************************************************/$ s; k  k9 [6 R% p
/* Unload Handler
0 R/ a( L3 w" |) W. |**     This function specifies when to unload your application from Unigraphics.
7 Z* t" z+ k8 Z' b" [2 \**     If your application registers a callback (from a MenuScript item or a/ i/ X' @* Y5 O$ W9 l' Z
**     User Defined Object for example), this function MUST return
7 Z) ]/ j# g; k8 y, e+ z; `**     "UF_UNLOAD_UG_TERMINATE". */8 J$ {( ~: Z( n: b" M7 V
extern int ufusr_ask_unload( void )" u: {8 _3 a% X* V
{) j+ q& O: M8 M7 [7 e) M
    return( UF_UNLOAD_IMMEDIATELY );; |/ D3 B1 P9 U  X% F
}+ B2 |# M4 m# m+ ?

0 @3 @) ~' j3 S! E0 E4 O* ~
无标题.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二次开发专题模块培训报名开始啦

    我知道了