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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
, f/ q) m2 K% P2 }/ j#include <stdio.h>
, ~5 A- t$ k9 Y3 s1 G, I; T# t1 }, J#include <uf.h>7 k$ h) @) x, C8 c0 c/ x- A
#include <uf_ui.h>2 c7 m8 @0 t% r4 O
#include <uf_modl.h>
4 I& p8 v# Y0 ^; t* r#include <uf_part.h>
% `% F& Y, n0 f# |: v, @7 F0 l#include <uf_obj.h>;# h* g  c7 L' t+ J: h
#include <uf_curve.h>
4 U1 H3 _8 M$ H5 Y' t* t! W! U
+ J: B$ x/ C6 l$ l+ k#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
6 f" R. N4 b" v1 T+ Ystatic int report_error( char *file, int line, char *call, int irc)% F  e. x$ Q" s  Z
{
4 G2 M( O4 u4 e    if (irc)) N! g# N3 _% D& J3 g( u
    {, _" [" a. [$ G* M, q
        char err[133],- X8 x) C5 n5 |5 ?7 t
             msg[133];( x7 S% ]7 }; v- ^
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
" M7 p3 |+ K) Q) M            irc, line, file);
' @# [2 H3 }$ c4 l8 j7 j& }        UF_get_fail_message(irc, err);
* y4 D2 O0 Q# E. ^6 n: j3 X        UF_print_syslog(msg, FALSE);
& y2 i0 V1 R* _- f        UF_print_syslog(err, FALSE);+ L" D8 u/ q; Y) Z# Q
        UF_print_syslog("\n", FALSE);. u" W7 c) P1 m3 Y
        UF_print_syslog(call, FALSE);
! D! k" U( _7 E$ _! Y        UF_print_syslog(";\n", FALSE);
# ^/ y  ?- \1 {" [% N3 |3 b        if (!UF_UI_open_listing_window())7 _$ C: H6 q/ O
        {4 g3 Q. y) z9 E8 W. @
            UF_UI_write_listing_window(msg);) b! b  ?8 {: p6 K0 g
            UF_UI_write_listing_window(err);& S* J" g( e& m1 ]! b7 |, ~
            UF_UI_write_listing_window("\n");
, u# {' q9 z- x& _  Q" n            UF_UI_write_listing_window(call);
8 Z* r: Z, d7 D" n7 L            UF_UI_write_listing_window(";\n");
# d# X" {# F1 ^! a! ~" |3 o+ t7 f        }% x. S. ]- U( o: U
    }
1 y& H  S& L7 z% n    return(irc);6 l! [$ B( f$ C" Z; r
}, U3 h& _6 Z' {! R

) J6 }: ~4 g& d/*****************************************************************************
( E( O- I# ?! X0 Z**  Activation Methods- f8 C# m) \' c$ T
*****************************************************************************/8 @5 R  h4 }- x: ~5 ^
/*  Explicit Activation* @8 c  v- @1 m4 u" y( F
**      This entry point is used to activate the application explicitly, as in
  {5 e& ~, b# H6 I; p**      "File->Execute UG/Open->User Function..." */
: v1 |9 X# W& g" n2 O) F/ y
3 ]/ s; o/ F& i1 c# eextern DllExport void ufusr( char *parm, int *returnCode, int rlen )# ]1 O) f2 N+ ~! k0 ?- x0 k
{
5 U. S. M; z* U; ?: r% k4 n    /* Initialize the API environment */
* \/ z+ z3 n  b0 X1 i tag_t partTag=NULL_TAG;: {! G2 M- w9 j/ B
double origin[3]={0,0,0};
" o% w/ `0 }, ~7 G4 Y" C char *height="200";) w9 _7 t; Q: s
char *diam="20";
2 I; L* T0 E4 b1 r6 v double direction[3]={1,1,1};: H" e, L" p" D' y: w( U# P1 c0 v
tag_t cy_obj_id=NULL_TAG;* ^$ h: N7 t  g3 r  x
uf_list_p_t edge_list;
+ q: I% [2 ]7 B0 y0 x  w$ Y int count=0;* f# ^8 p+ v3 @6 `- i
tag_t edge=NULL_TAG;9 q( m5 g% z% L2 g% B
double originalpoint[2][3];
2 d- I  z: j* a% Y UF_CURVE_line_t curve_coords;8 F; I$ ], X! \8 O5 s5 J
UF_CURVE_line_t mycurve_coords;
0 t/ J- g$ v/ j0 w& u) L. ]5 k8 i# J tag_t linetag=NULL_TAG;
4 O6 }+ \4 A$ o8 B: C; b tag_t body_ID=NULL_TAG;  A8 e% X+ g% J( E& [8 ?$ X
int i;
* V/ z1 D8 V5 U char mymsg[256];
# |1 E- j& B: D9 D# H7 j    if( UF_CALL(UF_initialize()) ) 3 m& S+ @5 \5 ?7 i
    {
! t1 H0 @- N2 ]        /* Failed to initialize */; k$ H; a: I4 x- l. ]7 I8 W
        return;
! p+ ?0 A& W/ Q. D4 ^& }    }& W# Y" O( m8 V. ~' a" O
    ' M0 F; Z# R2 x( ]: a: @0 i* V
    /* TODO: Add your application code here */! O: {* c8 c$ e3 k4 N7 u+ P; V
// 1 new part& t* N2 p; N; V& O) n: l
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
( {: p& _7 q& y& \4 t
" B/ ?! E9 E3 d" X/ D //2 new cylinder
$ a% k. c! w2 v2 t4 T UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));/ C% J  l" ?- O
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
5 F7 I$ S6 G: r4 x$ K1 Q7 ]0 I: P //feature -> body
1 ]$ b5 e4 P7 m+ R' }' K7 R UF_OBJ_set_color(body_ID,21);/ j9 k7 q0 W& z+ H
//change translucency
, f( V; m; Q) O, _( v, l4 b" p/ h UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度/ G* b# F9 ?3 ^2 g8 R) j
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag; K) G4 |0 L! S& g4 p  E5 ~
//3 new line% |4 ^9 k% c* u( w
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));) s1 Y% }3 P! L- g; V8 O# Y
UF_MODL_ask_list_count(edge_list,&count);
& x1 G$ g- W# E6 ^ if (count>0)
) e9 ]4 _9 }( d0 E& { {
: U$ F% q* R. @     for(i=0;i<count;i++)
' e+ q- A7 R1 |  A( Q4 @- _  {
) o: W1 o& D5 d- Z0 y   UF_MODL_ask_list_item(edge_list,i,&edge);
+ x  @- H7 j& L  q  g& O   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
( S- S6 g& E9 n7 [  }
# M% g7 U! U# [' Y2 }5 b" N) }) c  for (i = 0; i <3; i++)) j5 F! [6 F+ c8 U: M
  {
& o6 A# b. l  I- h- }# L      curve_coords.start_point[i]=originalpoint[0][i];* a: u- t2 Y" g0 J
   curve_coords.end_point[i]=originalpoint[1][i];5 d& N0 h, ~4 r% L; ?' H
  }
( ]9 L) y/ j3 ~# F5 u( \: h // UF_UI_open_listing_window();
6 }2 }8 F3 i: g) d // 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]);) A' Y" V9 k5 a/ L4 i1 U& j3 {
//UF_UI_write_listing_window(mymsg);
7 O% H) w6 p3 T* Q/ h7 g; _; R // uc1601(mymsg,1);# T4 D* `6 G% C& c4 y9 r- R& T9 U
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线& Z0 G! x( O) Y. [1 r$ y6 X4 q
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
5 ^# `4 t% K4 g/ D7 h( Y& t  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]);
# s- q0 j1 C. K2 I1 u6 j  //UF_CURVE_ask_line_data(linetag,&curve_coords);! S! }$ R& P* p' Y4 m4 s8 v
  //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 n) C- }0 [0 B# T1 v  //UF_UI_write_listing_window(mymsg);  w% e5 G% t5 s2 Q. Y
  uc1601(mymsg,1);
( i. e" `; v' X+ d+ @ }% }  C/ ?7 S" u0 e  c4 B9 ~2 {$ }
else
) q* ^: d( \- \7 i/ S$ @8 t {1 K4 c% n. j4 H/ E
  uc1601("no edge founf",1);( R" V* C! E. Y( i0 E1 c+ j2 D5 a
}
1 D% C1 S% x5 M( v- j5 A . A6 N) u( D' p7 m, q
" ?2 w5 I1 m; E$ j# v5 _  o
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
0 z$ n2 F; @- H" U% M //UF_PART_save();  //保存部件
2 S( n+ c4 E# O" N! \- G //UF_PART_close_all();   //关闭所有" g9 v% }! m. p

' a) A( Y) ]& Q6 ^/ T    /* Terminate the API environment */  r, \( r& B6 q& X* l4 e( g
    UF_CALL(UF_terminate());
* i' P- o# f4 i* j7 v7 y  o}) k+ P1 O% Z( n4 `( v6 V
/*****************************************************************************
) [3 g. q" P9 T" G. P  ^" i**  Utilities3 m+ L0 p- l) S+ M5 Z4 ^
*****************************************************************************/2 h6 N- c# @% A) Y. @+ |7 K
/* Unload Handler
" }: _$ P- Z) K; D* Z" f**     This function specifies when to unload your application from Unigraphics.
! r" W0 _0 r$ K4 h**     If your application registers a callback (from a MenuScript item or a% E  m7 c" d6 H
**     User Defined Object for example), this function MUST return  P! [2 l3 X9 t( l# [, `3 k: y( ^
**     "UF_UNLOAD_UG_TERMINATE". */
+ [" L4 N" \; b. Zextern int ufusr_ask_unload( void )
, o: s4 d/ `5 D" O. \6 _{6 g0 O! K7 [3 Y, D
    return( UF_UNLOAD_IMMEDIATELY );
$ f0 L5 M4 \  _}
; m: J3 {/ v$ w1 {, O- ~8 F5 ^0 Y' O5 G* H, K
( z- r' u4 D# [$ W# E
我把圆柱的方向设成【1,1,1】,成功了& u: b7 U' j" _- P) n6 p& X
/ n+ o) n# i, G2 F
无标题.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二次开发专题模块培训报名开始啦

    我知道了