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 3069 2

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
6 h' V, L+ ~0 W! F+ U3 {#include <stdio.h>
9 I$ |, w) J: i. P* x) q% O#include <uf.h>2 x8 l/ }- J( W# s5 Z" A; X
#include <uf_ui.h>
4 R# \$ L, r& z#include <uf_modl.h>: x2 B. }& F3 r% v' s
#include <uf_part.h>* {' S6 M7 O6 [# x3 A. v/ A2 H
#include <uf_obj.h>;1 d2 J$ n: z) w2 x
#include <uf_curve.h>
% C! f/ @5 I' Z* B5 g1 b6 `* h: D8 m" i
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))$ N9 X( A. b$ z; S7 T1 a
static int report_error( char *file, int line, char *call, int irc)2 Z9 B4 p, M3 o# Q
{% I( s8 |* b6 f! L
    if (irc)
/ n! Q1 A0 G4 {$ l2 S/ V& R2 D    {3 n4 {, N' b7 Y" A
        char err[133],
- I; K( [0 T5 ]; `* h: ^! h/ ~% |             msg[133];5 T4 E; G& u; _* _
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
3 N$ {& }/ I* \9 g" m            irc, line, file);2 |' y# F& {) `. o, U; W
        UF_get_fail_message(irc, err);: u9 Z; o' B0 f% q0 J' T
        UF_print_syslog(msg, FALSE);5 ]4 V$ _* w8 a9 W
        UF_print_syslog(err, FALSE);3 }3 J4 ]. s) ]0 h, m: x
        UF_print_syslog("\n", FALSE);
. C% A7 J% L/ E% Y! h( G8 c        UF_print_syslog(call, FALSE);. D. Z5 I% Y7 W) c& J# e9 n
        UF_print_syslog(";\n", FALSE);
$ Z3 S* }: M2 _; t3 r        if (!UF_UI_open_listing_window())9 e+ o6 }/ ?, I$ q2 \
        {
4 W6 \% B7 u" u            UF_UI_write_listing_window(msg);
9 x& N2 `) A6 W9 R) _2 g            UF_UI_write_listing_window(err);
) d5 L7 X/ {) j" }# J            UF_UI_write_listing_window("\n");
1 R' e1 O9 F9 z$ b, h& G' D7 \2 {. H            UF_UI_write_listing_window(call);
( U' ?- B3 E, s9 g0 {$ I            UF_UI_write_listing_window(";\n");
7 }' l! {7 e- R3 g        }) ~5 b/ x* X4 t9 T8 W: f4 C% a
    }
3 ~- X6 r: k; X( @2 V7 V    return(irc);
' N$ L9 P/ M( o; |2 I# Z& \" L}
; Q2 g. [, j% V0 ]& t- k+ ~  \
: d- \3 h# J" [" q1 `, }* O/*****************************************************************************" u& Y5 L7 B6 [# Z
**  Activation Methods! q. \2 s/ \% F# u5 I
*****************************************************************************/  m- Y" s) R- F$ D" {
/*  Explicit Activation
8 J6 y, L# x0 x( X6 D6 @**      This entry point is used to activate the application explicitly, as in
$ I" a0 s5 S% U; Z**      "File->Execute UG/Open->User Function..." */$ `  u0 ]; O6 u, ~/ Y- b+ `1 N' _
0 h: V8 j9 {* q! E5 P2 R0 y
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
( `$ v3 Q& B) C8 D, T{- _$ n+ i5 o8 W
    /* Initialize the API environment */7 q: g/ b: P2 C) C  z+ G
tag_t partTag=NULL_TAG;
3 x4 b7 C2 b$ H( F+ [9 y# p double origin[3]={0,0,0};; N# p& P! p% Q
char *height="200";/ {' N7 a& A; ^4 i6 k0 o  x
char *diam="20";
8 f- g; P1 }7 k0 M& b double direction[3]={1,1,1};
  k1 A' S8 A% c6 c: V$ }" ~( O tag_t cy_obj_id=NULL_TAG;
+ _1 N. h/ L2 M) t3 ]6 J6 i7 @ uf_list_p_t edge_list;, }" K! r) w5 l
int count=0;1 U# F4 b3 O5 Y; m% c
tag_t edge=NULL_TAG;
! u9 B, I% N+ i' [( \2 Q3 ^; w! H double originalpoint[2][3];0 K+ f: D* E" j) d$ y
UF_CURVE_line_t curve_coords;
- {+ |8 H5 i7 `6 w$ C/ Q UF_CURVE_line_t mycurve_coords;
( s$ E' l" V8 ^; a9 }* ~ tag_t linetag=NULL_TAG;$ }) {# R) t8 E: `( N2 k/ Z
tag_t body_ID=NULL_TAG;( L" e) p+ P# `& M4 T4 U
int i;
- q/ t) a$ D$ y1 _" ]. p- t  a char mymsg[256];
/ Y$ e$ o& m5 Q# N) I4 U9 Q3 R& ~    if( UF_CALL(UF_initialize()) )
+ w  d/ u" i5 a% r6 a    {# q* C8 L" t: W) H- Z/ n
        /* Failed to initialize */
  u/ @" ~/ r0 H3 d' b# U5 g1 L2 t* V        return;2 m* f1 h" R+ L" f5 `8 ]
    }
+ z4 z* t/ e( H; I  q/ r   
3 d5 M" p& f) @% F% v$ R    /* TODO: Add your application code here */
: N: p8 O. M  ] // 1 new part
2 y! G) l+ R& i/ Y4 n UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠1 m. `6 M& D8 ]7 L+ X2 R3 |$ i

7 ?& d5 z( `/ Q! k: z+ W0 | //2 new cylinder   L, N& Y2 A' v# z" b
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));5 e  s* |+ V" y
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
. i3 V0 s' U& w8 n) d/ q( w //feature -> body
: I# _, Z" ^( p: g5 K UF_OBJ_set_color(body_ID,21);; Q- j) @& l# {9 E6 f5 r- Q6 I
//change translucency- r6 m! U% d% u+ {
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度+ J/ e- o( U7 N, `+ q! F/ w" y
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag5 }1 E/ @- T; x4 Y. A
//3 new line0 L( L. G* t7 Q( Z, j* u4 L5 J
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
+ a, X8 H! @3 L$ X) ~" F. q* }1 @+ L UF_MODL_ask_list_count(edge_list,&count);
1 {# N# C7 }, ^ if (count>0)3 q; l4 j8 U  l! O6 ~7 @
{: b* N! z# G7 a% @& J2 T' r
     for(i=0;i<count;i++)' d& _8 {. M1 I1 _* Y; o- |, F
  {
' {6 C! V% p- v  V   UF_MODL_ask_list_item(edge_list,i,&edge);) V: i% F1 B+ h9 X8 Q
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
+ t! e9 e! y1 L6 y: w9 b2 w$ j  }
* o+ ]- R8 Y4 y8 S7 q  for (i = 0; i <3; i++)
1 B5 U+ Q  s4 j5 u  {
& h2 S7 Y. [: d7 O6 d5 E      curve_coords.start_point[i]=originalpoint[0][i];1 @! A' P+ r+ N1 Y$ W  P$ U
   curve_coords.end_point[i]=originalpoint[1][i];2 {, Z# [( L) [" f' ^, g% F" \
  }. s& b: T$ n7 D# [
// UF_UI_open_listing_window();
0 q! }1 N6 s+ | // 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]);% I$ ], E1 _  x
//UF_UI_write_listing_window(mymsg);
! @7 u& Q! \- {* t$ X* P$ a // uc1601(mymsg,1);$ @  t, U  z* t+ g5 l) {# K. D7 K+ f  @
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
0 A4 {$ i/ d  H0 h4 x  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点, V; x) C; i+ _) I( I$ g8 b
  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]);  w1 t% V9 d1 S" p( M1 w
  //UF_CURVE_ask_line_data(linetag,&curve_coords);
( u0 t: `( }7 @, g8 C9 x  //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]);
1 C( t2 M' t  H* g1 P- \  //UF_UI_write_listing_window(mymsg);
* K" N4 p! T* A3 L) I% u  uc1601(mymsg,1);
. I5 G9 @% k- i$ k1 v) q }7 t+ }8 _9 z7 r
else
! T: _+ V7 ?+ B' S {: ?) r: e, }6 b! |3 a3 s
  uc1601("no edge founf",1);; P7 F# u3 \- L6 K+ o: I# _( C
}0 A6 \; I% E# |- `* K" O+ Y+ k
2 ]/ q: a2 w6 A  ?' _' P

- |( G- n9 m9 ?8 [5 T' Y& B8 [% { //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);" n6 o# J7 d" t" U- h8 a) G) i
//UF_PART_save();  //保存部件; @+ O( q3 p3 t
//UF_PART_close_all();   //关闭所有
; i3 L) J' T5 f' i" t0 `
8 P% K4 m" F( M    /* Terminate the API environment */
& j; G8 @( z- {    UF_CALL(UF_terminate());
2 {  u" ^* Q- j1 J}+ |5 ^/ \9 Q# {! P4 q4 C6 }5 X
/*****************************************************************************2 C; b/ D: ?. x3 L
**  Utilities9 w5 ^) R: Y8 o8 Y
*****************************************************************************/; d" B7 _% q$ Z
/* Unload Handler
! N# }' N# a! U, p; P**     This function specifies when to unload your application from Unigraphics.# `5 l& a7 a/ t9 ~
**     If your application registers a callback (from a MenuScript item or a
8 ?7 C, A7 H7 V& Q. |' @# K**     User Defined Object for example), this function MUST return  e! n+ F3 v: |6 r
**     "UF_UNLOAD_UG_TERMINATE". */( g2 [  ~' R, t6 @7 V) Y# w  x' H( v
extern int ufusr_ask_unload( void )/ G5 \9 Z2 R7 [* v" e
{
% X) y1 \" g4 U! ?    return( UF_UNLOAD_IMMEDIATELY );
6 b8 H8 D% q8 M}; w+ O' j8 l) m# L: k9 q

' {6 H6 H4 w/ Z2 j
2 d0 T9 n. ~% O9 w  U0 Z1 `我把圆柱的方向设成【1,1,1】,成功了( {2 ~( W. c: O

+ {1 a4 b# e" |3 ^2 @
无标题.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二次开发专题模块培训报名开始啦

    我知道了