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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */, e% Q" I" V: h6 B/ Y$ @" n# v: \9 t
#include <stdio.h>
9 a! ]1 h! m$ {6 P/ H( ~#include <uf.h>8 X4 G& c4 g* ^1 n" t
#include <uf_ui.h>
! p  g5 `2 t1 D6 V9 @#include <uf_part.h>
' G. A' Q3 e& Q, j6 u#include <uf_modl.h>" j: V# q3 g! {  G; D  j
#include <uf_obj.h>) m0 B9 n7 w! `0 U! h
#include <uf_disp.h>( C6 g/ ]7 F2 R% g' G) }+ @7 J
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
! P+ X6 _: u- P5 C) Vstatic int report_error( char *file, int line, char *call, int irc)8 C0 V6 |! u: b3 n$ d, U: N' J- }
{* `! K+ ]  P6 P- [, ^- S
    if (irc)7 e+ L7 `' I- y( b
    {0 [( L4 G: E( @) |% [
        char err[133],) T; I7 O& ?9 f! C
             msg[133];
# Z( L) Z( ^3 ?3 g( a        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
: L8 g, y6 B# ]# J; d            irc, line, file);$ x6 K1 `! q  u
        UF_get_fail_message(irc, err);" W' b% i4 d  B
        UF_print_syslog(msg, FALSE);& k% S5 L9 V" `9 Z
        UF_print_syslog(err, FALSE);  f2 S5 X# S- R+ G: q' V8 H: [& H* A% E
        UF_print_syslog("\n", FALSE);) u: _& j6 ^% n6 I% R6 v
        UF_print_syslog(call, FALSE);+ C7 u$ [$ f$ H' N+ q
        UF_print_syslog(";\n", FALSE);
6 ]8 s9 J6 M( e7 h8 s. q        if (!UF_UI_open_listing_window())
1 n  M2 e/ w9 D4 W* E        {
- o2 F- O4 C% F! p' Y            UF_UI_write_listing_window(msg);7 @; p2 \6 Q. {6 S
            UF_UI_write_listing_window(err);( p( m- N$ A) V' z% p) x4 m1 c
            UF_UI_write_listing_window("\n");
) f: d& j1 [2 c  P6 ~, W( ]$ ^6 z            UF_UI_write_listing_window(call);8 E6 w3 u/ ]7 e- x' k
            UF_UI_write_listing_window(";\n");0 [! `+ \% q- a8 A5 n- z
        }- ~+ T& o, u  J5 ]: d' \
    }0 E6 ?% Z) r* k3 V6 N3 O+ g
    return(irc);
/ S" W0 _7 I- j7 a1 q3 d: V/ O8 r+ s}
5 P9 t- V% h3 M) ^3 d" X, D6 v5 p3 c5 J4 l: t
/*****************************************************************************
3 I" Z! l' D9 M0 A**  Activation Methods
' ?7 i" r+ x, N*****************************************************************************/
: g! I  }1 _* q- z1 m7 H+ l! U2 y/*  Explicit Activation
  R! M0 t& g, w2 n**      This entry point is used to activate the application explicitly, as in* ~" F5 w/ y: r6 b
**      "File->Execute UG/Open->User Function..." */2 d2 r- P0 X; \4 i$ n3 i
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
3 B( p0 v2 ~: y) b1 w* N{0 ?% G: w" E; y
    /* Initialize the API environment */
, D# x- E: n7 E3 Z5 Y tag_t partTag = NULL_TAG;& g, f; S- J! h: H
double coner[3] = {0,0,0};; C, H' ?1 V1 f5 |
char *edges[3] = {"length=100","width=40","height=50"};
6 A7 R2 v9 U% h+ Y( z: c tag_t blockTag = NULL_TAG;; ~6 Q& J- ~6 `( H: E1 t! {8 N* t
const char * radius ="10"; 1 P0 v. z8 t- F
int smooth_overflow = 0; 5 n& |. X* p1 |3 E3 Z0 Z$ k7 y/ j
int cliff_overflow = 0;
9 {3 Y" I7 ^5 H" a: H, B+ U: T int noTCh_overflow = 0;6 `( B! Z# B" ]/ w% t% t/ y$ W3 f
double vrb_tool = 0.01;3 ?1 K1 l: B" Y# d
tag_t blendfeatureTag =NULL_TAG;" J5 [- I2 t  M) r" o8 p
uf_list_p_t vertical_edges_list;! X2 S! C( B# j  `5 @4 j3 r& K2 u
uf_list_p_t edgeslist;
( i3 o: Q$ @9 l5 L) S: O, Z3 H tag_t blockbodyTag;& I7 C. l2 y; j. P# [  f& u. G; D
double firstpoint[3],endpoint[3];
+ t5 P; y0 g( B# }. r( ` int vertixCount;
/ \4 V7 j0 L$ G6 |5 k9 Z, z tag_t edge; 6 u/ V. E4 T' Q$ k$ q& W9 |
int edgesCount;# O4 l% _$ F& _- r, _2 h, q7 M4 g
int i;
  J, @- |" C& ^8 v5 P char mymsg[256];7 ]# i+ o) {( J# G/ b
int vertical_edges_Count;
6 Z: Z; l) Y- e5 X UF_ATTR_value_t myattrvalue;( l- T0 R, q1 C

; G3 l5 \3 _1 q" z% u    if( UF_CALL(UF_initialize()) )
9 \" s0 Z% V7 o! ]2 i    {
! ?3 X* s; Q5 T( S$ h, [& R! I        /* Failed to initialize */9 C, \5 k4 f1 P% e; A8 X* d/ \
        return;
9 j2 s* N4 h! G8 L# u+ i: _    }4 ]# U( }- P) \
    7 _' O7 B7 i1 l8 ~1 b1 z) g
    /* TODO: Add your application code here */
" H4 \& f. E* M% A UF_UI_open_listing_window();# K8 W5 P# k+ j8 y( q. E4 {4 C
//new part
% F, Q# U, G2 K/ v2 o7 z+ I# w UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
/ g9 O  m' e5 l9 y1 P  ? //new block5 W# \# |. z/ s! Z/ \6 s: `( ]
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag2 ~8 d& C) C6 Q2 U
//create vertical list+ ^8 Y  U" O, C: L8 h
UF_MODL_create_list(&vertical_edges_list);//create list
" \, I1 b$ G- w( V //feature -> body -> edge -> vertical edge
" _2 n: P4 @- l0 L1 V // 1 feature -> body  k) C6 ^5 h9 }
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
2 `* |: m( E; m, Z1 m7 _" E //2 body -> edge: U" E( _2 w$ j( g; W/ }2 B
UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
; }5 X- h  \9 R. ~! N //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
6 e2 P: B4 N5 K+ t UF_MODL_ask_list_count(edgeslist,&edgesCount);1 X; g* `* G% l0 [  f, O: q1 f
sprintf(mymsg,"edge count:%d\n",edgesCount);
0 j& w, F* F6 d# p# l' S UF_UI_write_listing_window(mymsg);
( G8 U- v: H4 X: P //edge -> vertical edge
  [! N, d+ V- N! X9 A2 x for (i = 0; i < edgesCount; i++)
& h: v8 c1 \  u# i8 B( h3 [ {' z5 z9 B3 i/ Y: |
  UF_MODL_ask_list_item(edgeslist,i,&edge);) r+ ]. `' b' H3 O/ K, j$ M" D
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);" g- R7 S! s9 J0 b! i8 [8 t: k
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
, Y% Q3 g4 \$ b; ~* k+ {  {7 S3 f. n% J/ k: y( v
   UF_MODL_put_list_item(vertical_edges_list,edge);# _! X+ M# N- h
   //add arrtibute2 R" t; B7 u1 a4 B
   myattrvalue.type = UF_ATTR_real;
. ^5 ]5 Y5 |% `; e& h( b   myattrvalue.value.real = 10;
" h3 S5 }' @- P0 ~( r   UF_ATTR_assign(edge,"blendradius",myattrvalue);1 E& r' }5 c, P7 G7 K2 y
  }( L% o4 Z/ y/ c) p1 y# \& {% X
}
" R! e6 }; \# T3 ` UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
/ W" U! f1 M0 V9 b  P9 H, b sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);( W$ F% V9 L7 k3 |
UF_UI_write_listing_window(mymsg);
$ U' ]$ |( y5 o5 V! M) G   m; {+ F' d' O2 C
//create blend(倒圆角)$ w5 z/ L3 I" e+ b  t" T
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
7 Q2 m6 {' n- J; x' w4 C8 ` UF_MODL_delete_list(&vertical_edges_list);" C3 r2 Y; J' x" @7 T
//change body color、translucency* j% {$ X5 u" H! h: A/ {. C
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
9 i5 z4 I: T* S) k+ C UF_OBJ_set_translucency(blockbodyTag,50);1 V/ R5 L( Z$ K, b
    /* Terminate the API environment */0 I& V( r" _* }  e; P
    UF_CALL(UF_terminate());
1 e; @0 w) j! F! O}
' P0 ?8 T( B! D- n4 R/*****************************************************************************9 r7 m& K$ d' ?" ~" l, }" `
**  Utilities
7 X6 m, J2 L( X*****************************************************************************/
0 a+ I8 ]: G4 t( B% e3 F$ [+ F) b/* Unload Handler
9 D  w3 Z. S$ O5 c**     This function specifies when to unload your application from Unigraphics.& P3 M) T2 r, a5 d/ ]& D, M
**     If your application registers a callback (from a MenuScript item or a
: O5 y0 H* _# v**     User Defined Object for example), this function MUST return! o6 E' L. l$ k+ O+ L4 a
**     "UF_UNLOAD_UG_TERMINATE". */
, u" h4 f1 q8 Textern int ufusr_ask_unload( void )6 ?4 @+ S. f: }( K4 N5 h, i4 m
{
/ L2 u- i' z5 a. j: J6 d+ ~& |    return( UF_UNLOAD_IMMEDIATELY );
" S, ^4 G! ~+ V% D2 f}! G) ?" t' f/ G, k

5 N! G9 f/ i" h8 u
无标题.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二次开发专题模块培训报名开始啦

    我知道了