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-国产软件践行者

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

2015-7-17 22:23:12 3056 2

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */& z6 y: ~! @* T" X' v' h
#include <stdio.h>1 Y' r" {+ |% p3 n1 U8 S
#include <uf.h>
: ?/ P( f0 y: O5 A#include <uf_ui.h>" A* |  y5 b) g9 d3 L7 a6 O
#include <uf_modl.h>( A! ]% J" H5 a* k* @/ `) I6 {  A" q
#include <uf_part.h>
/ y+ m/ D3 e- C6 Q: p#include <uf_obj.h>;, y/ X3 m7 d! l9 o0 ?2 Y
#include <uf_curve.h>
* b7 g& p( L* K/ |* Q# p
  b+ ~  b8 @% e2 E; ~#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))0 v* W( t; A( H: y5 X- L& v
static int report_error( char *file, int line, char *call, int irc)5 m' E. ^4 z7 I7 X
{; k9 |* c% [- T; R% p
    if (irc)+ I: C: O, l( I1 c& `7 k4 n
    {
+ l& `$ i. E2 |; n6 k        char err[133],1 S, {* `  ^! E. ]( g$ i- Y! D
             msg[133];
8 O$ Z( Q- ?* n5 _; G2 c' D        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
8 D4 o1 x0 S: g- L% y2 U4 L0 p            irc, line, file);, C: ^3 }0 G3 D6 t- }
        UF_get_fail_message(irc, err);
& N- P3 Y0 i* j3 ?% V' M        UF_print_syslog(msg, FALSE);5 I. q: k' i8 U3 Q
        UF_print_syslog(err, FALSE);* F" d: o7 r3 I! e1 L5 Q7 |: N% j
        UF_print_syslog("\n", FALSE);
' ]2 G* H$ L/ @" l        UF_print_syslog(call, FALSE);5 l' e7 X5 R/ z) _8 S3 M6 m0 {
        UF_print_syslog(";\n", FALSE);5 y6 F/ x' R+ P  N3 k( h
        if (!UF_UI_open_listing_window())
6 v% F6 f4 {! Y        {# s+ q' G+ J6 e0 T
            UF_UI_write_listing_window(msg);9 y& W" y; w. c8 r. f
            UF_UI_write_listing_window(err);
! m# T; U# S. w1 h            UF_UI_write_listing_window("\n");/ Q6 k" z- d* x7 N0 |
            UF_UI_write_listing_window(call);3 q) H/ C, M/ t* ^! s( ~/ M: y
            UF_UI_write_listing_window(";\n");! o7 f1 M/ o  m6 w, H& S% J+ M
        }
0 D' m! O( Y9 B; b    }9 z8 I/ T) W+ z) @- x
    return(irc);$ X0 c1 c8 `4 r
}
7 F4 N4 R: h6 _5 g
# D& j; r5 o% O4 u! f- [/*****************************************************************************. ]+ _. _4 t$ l1 x# S; N
**  Activation Methods1 u. a8 H' @' H# J2 b# @/ I1 @1 O. h/ X
*****************************************************************************/
+ S6 G- w+ k) _" l$ T* c/*  Explicit Activation! X  P( K) L0 D* T4 q
**      This entry point is used to activate the application explicitly, as in
5 M: I" N. Z8 q, o. M  }+ E2 t**      "File->Execute UG/Open->User Function..." */0 b' I" b! T; t* q; ?2 l; K% v

1 Z0 ]/ `5 ]$ C2 i# h6 v( Iextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
  a. L# T8 H: E* j, L( ?{+ s8 P* N) c1 Q, e- l3 L
    /* Initialize the API environment *// k- l5 V/ S/ v$ m  Q3 J/ ]9 ^
tag_t partTag=NULL_TAG;+ V& ]# a) @; a& @
double origin[3]={0,0,0};
4 s2 a& \# d( X: Y8 S char *height="200";2 H1 |$ A! E* E: I
char *diam="20";; m: Q) ~- @; U* f+ W' R" E  R
double direction[3]={1,1,1};) o  G* c/ |6 i1 q, ~
tag_t cy_obj_id=NULL_TAG;6 f% r( _7 @0 M  V' ~
uf_list_p_t edge_list;
/ h- t# V) F! C& \% N int count=0;8 s  z+ J- q& y4 w
tag_t edge=NULL_TAG;5 w: j2 s! @. m7 u9 @  P
double originalpoint[2][3];2 H8 b% C' T% r5 a! ^3 o
UF_CURVE_line_t curve_coords;& t) d/ `( T* Y) U- L& K: f7 A
UF_CURVE_line_t mycurve_coords;
7 `/ u5 R0 t2 w6 \6 X; ~1 h tag_t linetag=NULL_TAG;% a( e% j# c$ A$ N/ t* M
tag_t body_ID=NULL_TAG;7 }/ t; H, N, J' O" |
int i;* n" _+ C) W; O6 @/ ^6 d
char mymsg[256];/ p( k% t' `: G' G5 q6 R9 _
    if( UF_CALL(UF_initialize()) ) 8 q! V/ b0 ?" n+ k+ w9 o2 D% f
    {0 v, j9 v$ v8 Z# q8 r
        /* Failed to initialize */$ p4 M* m/ s5 c- `1 _7 i: J- s
        return;# l2 G8 n/ ~/ l
    }
# F' ?2 F4 A9 |' O3 e& w: y    8 ]+ B% [3 s; ?. e
    /* TODO: Add your application code here */
) W3 U+ r5 z% r. [4 X% n // 1 new part- P. X& F  ~6 W0 e# e, |
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠, u  ]- ~, b/ N6 @

  R" M* U( C/ N5 n //2 new cylinder
7 I$ u# h; o' R UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));9 m/ m, F' R3 b. I/ L" p# W
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);" s0 d( c0 V; R0 V
//feature -> body+ }& i7 S$ R9 r! j8 B7 O
UF_OBJ_set_color(body_ID,21);2 y. U: f. G7 R  R
//change translucency
2 t5 W1 Z" z: W6 R  I5 x4 X UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
% ]5 [4 g) j7 @, [ //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
6 c% O, r1 K% L5 m //3 new line
5 p3 f/ v( Q) L7 Q+ v- V UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));" r& }& t+ J% Y/ \+ M& E
UF_MODL_ask_list_count(edge_list,&count);
' z2 K8 t4 t' G* b if (count>0)4 S' ]6 {3 [1 [( R0 I. q. q! R
{6 A. `6 D, |' o4 p2 |
     for(i=0;i<count;i++)* M1 p+ ^: `6 i- ^6 ^2 c/ }+ l, a
  {
4 N. e! e6 v- `  {$ r+ ~: Y   UF_MODL_ask_list_item(edge_list,i,&edge);
6 \, B4 G; @- k   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
/ @6 }$ @8 i9 \" c$ J; P  } , r/ O( A+ V5 o& R
  for (i = 0; i <3; i++)
/ X& n4 U! v% B  {
/ j, O2 I$ H8 C  B) m      curve_coords.start_point[i]=originalpoint[0][i];8 Q; _9 V5 k! G6 x) S7 e
   curve_coords.end_point[i]=originalpoint[1][i];
" {& Q; o2 H6 x& _" J0 }* h  }' |* l# n& B5 _, [) z' I
// UF_UI_open_listing_window();
9 W# x3 G$ J. l" L6 f. f: C // sprintf_s(mymsg,sizeof(mymsg),"point1:%f,%f,%f point2:%f,%f,%f\n",curve_coords.start_point[0],curve_coords.start_point[1],curve_coords.start_point[2],curve_coords.end_point[0],curve_coords.end_point[1],curve_coords.end_point[2]);5 r, L$ u7 G4 b7 p4 y: z
//UF_UI_write_listing_window(mymsg);0 |" x: i8 ]) ?& |
// uc1601(mymsg,1);
9 r) S; C. C3 Y. v: K2 P" n  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
4 k' O1 p$ Z2 L. S" ?, R$ j# o  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点; f  S; R' i# v% A% j# X
  sprintf_s(mymsg,sizeof(mymsg),"start:%f,%f,%f  end:%f,%f,%f\n",mycurve_coords.start_point[0],mycurve_coords.start_point[1],mycurve_coords.start_point[2],mycurve_coords.end_point[0],mycurve_coords.end_point[1],mycurve_coords.end_point[2]);
! c4 {0 L- j; L. p+ a; F# K  //UF_CURVE_ask_line_data(linetag,&curve_coords);
0 I- q4 l! {" {9 ?( a" U  //sprintf_s(mymsg,sizeof(mymsg),"start:%f,%f,%f  end:%f,%f,%f\n",curve_coords.start_point[0],curve_coords.start_point[1],curve_coords.start_point[2],curve_coords.end_point[0],curve_coords.end_point[1],curve_coords.end_point[2]);6 A- S* t  C3 D/ I, _1 }! i
  //UF_UI_write_listing_window(mymsg);
0 @# x* [) R4 Y$ M7 Q  uc1601(mymsg,1);
& Y8 [5 x, E/ C  y7 ]) I }/ ?$ T5 y( M1 r: ^- h# B
else
9 ~7 h$ P. ]- ^" l' R2 H7 w {
: F0 a9 p, G$ p2 u  uc1601("no edge founf",1);+ L, S) M" V+ j
}
8 ~/ l1 M+ i- ?& Q  r8 a ! O$ D* k& ]+ Y* F: ~# r

0 ]0 L$ N& |# `. y- A4 F+ C/ P //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
3 h& u& t+ A( ?; c4 D //UF_PART_save();  //保存部件$ b% f/ f! i8 I2 {% t
//UF_PART_close_all();   //关闭所有
% \7 K" a' Z" ^- W4 l  D7 n8 l / D% v: @) X7 S) J
    /* Terminate the API environment */
) r9 E$ z8 P: X6 T0 c, k, C    UF_CALL(UF_terminate());9 O- C- w+ \2 u8 @) @% B1 |
}
5 v+ }( e4 u4 y- E/*****************************************************************************' @% _5 u1 a3 G9 h& ^# g' b, M" D
**  Utilities: a) j+ O  c4 V. h8 }* H: ^
*****************************************************************************/* _" B5 u1 {% A2 ]; P
/* Unload Handler
6 J7 _4 F+ \6 W9 _  q' h**     This function specifies when to unload your application from Unigraphics.
( X/ y, y  P8 o* s3 G  _0 J**     If your application registers a callback (from a MenuScript item or a8 G7 p, y6 ~- t* n* a
**     User Defined Object for example), this function MUST return. B' N( O; o' E2 L
**     "UF_UNLOAD_UG_TERMINATE". */# B; E& O5 H5 l, R! y7 r' u  U
extern int ufusr_ask_unload( void )
6 J$ u4 e3 F0 K- S{
3 `8 c, |* N+ L* b- u+ s    return( UF_UNLOAD_IMMEDIATELY );# B# A( c2 u5 x" b
}
0 g  Q0 }; y, R- O$ [
8 o" e+ U" J5 B7 l8 x# E% o4 w, D+ I5 ~
1 C* Y, j% e% v! ~我把圆柱的方向设成【1,1,1】,成功了8 f2 R7 I2 w. t

  ]' O2 g! B2 z3 N' Z3 n& ]) _/ Y
无标题.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
回复

使用道具 举报

全部回复2

hcaini0829 发表于 2015-7-17 22:23:12

hcaini0829 板凳

2015-7-17 22:23:12

很厉害 支持支持
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了