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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
4 G/ m4 J- O$ R9 w0 H* Z$ `; g#include <stdio.h>
/ V- Q2 l6 A3 I2 i! H' i* ?% ~#include <uf.h>" l; i; N: t5 H# {- \2 G" J3 j9 Y
#include <uf_ui.h># f& D- F/ b9 U8 D( {
#include <uf_part.h>
5 O1 a& J$ \( q  y# [8 t#include <uf_modl.h>
2 l+ o, X" J; S# n3 l( f#include <uf_obj.h>7 i! X) v& w2 M0 j6 Q
#include <uf_disp.h>& t2 H% {, H# R5 o% @
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
# z0 T; K7 _8 [; _static int report_error( char *file, int line, char *call, int irc)1 F0 x+ F4 S/ G. L, `3 ^
{
- g" ]9 @% D5 B2 `0 B    if (irc)3 x# b$ t7 B7 A& d; F9 l; M
    {
1 j" n' E. o, v! J& I: O- L; [        char err[133],+ }: b9 m1 c3 `8 X7 F- k) |. |; L1 T
             msg[133];
3 B  }% B4 _( F1 X0 c/ a        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",- J2 }& ]0 u9 N) a9 c9 P2 e
            irc, line, file);
: I. Q  j/ N/ @$ e7 O, ]% F        UF_get_fail_message(irc, err);( \9 f+ I; n; H9 x5 v- j# q
        UF_print_syslog(msg, FALSE);
' Z$ Q9 ^% b# f( ]9 V        UF_print_syslog(err, FALSE);
/ @/ t5 f+ O5 V0 b; [- W% s        UF_print_syslog("\n", FALSE);
+ U& o, Q& q  J: \6 B. N7 e/ ?/ d        UF_print_syslog(call, FALSE);
% q5 v3 _" o' Z& v, }4 {) F        UF_print_syslog(";\n", FALSE);
0 N4 X' @# N8 w7 p        if (!UF_UI_open_listing_window())
3 C& T: K) E- i$ {3 O        {
7 L; ~/ b$ _5 }2 r2 l' R            UF_UI_write_listing_window(msg);
6 {8 c2 M$ [2 W: t            UF_UI_write_listing_window(err);- z4 [; d- H+ L% X$ f9 ]: B
            UF_UI_write_listing_window("\n");
  s0 |( {3 k2 m( i            UF_UI_write_listing_window(call);7 l, w' Q" `* J. a1 A' w( W
            UF_UI_write_listing_window(";\n");( P8 q% O- r3 \( c5 b& P
        }5 n2 W5 Q" C! L
    }
/ Q6 h/ I; d% b- h    return(irc);& D% m# j! N& B, C! `3 \; y
}
) M" @5 s% d8 Q9 t
1 W: C, o" {0 y; f+ c/*****************************************************************************9 W' W; `9 y! @# [3 h( e
**  Activation Methods
- |( B- E5 g7 J2 l' Z*****************************************************************************/. V3 L1 U. K0 l2 M
/*  Explicit Activation' k5 B: R3 |9 d* f' t5 M! |
**      This entry point is used to activate the application explicitly, as in! M1 P8 m* s9 I6 v; K4 B3 L4 V
**      "File->Execute UG/Open->User Function..." */
( ]- u8 m) s1 J9 L( d% ?extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
1 b5 h+ s1 ]3 H{5 ]/ {4 h2 Z1 }% \$ ]% B' [
    /* Initialize the API environment */
8 x* e/ |9 U, q6 p tag_t partTag = NULL_TAG;; j* h$ T3 w: l! H) d
double coner[3] = {0,0,0};
7 _# [0 ^" d$ E5 |5 ~ char *edges[3] = {"length=100","width=40","height=50"};
. d) Z# ^$ A5 r' P9 P1 Z# c) o tag_t blockTag = NULL_TAG;
$ E& u1 v# O5 f( m const char * radius ="10"; 8 j, p; p( W8 `0 I/ w
int smooth_overflow = 0; 0 F5 r& `, m) x' h- L" l" [4 c
int cliff_overflow = 0;! z. P' Q! {5 [
int noTCh_overflow = 0;% T: h$ V( @9 B( f+ F
double vrb_tool = 0.01;
& a' I/ @7 _" o9 f: l tag_t blendfeatureTag =NULL_TAG;
! p# O: o7 x; V; X# m- b) ` uf_list_p_t vertical_edges_list;  B3 }' X$ M* l# v3 o* k
uf_list_p_t edgeslist;' U1 \3 w1 b; H; }) _, S) `3 J  d
tag_t blockbodyTag;7 E8 {# A- H$ A
double firstpoint[3],endpoint[3];
* A& e( a" D+ F int vertixCount;& y& m& R1 P# m4 j" e
tag_t edge; 0 f1 ]9 \6 a* {* R$ \. ]
int edgesCount;
- ^9 d: a9 I9 Z int i;
0 `5 X3 p& t( d/ q% G char mymsg[256];! V( g. v* \5 d% L4 y% Q
int vertical_edges_Count;  Q7 U0 W3 `& l! I" t/ m) v
UF_ATTR_value_t myattrvalue;; ?: g: ^: g0 {+ U" v! G- {
! y& N" v  [9 ?( ]9 w
    if( UF_CALL(UF_initialize()) )
8 O1 J7 S9 X5 V1 U" U1 \    {; B5 R; Q+ M9 m
        /* Failed to initialize */
3 |* G3 a9 D9 f- |3 G$ m        return;
6 G+ b; @& L" ~2 @- R5 ?    }6 j: o, {1 `( _2 E9 P  i) p* p& F
    $ h1 E2 T# X4 h+ w4 g
    /* TODO: Add your application code here */
$ @$ r& [  p  X, J UF_UI_open_listing_window();
( z/ {+ t5 h& A+ j8 m/ V/ P. V //new part
/ v8 F0 \- z0 C  T. ?$ r. G UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
' e! R; R9 ?" G. H; \  ~$ |7 n( _ //new block! J4 x$ @4 {# \) a( r- s
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag( ^9 u4 w" S* d. e
//create vertical list5 r$ a2 v6 f6 {
UF_MODL_create_list(&vertical_edges_list);//create list% k0 O- D9 e# \$ i, p9 l
//feature -> body -> edge -> vertical edge
1 G- T; z7 q% \5 G+ Z$ h2 e8 R( L) T' m // 1 feature -> body, t; @. k" H" O  z( x& O0 Y  ]
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
: Z' f3 }) X( u) X6 g* V //2 body -> edge/ D7 q' c) g% l$ O0 O! ?
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);9 B# j/ z0 {" e
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
- R5 P5 N, Y; V+ [4 U  t UF_MODL_ask_list_count(edgeslist,&edgesCount);
1 T; K7 P/ z; N/ P) \ sprintf(mymsg,"edge count:%d\n",edgesCount);, {& n# x. o2 ]5 e1 A
UF_UI_write_listing_window(mymsg);& m1 g2 V  e# W$ Z
//edge -> vertical edge- ^( P9 T( l- f1 I) ]
for (i = 0; i < edgesCount; i++)2 z- [" F& B! \+ L( @# B
{; R9 m  F8 i5 j
  UF_MODL_ask_list_item(edgeslist,i,&edge);) _. F! E; o6 e3 }* ~
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);
; m6 d1 I0 B" M  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))3 N: D4 j) J' T, R3 @
  {
2 Q' r3 W9 d( L   UF_MODL_put_list_item(vertical_edges_list,edge);
2 H1 n' Y* L( s" u: K7 e" J* Y1 U- }) X   //add arrtibute
* t& ]! o7 g. Y' q/ f   myattrvalue.type = UF_ATTR_real;8 Z% U" ~4 \/ U0 o6 I4 W; B7 a
   myattrvalue.value.real = 10;
: M" r$ r' K$ d* i* H+ L2 U   UF_ATTR_assign(edge,"blendradius",myattrvalue);% w- E  M" b8 ~% M
  }
9 F4 P; A* H+ K$ q4 R7 W }
) \" b$ L5 g$ C! R UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
' n3 X& [! }& Q3 ?2 ^9 C3 l( `2 R) F sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
5 j; n' y: A9 t& e1 W UF_UI_write_listing_window(mymsg);5 }* c/ B4 Z9 u2 j

7 K* h9 ]5 C. H1 v9 h9 t* W# E* m/ k //create blend(倒圆角)
( i; E; p1 }5 T UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));8 C4 q% w3 |# }8 x
UF_MODL_delete_list(&vertical_edges_list);
- X1 ?/ R% }& p$ K //change body color、translucency
1 S( F) p& o$ b9 j$ w' k/ b UF_OBJ_set_color(blockbodyTag,21);//186红;21白! L/ `7 f& B! z" W) i
UF_OBJ_set_translucency(blockbodyTag,50);
5 b7 v/ x  c: V  o    /* Terminate the API environment */% x  h3 A+ U, n1 r
    UF_CALL(UF_terminate());$ ]* J3 U4 I. a8 M
}; R) j- D9 x% K
/*****************************************************************************
2 T4 e/ _. f3 @* {; D& ^**  Utilities
: W' K1 f: I7 u2 g, B, b  x* M) t*****************************************************************************/7 U% i: t; P7 }7 b  B* b% a
/* Unload Handler
7 i8 m( r7 v  Y( A) J2 ], u**     This function specifies when to unload your application from Unigraphics.
' L! L+ X% q" R6 u& \**     If your application registers a callback (from a MenuScript item or a( H4 V% F( u8 \7 M% z  x; [3 ?
**     User Defined Object for example), this function MUST return  m; G% F5 L6 T: ?
**     "UF_UNLOAD_UG_TERMINATE". */) ^$ o/ y6 p* g) o+ b9 K9 [
extern int ufusr_ask_unload( void )
( _/ Q1 H3 Z* l  I& f{
: j3 Q4 V' I7 [% @' C' A& h% g  m    return( UF_UNLOAD_IMMEDIATELY );
) L  k* @/ ?) q; R! n+ V3 S% o}6 A2 \* V! l" h( Q2 W& B
1 V9 P) B" O3 _7 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二次开发专题模块培训报名开始啦

    我知道了