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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
) l! l% y0 b( H  e. h% x#include <stdio.h>  M) p1 [1 S: x. l1 |1 K( @
#include <uf.h>% h9 b- V1 m0 |: s& J1 B: s& }
#include <uf_ui.h>! V! V8 _/ K1 O% B/ ]
#include <uf_modl.h>
% L7 D/ [3 p$ E3 e3 E3 y# D#include <uf_part.h>
8 S( p, t0 _9 f% \1 W8 V#include <uf_obj.h>;) P- s6 k+ n2 y( C" _: V' ?
#include <uf_curve.h>
- C3 F0 ~) {+ Z; L: l: j4 s
+ D7 A& V% t. v; |1 L#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
/ s2 v/ A/ e( \4 v' M; zstatic int report_error( char *file, int line, char *call, int irc)
$ T) a. A! K9 L+ R6 F# S{4 `% B* X7 C9 f1 l0 [1 _
    if (irc)" R; @; d8 I, z8 Z3 M
    {
. `9 S" J/ O4 P0 v        char err[133]," Y0 w: _. X; A0 H: I. ], l) e) X
             msg[133];
5 i. [9 Q% g6 p, Z. R6 T0 c! z        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
, c4 z1 \  R: @) F: B            irc, line, file);& u; E. ^1 m1 ~+ `" C! C. Z9 T
        UF_get_fail_message(irc, err);: J. y# P! J# v5 \) l
        UF_print_syslog(msg, FALSE);
6 G8 p( ~1 B2 {2 ]        UF_print_syslog(err, FALSE);
. w: t0 G2 c; K2 t        UF_print_syslog("\n", FALSE);  c! X* g" a: R  x# m% C
        UF_print_syslog(call, FALSE);
. m+ u3 U' Y0 X" r  l  A- a* ~& T        UF_print_syslog(";\n", FALSE);5 B$ z. h  R' y# k+ |7 E) I
        if (!UF_UI_open_listing_window())6 q* `/ V" _. K! v
        {& W+ z, m( _& P
            UF_UI_write_listing_window(msg);( M5 b7 I5 Y* O) X2 S5 y% w- Z
            UF_UI_write_listing_window(err);
8 O: K; q9 a  _3 C; n+ p            UF_UI_write_listing_window("\n");
# c6 L! E# C* f4 s; X+ |- n/ ?, ^            UF_UI_write_listing_window(call);
7 A; N4 _# K3 v# o( n3 U            UF_UI_write_listing_window(";\n");
7 ^. U) S' s3 s        }: H' A5 @" s: o! P% Y6 Q
    }
2 J* J/ Y0 a7 ]3 t5 z& t0 T    return(irc);$ N$ j- U( }2 X2 x4 `
}" M  d5 M0 b; _6 t, j6 R6 f: b

2 ]( j3 t# b- n* j/*****************************************************************************, q! U, b+ [2 X3 ?
**  Activation Methods
$ G7 Q1 f( W" S: w, X3 e! g  D' h*****************************************************************************/. r3 o# D7 T* q
/*  Explicit Activation
1 X& {  q9 m6 n6 e6 X1 Y8 Z**      This entry point is used to activate the application explicitly, as in  ~7 m, P& B% M0 j6 L( c6 K+ E* m
**      "File->Execute UG/Open->User Function..." */; j2 o& N! H2 h" y
% ?) q5 T, f6 `7 J' R0 u& o3 O
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
8 {7 ]4 u% ?1 e: D% G{1 F% W" g" J9 Q7 ~  A$ b
    /* Initialize the API environment */+ x  T* x/ V5 M; i7 y( k) k7 O. E, F" l
tag_t partTag=NULL_TAG;# k7 A8 }( j5 x0 L, ^
double origin[3]={0,0,0};
  `( L: e; O+ K8 q% H char *height="200";
% m# S" Z8 R7 p6 h$ X' \1 k char *diam="20";: I% r! W4 n6 e) J( b' b. R& r
double direction[3]={1,1,1};( S, x! X! p# n& L; Z; f& D  f
tag_t cy_obj_id=NULL_TAG;
1 ?. h" L$ y& n5 q  p uf_list_p_t edge_list;
2 z( D/ u: x4 y' D1 z6 \ int count=0;
1 ?% _$ Z! p: n, W tag_t edge=NULL_TAG;
' O6 ?4 q' j  _) Z: L$ A+ H double originalpoint[2][3];
' Q/ i$ n$ h1 U$ c, F' U UF_CURVE_line_t curve_coords;. }  ]/ H5 `& ^) l
UF_CURVE_line_t mycurve_coords;
: C! ?7 C  ]: K8 r tag_t linetag=NULL_TAG;
; k8 ], K# W+ u: w4 w4 X tag_t body_ID=NULL_TAG;
8 V9 D' c( s5 S# ` int i;
2 I6 z0 ~+ ^2 w* J1 W1 a char mymsg[256];
+ Y5 r9 ^2 l: y    if( UF_CALL(UF_initialize()) ) * ~: X6 |8 @1 G0 z
    {# I; d% t- E" R/ h& P' |1 y* x" Z
        /* Failed to initialize */
" i+ T/ m/ |  g/ X- I        return;
1 }; d. J8 e( _( R    }6 h! K. N1 p( f" X, h- }
    6 c3 d9 J* |# s9 X: x+ a$ ?
    /* TODO: Add your application code here */8 Y" ]( u* V# K; H
// 1 new part6 h2 D, o6 T3 O1 b
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠8 ]5 D. U5 o: s
* u) Z* g) D4 H9 T5 n+ I8 b5 C
//2 new cylinder
/ {0 f" a3 r7 @8 _! E UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
5 C0 j4 s  x& A+ Z! ?4 P' B UF_MODL_ask_feat_body(cy_obj_id,&body_ID);+ C% c; h- q4 x6 R
//feature -> body
& t- X5 j' E2 l* K; r UF_OBJ_set_color(body_ID,21);
& f( y: ?# F) B //change translucency) M4 F- q, n5 t* ^/ Y
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度3 A  A' H9 D+ g6 p
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag8 t% F) u: F+ u( h, K& O
//3 new line
. b, D$ q. p: F9 X# S UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
! t& ~1 b7 y- v- j6 |/ }2 b3 B UF_MODL_ask_list_count(edge_list,&count);
1 m& T7 j2 F4 p if (count>0)
; O$ H) Q7 k' [, y {: m1 |* j9 ^( ~2 Y' x7 y6 b
     for(i=0;i<count;i++)/ M8 p/ s7 \, q$ e' c# n( C
  {
; Q2 j! `1 C% e   UF_MODL_ask_list_item(edge_list,i,&edge);
9 O3 a5 x8 G  e  {9 Y3 J3 m; C6 w9 f   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
; w3 F5 }3 k/ R1 N  } / R" o  I6 L% m' c1 X* O
  for (i = 0; i <3; i++)
# S5 p5 k6 }( @' |1 T; E% F  {
1 ~$ W0 E, s- h( g9 v4 n      curve_coords.start_point[i]=originalpoint[0][i];
2 p! A: o% u0 O5 ^; K   curve_coords.end_point[i]=originalpoint[1][i];
6 y4 V) P  m& P9 O, A  }/ l+ q; {8 h+ N* s
// UF_UI_open_listing_window();
. b1 f" X4 L% n. K8 B" i" O // 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]);
" _1 o+ t1 j( A/ J //UF_UI_write_listing_window(mymsg);
5 R  ?- R+ h9 Y1 y // uc1601(mymsg,1);
1 N7 v# e$ v& H1 |9 K$ Y  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线) Z8 {" I) I, \( A9 ?) R7 G! l, L
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点! j( o2 M/ Y/ m) B9 r5 ~; f1 }5 c
  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]);$ L- Q: R- }. ~2 \% A  ~; g
  //UF_CURVE_ask_line_data(linetag,&curve_coords);9 y+ M' Z( `, a) }8 G  i- \
  //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]);
' v, F* K0 Z5 J. Q  //UF_UI_write_listing_window(mymsg);2 G. f* x1 Z; B& u* c8 ~
  uc1601(mymsg,1);
2 J: k. s0 M" N7 A  o7 y- F$ @ }+ C9 C6 r% r, q
else0 A- O3 z2 o' ^$ t% V, Z+ E
{
0 O2 ^; m# J* R! a9 E  uc1601("no edge founf",1);
; h4 V4 E+ T, _% e4 _ }; B0 |4 h1 `7 M1 M/ z" U/ N
" ^/ F: V, }8 J$ T& |6 e

% ~6 I3 x3 x# W4 Z, y //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
2 P0 Q0 g- P$ y //UF_PART_save();  //保存部件+ t  v0 M7 u) s, Z, v- k! J6 A* [
//UF_PART_close_all();   //关闭所有
8 O+ @$ [' s2 |0 B; @  Y+ P
: n& g3 @, I) O* B9 j- z$ v# I0 h, R: G    /* Terminate the API environment */( T" w7 [. R( s! K
    UF_CALL(UF_terminate());
/ s$ o" ]3 t, T- ^9 G2 R0 [! Q8 h}
5 e: a* q. a# Z5 E+ r/*****************************************************************************
. a$ P" U* _9 Y& S  P2 B**  Utilities
- e/ s. J8 ?- h1 Y*****************************************************************************/3 {  B& E- G0 D% G+ F
/* Unload Handler8 w) H$ y! m. Q) w0 @* S- j
**     This function specifies when to unload your application from Unigraphics.$ D) r* x* v' z3 L6 G/ B& D
**     If your application registers a callback (from a MenuScript item or a  g6 J. Q$ B( c
**     User Defined Object for example), this function MUST return
' f; `. l8 E: }- A* B5 V**     "UF_UNLOAD_UG_TERMINATE". */; A# [2 y8 B; H3 ]3 R- I
extern int ufusr_ask_unload( void )
/ v/ d" x0 B2 S4 t7 H9 i+ N  P: X{& O1 ~5 S" [8 H! ?* w/ o) y: x% K
    return( UF_UNLOAD_IMMEDIATELY );
9 s( E. J6 Q6 C! X# K1 Y}
$ J0 U4 s5 y% X  p9 |- x  {$ ~; p# j1 u9 K' O

5 A$ q6 q) x9 N/ Z我把圆柱的方向设成【1,1,1】,成功了, q4 Q" W2 h1 y6 n
: |1 N3 z! l; M5 B# y/ c
无标题.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二次开发专题模块培训报名开始啦

    我知道了