PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
2 `! W- Q/ w. d8 H6 F1 L#include <stdio.h>' l' |1 m) Z+ o7 o+ O, d4 {* T
#include <uf.h>1 b% _/ f) [7 a( Y: c2 I1 Z8 T
#include <uf_ui.h>! S; a7 n9 R# _0 W& E
#include <uf_part.h>% s- ^  H- B* _
#include <uf_modl.h>/ b, U0 o% H% `7 e/ m& i; }( m
#include <uf_obj.h>$ [. r; R: u5 N5 @7 W2 H9 t
#include <uf_disp.h>
4 l- E% {; B5 [. `3 ?7 d' x" i#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))) q3 K# H0 X0 _! [  p+ M8 M
static int report_error( char *file, int line, char *call, int irc)
! B4 |! Z4 r4 \$ x# ~{
7 e: F6 M$ _4 l1 j    if (irc)
7 @- k" D: U. U2 Y    {
/ F) U! H8 ~% N) X( t2 f3 \0 j        char err[133],: n. v& A" i& a3 G. M
             msg[133];
& [2 A( Q- I. Y. y9 g, F        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",$ G1 T! V7 O  a$ C2 d
            irc, line, file);
* \, B; [$ |- O' R2 e+ N        UF_get_fail_message(irc, err);
7 b9 r  s7 r  L  b        UF_print_syslog(msg, FALSE);. {  s! x8 _5 F  l2 Y2 A& X' p. j
        UF_print_syslog(err, FALSE);
; R, T) \6 D) y1 @& o# o* m        UF_print_syslog("\n", FALSE);& @/ _4 C6 q0 _8 n0 K
        UF_print_syslog(call, FALSE);
/ Y4 F$ J! N8 D3 n( H) _        UF_print_syslog(";\n", FALSE);5 q7 B1 `$ C) u$ J$ ^, v( |
        if (!UF_UI_open_listing_window())3 ?0 \7 e! |) z6 ^, u9 A' I# h
        {- c) @2 |3 R. I0 C3 b) e$ f3 v. M
            UF_UI_write_listing_window(msg);0 Y0 T0 {' k2 k% f1 h' Y; q4 w
            UF_UI_write_listing_window(err);( }4 l! I9 A  E& f
            UF_UI_write_listing_window("\n");
0 u6 g* s: N4 }% c- F  M            UF_UI_write_listing_window(call);
" Z) ~0 ]2 X6 g6 L8 H' _+ A: F            UF_UI_write_listing_window(";\n");2 o( S% ^" c4 R* I. t+ c
        }
( F$ g2 M% k# X6 H5 H    }
5 ~; u4 z; T, {# D% k; X7 O7 W3 \    return(irc);. I  q5 j4 x6 ~, s/ i, _
}# V. U2 ^( @% b5 t5 V  V

9 P6 q: O+ ^+ B& f/*****************************************************************************3 J1 V  o* Q* ]1 P" S
**  Activation Methods* U7 i( x, ?. S2 `# b
*****************************************************************************/
/ n" a& x" @/ W/ Z, M! L  o/*  Explicit Activation3 g$ H  j4 L; Q8 j1 k8 b
**      This entry point is used to activate the application explicitly, as in/ o& a3 Q; t& M% U$ F. |2 m
**      "File->Execute UG/Open->User Function..." */2 g' V9 ], H" q8 j+ n- K5 c: V
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
8 J4 v/ _  V9 t* |{, t  l+ A4 R- }% K5 T
    /* Initialize the API environment */
$ ~( W: I) U0 {$ F/ X tag_t partTag = NULL_TAG;
, L; p4 p6 _8 B0 b0 U double coner[3] = {0,0,0};1 y  X$ U8 F8 \) V
char *edges[3] = {"length=100","width=40","height=50"};
" j  |+ G1 L3 U" d6 ^1 ? tag_t blockTag = NULL_TAG;! U/ Z0 t% `& ]# @6 ~% L
const char * radius ="10"; , {6 g; k- N- x' I
int smooth_overflow = 0; + k/ Z4 t$ B+ _7 P2 q) {
int cliff_overflow = 0;
; ~& p# O+ r6 Z int noTCh_overflow = 0;
# N2 O' c; k% p$ @ double vrb_tool = 0.01;4 y+ r- X! P- Y5 O4 d4 w3 c+ Q
tag_t blendfeatureTag =NULL_TAG;) h9 Q; M+ o% J- [" n
uf_list_p_t vertical_edges_list;7 T3 X8 N- g6 y  I0 C# L' j
uf_list_p_t edgeslist;0 X% A3 [3 u9 Q
tag_t blockbodyTag;
9 h* a4 K2 S; ?7 n double firstpoint[3],endpoint[3];
3 J: _+ b! @3 |' _+ O+ g int vertixCount;
+ M$ K" v4 Y: V1 P8 ^( a5 X tag_t edge; 3 d3 j  ^$ e* P1 r* H
int edgesCount;
( g9 v& l) v7 x0 m+ F4 f' i2 a int i;* e* G# x& c, C0 A$ y
char mymsg[256];
) k4 j( I/ v  M2 n" M int vertical_edges_Count;8 G) V8 [4 A' m9 q: s) S
UF_ATTR_value_t myattrvalue;# q0 m' e# @/ C! z' G
" {6 l" J7 p8 h6 e. s$ g
    if( UF_CALL(UF_initialize()) )
% x- D# T& k$ t% h4 X; H/ k    {
) s7 L5 ~' U; Q2 r        /* Failed to initialize */3 A- p' V) i  M  _4 R
        return;
& d/ H1 R+ k# W0 b; i, p    }
. w- @  C& [# O: {8 V8 U   
+ t7 ~; `- y  E; B2 i1 r  u    /* TODO: Add your application code here */- n# n3 E8 W9 `' p
UF_UI_open_listing_window();
. L4 K  |' u. Y$ x' f' o! a //new part
& R9 ^; B, [- a0 t UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
. r- m9 E% W8 b7 n% Z# P1 Q5 H: j //new block/ l. F3 @' v7 L
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag2 ^$ D" c. Z  l& {; Q) |
//create vertical list' T3 h/ h( A& {% W: j# ^1 s' Z+ ]
UF_MODL_create_list(&vertical_edges_list);//create list
, ~! T8 z8 F/ d, @% q7 X( t  ? //feature -> body -> edge -> vertical edge
0 r% Z/ s8 ~& V+ ~% v // 1 feature -> body6 }' {$ C  k: T7 J
UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
8 w1 z" e+ f5 ^! `/ O: l  L //2 body -> edge
3 ?2 m# W5 m" D" D* t& V UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);$ L8 P8 X) c/ \9 z  W, D6 j
//UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的
, n" k$ r9 f) b- B3 L3 I UF_MODL_ask_list_count(edgeslist,&edgesCount);
, a) {0 w$ w) {: J9 Y. X sprintf(mymsg,"edge count:%d\n",edgesCount);
0 k+ i& R4 a& y( a& t+ G' C UF_UI_write_listing_window(mymsg);
- W( V8 p; ~3 g/ R# B) D //edge -> vertical edge
8 k# Q" C/ e3 Y for (i = 0; i < edgesCount; i++)7 t8 {: J. Z9 _
{
, I# j' V! Y& z; c& |7 y  UF_MODL_ask_list_item(edgeslist,i,&edge);
- M$ w5 z8 I1 n/ Y/ d  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);! @, \. s; b8 T7 j7 S1 g
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
3 _% S) ]+ P6 ^4 c  J- d, h0 u3 r2 L" q  {
% J4 E$ A1 Y8 c2 o6 }2 t/ j. k   UF_MODL_put_list_item(vertical_edges_list,edge);
5 S& P  U$ B5 k5 \  h0 @0 [& L   //add arrtibute
! L8 s9 |3 o7 r; H4 r/ G6 Q   myattrvalue.type = UF_ATTR_real;
$ {/ o2 J- R& G7 }  N& S  H   myattrvalue.value.real = 10;
; G( Y  V+ A! N$ ^$ ~% w* T' T7 e! ?( P   UF_ATTR_assign(edge,"blendradius",myattrvalue);- _: \" {: c  u/ O
  }
6 `- @$ @, j4 v& z# d. |* }2 `4 K }
4 h) V6 c* i  @) G$ V UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);7 R- r. W, z" A% z" O
sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
  V8 k' t$ u( j- Y8 B UF_UI_write_listing_window(mymsg);, S2 L4 y( m/ N$ I. ~  p

) r- `- |+ u+ J- m //create blend(倒圆角)
. @# |# v+ J2 z0 B' i+ ^ UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
1 T& w0 b$ L: O UF_MODL_delete_list(&vertical_edges_list);0 b* [; @3 v0 ^! d/ a! |
//change body color、translucency1 r1 L2 w4 K+ w; H* d: y2 J3 X0 Z
UF_OBJ_set_color(blockbodyTag,21);//186红;21白
3 ~' F- B2 E8 ?7 ?) E UF_OBJ_set_translucency(blockbodyTag,50);, \; o0 Z+ n: ~1 u+ @7 h, I
    /* Terminate the API environment */
" V0 l* i" t' J' b7 n; N; p    UF_CALL(UF_terminate());
/ I+ A! A# A1 }}
- V* p/ a* z$ B' q/ r/*****************************************************************************6 ]& e/ i8 A; c) M# B+ i
**  Utilities- E4 I" C1 w+ A8 `
*****************************************************************************/0 O' F0 i, z1 q3 v4 _, o$ l, A
/* Unload Handler
, S) c3 U: v4 X  o" K4 }( }, p**     This function specifies when to unload your application from Unigraphics.5 \8 |& q$ z6 p- I  @2 }- \& b6 c
**     If your application registers a callback (from a MenuScript item or a( ~# w  G0 X. [0 U# \
**     User Defined Object for example), this function MUST return* j$ J; W- B# }/ k: W; ?
**     "UF_UNLOAD_UG_TERMINATE". */
- W  }$ a( l# J/ N; B- v5 nextern int ufusr_ask_unload( void )3 k8 n) L* \+ ?  B
{
- u- E  q0 S  y* k7 V    return( UF_UNLOAD_IMMEDIATELY );
4 _; w; t) L* a; x}
. M3 {$ j) Z9 B: H( c
- N0 a/ H/ F  U  [1 T  c( B9 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 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了