PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

[交作业] lesson3_CreateBlock

[复制链接]

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

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

文星和合 楼主

2015-4-21 21:23:10

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

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

x
/* Include files */
$ q& n! \0 W% ?9 W: s& Z8 A) J#include <stdio.h>9 F7 E! m+ Y/ |5 @8 ]& }
#include <uf.h>4 G/ A# `, s, f1 A. x! u* y
#include <uf_ui.h>' U$ u: E1 r% j0 U9 w
#include <uf_part.h>
6 q. b8 U; v$ X#include <uf_modl.h>
8 b. |5 U/ B' d8 j! b#include <uf_obj.h>
5 t6 Y% r: \7 G0 o#include <uf_disp.h>. x, D: G0 o; I+ \8 e% n
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
6 w& D; L% p5 ~static int report_error( char *file, int line, char *call, int irc)
% Z9 j  A6 _3 m9 W/ n{
6 E2 A/ w8 i; L5 m9 n* H, r    if (irc)
+ i$ c1 H: F  y& J; v    {# o  }2 c" N' H; [6 ~" R" z
        char err[133],
) L$ g0 U" p$ {1 ]             msg[133];) [& A+ c; S  X7 m
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
0 f  L& }7 M& E4 s2 V2 o% K' I! N            irc, line, file);; a0 g5 t8 F- ?& I  e4 s
        UF_get_fail_message(irc, err);
( P+ D) k  ?% E0 E        UF_print_syslog(msg, FALSE);; G8 H( Q! w: t4 {8 `$ o( ]
        UF_print_syslog(err, FALSE);9 E5 ^& o2 S) {, @6 D1 x0 l
        UF_print_syslog("\n", FALSE);
8 g4 \! k% t, u; M* f/ q" {; Z' P8 [6 m1 L        UF_print_syslog(call, FALSE);
* w5 k; B" Z4 C( G        UF_print_syslog(";\n", FALSE);( f, u3 \, s9 N3 v, N3 z( d
        if (!UF_UI_open_listing_window())2 ^) e, q! Z. [# K2 `0 A: G
        {
5 b7 V, q" s) @3 @, O            UF_UI_write_listing_window(msg);: S* u3 W: [4 L2 C
            UF_UI_write_listing_window(err);
+ g& S. d. w/ w" v2 c            UF_UI_write_listing_window("\n");9 X2 E5 ?2 x1 e; b' `' R
            UF_UI_write_listing_window(call);
( r0 M$ O) I5 _+ f            UF_UI_write_listing_window(";\n");
; Q, q2 n, q" I        }
* r5 [2 J" C2 R3 Y9 k% Y0 V& F    }; }5 t: h/ l  I+ D
    return(irc);
$ L* v  C) t8 i  U6 |1 N) h}
0 Z: G" `% [4 D3 b0 F
1 A1 L: a3 s. ?6 |) a/*****************************************************************************% r, z, A, K' Y: t$ X
**  Activation Methods
. A) R, x% S# k1 ~/ }*****************************************************************************/
0 ^# H$ W5 K$ B! v/*  Explicit Activation, i# O/ d/ K$ y' x8 ], S' w6 _$ Y
**      This entry point is used to activate the application explicitly, as in4 {& N$ `! _: r
**      "File->Execute UG/Open->User Function..." */$ p- a. ~* x7 c
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )" @  a4 e2 A- Z6 F  I( }
{
+ ?7 j! |  C9 N    /* Initialize the API environment */' Q+ u7 @# [& L4 R8 z, Y) _; {
tag_t partTag = NULL_TAG;
' i' x& ^8 k  ~  N- y- a9 s double coner[3] = {0,0,0};
+ ?+ ]( y7 b' ^/ B char *edges[3] = {"length=100","width=40","height=50"};
$ \6 D1 j/ N5 S- N8 o: A* f% ~. M tag_t blockTag = NULL_TAG;- a  I8 ~; {9 x' G  ]+ A3 q
const char * radius ="10";
* F2 \3 b$ O& y; N; L/ p' F int smooth_overflow = 0; % b  j- x( ?/ Z5 D
int cliff_overflow = 0;" v9 H/ q5 N$ V. T) Q" k9 W
int noTCh_overflow = 0;# i/ |' D- `2 G+ I2 S8 Z, @6 [: x
double vrb_tool = 0.01;, `" h3 O4 W4 j" G* d) R; x
tag_t blendfeatureTag =NULL_TAG;
+ ^! P) B$ j2 a/ l" V6 ?, S$ t; x uf_list_p_t vertical_edges_list;
3 h; @5 H* c- C( p% P: x uf_list_p_t edgeslist;
3 E# m# {; u  t4 B; P8 g: e tag_t blockbodyTag;
0 m) \! c6 c/ G; U2 B double firstpoint[3],endpoint[3];9 G7 s7 m% f  h& A6 l. a) X
int vertixCount;2 |- E+ @: c3 u: j: G8 S
tag_t edge; & ]4 |) v, ]/ A8 X0 A9 u0 B
int edgesCount;# D& k+ T! \: K1 ]
int i;
7 s- e$ O; b) _$ K/ \! d" m char mymsg[256];4 N& c& L5 H3 Q  O2 `' k" N5 A
int vertical_edges_Count;
3 W0 I! i( u8 e) m% C3 Z" ]; S( k! E/ Q/ J UF_ATTR_value_t myattrvalue;& H* c% v0 \. x( t/ y4 t% ~

( D' s2 d& J( r6 G3 Z    if( UF_CALL(UF_initialize()) )
3 n! T* i% F. c: R" J: ?" @    {
5 t6 O; e# X3 v, J" |        /* Failed to initialize */! g5 F& S" l8 N$ ]7 a
        return;  h3 ]9 w  U+ f/ H# a% ^
    }
! ~$ f3 w* _5 U  \8 ?( r- _, @2 k   
$ M- t/ Z0 L# T2 M0 h    /* TODO: Add your application code here */0 ^# \7 x6 \- n# R8 \
UF_UI_open_listing_window();& z6 O8 z8 E8 d+ ^
//new part3 }9 o$ o) m! ^, ^, U
UF_CALL(UF_PART_new("E:\\NX\\lesson3.prt",1,&partTag));
# Z) D5 ]% X4 {# S //new block2 Z- a: J: a% v. L, `2 L/ U
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,coner,edges,&blockTag));//得到block特征的tag:blockTag3 f+ @/ n0 F, d
//create vertical list5 B% S; T9 G: }; Y2 V  Q4 n" R- W" o
UF_MODL_create_list(&vertical_edges_list);//create list* c* v6 |& X$ d0 [$ L! n' N
//feature -> body -> edge -> vertical edge6 p$ F3 X3 x7 H: O1 V: [
// 1 feature -> body
6 ~6 z; v  i8 S( { UF_MODL_ask_feat_body(blockTag,&blockbodyTag);
# v" [! N5 t! Y" h+ y( v0 Y- D //2 body -> edge
+ R* Z" h9 J9 x& f/ W) Y UF_MODL_ask_body_edges(blockbodyTag,&edgeslist);
7 R" x- x4 ~: D& D% `5 W' ` //UF_MODL_ask_feat_edges(blockTag,&edgeslist);//feature->edge是可以的* h& \  A) m3 W# Q6 X. D3 \
UF_MODL_ask_list_count(edgeslist,&edgesCount);
9 g7 T- ~# H- O/ r' l! a sprintf(mymsg,"edge count:%d\n",edgesCount);3 Y$ J+ e- [3 w2 f" |$ e) [
UF_UI_write_listing_window(mymsg);
4 N: }7 c' I3 H3 F0 z* [+ K9 q //edge -> vertical edge
! T3 ~) Z' t3 r for (i = 0; i < edgesCount; i++)2 s5 }$ x7 {; t9 U# p9 N/ m
{( N" n' s, h% o+ Y# t" D! M
  UF_MODL_ask_list_item(edgeslist,i,&edge);: s2 T" f1 u! b2 l0 T! Q
  UF_MODL_ask_edge_verts(edge,firstpoint,endpoint,&vertixCount);5 V9 O6 T+ b' V2 S4 Z* {
  if ((firstpoint[0]==endpoint[0])&&(firstpoint[1]==endpoint[1])&&(firstpoint[2]!=endpoint[2]))
4 S- p3 n, k; I& P5 a  {
- Z2 ?3 R7 \1 q8 ~9 w/ e   UF_MODL_put_list_item(vertical_edges_list,edge);
: Y  g$ \3 f/ f   //add arrtibute
/ m" q' M5 v9 U- w/ f. v7 g% x- ?( G   myattrvalue.type = UF_ATTR_real;
! v( i- U& w% b   myattrvalue.value.real = 10;
' J( Y/ q5 S' S4 Y, H   UF_ATTR_assign(edge,"blendradius",myattrvalue);7 w4 n5 J! u/ U# u# q2 L
  }1 U- [; J# W( h3 w7 @* V
}
9 R& ~& h( a6 Z' l" p% { UF_MODL_ask_list_count(vertical_edges_list,&vertical_edges_Count);
+ G  S1 a1 D6 r- @% n2 j0 ] sprintf(mymsg,"vertical_edges_Count:%d\n",vertical_edges_Count);
5 k4 |( H& j# l' Y" b UF_UI_write_listing_window(mymsg);6 S; I! K1 s" C6 j
: U# ]. m- \8 E: ^; W" O
//create blend(倒圆角)7 d  u  K$ q4 _9 \0 k/ X
UF_CALL(UF_MODL_create_blend(radius,vertical_edges_list,smooth_overflow,cliff_overflow,notch_overflow,vrb_tool,&blendfeatureTag));
! X7 }  b  X+ [' e, s# s* f* G UF_MODL_delete_list(&vertical_edges_list);, v2 m- F0 D8 J( a* W) H
//change body color、translucency1 M3 y+ Z4 R* ~8 w4 M1 k% a
UF_OBJ_set_color(blockbodyTag,21);//186红;21白) W$ r% x3 a* j3 Y( ^9 e' z
UF_OBJ_set_translucency(blockbodyTag,50);- A/ U  T) {+ J% w7 J" j1 W# M
    /* Terminate the API environment */
) N" g# n: k, L$ [) G) G8 y/ E0 c9 A    UF_CALL(UF_terminate());) n0 ?0 K5 ~" K' s( h- K
}
  S+ c: ^. F/ y6 ]0 p- ]' a* x, |/*****************************************************************************( P4 _0 H6 o5 K0 D
**  Utilities" O! B: \, n" [3 S) \
*****************************************************************************/# r5 ]& P- |* S' a8 D$ N+ b
/* Unload Handler% H; J6 K& K  {# x3 m6 Q! ?
**     This function specifies when to unload your application from Unigraphics.& w+ A! E7 e  U$ Z: u4 M; B& Y
**     If your application registers a callback (from a MenuScript item or a
8 i/ x& m/ k; }0 z**     User Defined Object for example), this function MUST return
: U' W- c8 {+ `4 v8 m**     "UF_UNLOAD_UG_TERMINATE". */" l' Z8 G( I2 L" x- U5 B- a
extern int ufusr_ask_unload( void )8 B. j4 A- z; c0 ?) z
{
2 k' M1 {3 t) p. g# o; ?. W6 G    return( UF_UNLOAD_IMMEDIATELY );
* z' g, p! _$ T4 ^$ e& i- }}. j. w4 E5 L- O1 n) m1 q5 F; z
5 z: X" E, M/ X* \1 |
无标题.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二次开发专题模块培训报名开始啦

    我知道了