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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */* R6 [) k# Z2 c. J5 T- k+ [
#include <stdio.h>
* m  |' S8 I! h! [4 w2 S#include <uf.h>
9 I! v  b: Q; q3 y- Z; g. p7 J6 B#include <uf_ui.h>1 ~5 P# g8 y* E" q
#include <uf_modl.h>1 a' G: D; _8 u. N: ~# n8 w/ [+ I
#include <uf_part.h># k- l) f0 [* W! c& n: @! {
#include <uf_obj.h>;8 S5 e- ~" h; D0 m5 c
#include <uf_curve.h>3 j, u! y) h  U/ Y

+ l1 F6 S0 G  e6 |#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))). l7 V3 @4 m" S6 r0 W; o5 M
static int report_error( char *file, int line, char *call, int irc)3 y7 M& p% B  r3 T5 {! H
{/ J7 Y8 Q0 j, ?1 o. n9 k( j; s/ y6 z+ Y
    if (irc)
  s' _" A* c5 b3 ~/ R* y" m    {7 L8 Z6 ~7 J3 c: z& g
        char err[133],% w1 d$ U9 _  l1 [& r. k' p: m! R7 C3 Z
             msg[133];3 B2 w5 c0 x" k: F' E3 i, R5 f. l
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",2 c" b2 n3 r( Y' G8 J
            irc, line, file);: F5 L3 p* ]1 g, r. G) X, a' Z5 R
        UF_get_fail_message(irc, err);
' M8 L3 @. D( k4 `* @$ k        UF_print_syslog(msg, FALSE);
( x+ m+ O) Q9 Y5 D        UF_print_syslog(err, FALSE);/ o# J) k3 H& i2 j! [/ l: Q7 b
        UF_print_syslog("\n", FALSE);* l" _2 E/ b8 b* l/ c' K. F
        UF_print_syslog(call, FALSE);5 d: a3 Z: w  a1 X7 U5 ~
        UF_print_syslog(";\n", FALSE);9 l: s( o4 C2 W+ H' F+ b4 Y6 h
        if (!UF_UI_open_listing_window())& L- G$ i" x% c. x' z0 J$ L
        {
% K7 c* y; g' t, |1 L$ k7 G$ H            UF_UI_write_listing_window(msg);
2 U1 r: N9 n+ a! I4 `/ q$ d            UF_UI_write_listing_window(err);
- B" I- |3 W. @# j            UF_UI_write_listing_window("\n");5 q7 l% M- m3 f) B! u
            UF_UI_write_listing_window(call);
0 b8 P5 T8 i3 ^/ E9 q            UF_UI_write_listing_window(";\n");
6 H& Q9 ]7 {, B4 Z* V        }
( F+ q6 |$ K! v; F    }. ?  Q: M  ]) H" w& G4 Q6 A% y9 @* V" i
    return(irc);6 `4 ^; o: t# H( b9 l
}
1 X: @+ |0 t# s+ U+ N+ C4 M3 U3 R5 F1 I
/*****************************************************************************
' ]7 Y+ j- [& I+ Y1 u, C**  Activation Methods
7 i9 S; C  x  Y*****************************************************************************/# n; E6 l1 j% h5 L  S  B
/*  Explicit Activation
; w# ]+ H. }# f6 [2 |3 ?' |$ B**      This entry point is used to activate the application explicitly, as in
" V  Y4 x/ `  C8 J**      "File->Execute UG/Open->User Function..." */% g9 a4 c# V0 O1 k6 K6 G

7 T1 p! ?& d! b- K6 P' g, ?6 @/ Nextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
4 f) Q( z4 Z& I8 f# m$ [{" D7 B, x7 c+ P! W+ b
    /* Initialize the API environment */. d6 V8 v. Z) Z
tag_t partTag=NULL_TAG;8 K$ X) T8 L' _4 G, v6 v
double origin[3]={0,0,0};
, R# H/ @5 U2 K  O& L% s char *height="200";
  k7 \# F) ~) I, ^( v5 T/ V char *diam="20";
3 G7 i4 y" x, }; S& A5 a( i, H double direction[3]={1,1,1};
' _; [4 I% x5 l tag_t cy_obj_id=NULL_TAG;5 [! M) L6 ?6 h7 `
uf_list_p_t edge_list;
5 L/ ]( v, ?; _: E% C, k; o int count=0;$ j6 u) I; Y' x2 ~2 |( E+ X  H
tag_t edge=NULL_TAG;8 y1 S; s+ }0 F/ t! p5 e
double originalpoint[2][3];9 u" X$ D( O& F& w( N8 T
UF_CURVE_line_t curve_coords;8 k2 m0 d0 X+ `
UF_CURVE_line_t mycurve_coords;! q  s2 ~7 {- Y: p* K+ E- t
tag_t linetag=NULL_TAG;
4 [' a& l. v  b" Z" B tag_t body_ID=NULL_TAG;( F) f9 ~# T- R% P5 d/ y9 r
int i;0 E8 i/ O: O/ |6 @2 O$ c# g
char mymsg[256];1 E, R9 W9 P' E" N- V
    if( UF_CALL(UF_initialize()) ) ! S( C( ^$ Y2 u" a; q: r- E
    {5 @0 i2 N, A8 o
        /* Failed to initialize */. \2 \' D' s# u+ O/ |. V
        return;  G) E/ I) l0 Z: {  w
    }
* ?* \& G) p7 l1 y! `    6 ]! w* A( u# g6 B# K: b
    /* TODO: Add your application code here */
! C8 Q% d+ t2 b: x+ e" I // 1 new part/ i$ Y7 }4 W" \
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠8 B1 a9 f  I- U8 n
  z- d! r! F5 [  t6 N/ s
//2 new cylinder
9 w+ u/ G. E% h$ j1 Q) O UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));+ i6 T( O2 ~+ J- K
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
8 I4 Z, \9 W: D2 v //feature -> body
: `6 O* d! C2 x! B. p; E UF_OBJ_set_color(body_ID,21);5 a) o, W! ~* T% ^4 `
//change translucency7 Z. g2 }0 {7 w
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
3 {0 G( q# k0 f# L$ B* D //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag" k% {4 W3 _* T
//3 new line
2 q6 F% O; Y+ q1 l8 e UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));/ E7 l7 a; |9 Q- P2 f7 J' n( V) F
UF_MODL_ask_list_count(edge_list,&count);# u' D9 k( @" D4 s9 G
if (count>0)
, B7 S8 @0 X6 {% y& ] {" r7 Z% q+ Z: i- Z$ W1 M
     for(i=0;i<count;i++)# M" T* }# ~# [2 x
  {; o; E) d0 M# N# t" k" U) _
   UF_MODL_ask_list_item(edge_list,i,&edge);
  c1 S* G2 P& \) d% i- j   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
7 `  ~! n0 y- ]4 e0 x$ Q1 c9 T  }
2 I1 G5 ?& D: k' T7 S  for (i = 0; i <3; i++)
: D/ F+ e; n& ?  {5 G; M; U% o3 j$ N3 z2 a- I
      curve_coords.start_point[i]=originalpoint[0][i];
# C! }( D3 }  }   curve_coords.end_point[i]=originalpoint[1][i];
3 {- v% w3 d/ m$ A4 n0 H  }2 N  _# Q7 M; ?' g. u1 u
// UF_UI_open_listing_window();7 Q/ ?- d) b; c/ c' R/ F
// 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]);
6 n0 w" J5 v7 l) t9 H //UF_UI_write_listing_window(mymsg);: }, d$ a1 C& x5 H( M
// uc1601(mymsg,1);7 }& ?8 X+ S- W7 X0 G9 f8 V
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线. w# R. O0 f. ]+ ^
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点: G3 p* E) ?5 ^: V
  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]);
# b4 c7 {# M, b- k0 ~1 `' H4 J  //UF_CURVE_ask_line_data(linetag,&curve_coords);% A5 A% n7 f8 }: z. ~$ a
  //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]);9 t" G; R  v+ X& L
  //UF_UI_write_listing_window(mymsg);3 z5 F8 P/ \, G+ P
  uc1601(mymsg,1);% z- I; G4 E$ ?4 Y/ Q
}$ z8 a2 H3 a4 z" P
else5 ~. g( B$ [, A% m
{
# U9 L4 L5 w' P& j: Q* P  uc1601("no edge founf",1);) v8 U8 d6 ?& C2 |2 M
}/ @9 b+ E) d8 Y2 y, }

. L( y' l; M, ~: k* _$ w9 q! ?* S$ W8 \9 o9 S8 B- s" X
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);7 B! F2 S. r( I2 F  j
//UF_PART_save();  //保存部件/ R# I1 I9 L& \
//UF_PART_close_all();   //关闭所有! {; k, ]4 \: A5 A
$ a; n' J) `+ V
    /* Terminate the API environment */; R( r6 `9 H& f" P  X. s: ?5 M
    UF_CALL(UF_terminate());
$ k6 E  t9 M* O0 |}
/ a, N( a7 J. Q5 k1 l; G# {/*****************************************************************************
. }4 B! S5 \, e**  Utilities& Q* o9 O; E) c8 q; y
*****************************************************************************/
7 h( e* N4 `, i. h+ r/* Unload Handler% d4 [1 N" D& d! h' a- F
**     This function specifies when to unload your application from Unigraphics.- l2 N# M5 V/ [- U& n' |
**     If your application registers a callback (from a MenuScript item or a
. k; H3 ]1 v) b; `) c**     User Defined Object for example), this function MUST return
* J3 q3 x6 j* W: D, U**     "UF_UNLOAD_UG_TERMINATE". */
! N; L# E" v& l0 M8 }/ n. |' Gextern int ufusr_ask_unload( void )
* M5 v1 [2 ~# a{* i+ k  j# Y& }
    return( UF_UNLOAD_IMMEDIATELY );
/ R' J5 w% M* T% d# ?: c}7 C6 z. X5 P4 J" x
* e5 p3 B, e' t1 n
* B, |0 {( T  l$ n5 V
我把圆柱的方向设成【1,1,1】,成功了
& f' L0 B. v7 N, K" u: R/ E/ L
5 P, |' q  U+ ?' e
无标题.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二次开发专题模块培训报名开始啦

    我知道了