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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
! w0 n9 k; l! G  L0 |- w5 u$ j#include <stdio.h>
" J1 R+ v, Q2 p7 G. ~#include <uf.h>" t4 n, [3 P5 }. J! s! A
#include <uf_ui.h>
! w6 c: b9 i0 J#include <uf_modl.h>
$ s) H( \& y$ B; N# k, f#include <uf_part.h>7 ]+ v4 e2 X- |, |) W
#include <uf_obj.h>;+ D9 w3 q7 R% Z* g; S' [
#include <uf_curve.h>" m" ~  O3 o/ ?6 L. J1 f
5 h$ x5 \: i+ G0 p. y  @
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
2 h0 z7 Y4 H# J* n( tstatic int report_error( char *file, int line, char *call, int irc)
- X# \6 Y/ k- n/ x{! d5 q+ n( ~& h. H) o. V
    if (irc)
) ]/ o/ s. p) Z+ Q    {6 `! i7 _  n# x
        char err[133],/ B1 s1 X  {9 L
             msg[133];) ]6 |  W5 b% J3 P) {3 ~: k1 S$ E
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
; l1 ?7 t3 U8 f3 `: s8 J  L9 r            irc, line, file);# `" ^6 u  J" j. Y0 u0 G8 }+ B
        UF_get_fail_message(irc, err);
$ u" w- J' W9 n0 U# e1 Z  J, u        UF_print_syslog(msg, FALSE);! R6 R. D6 O. Q8 ^3 E) J8 y0 @: e
        UF_print_syslog(err, FALSE);
0 P. u; T) r" X* e/ m, y% y4 R        UF_print_syslog("\n", FALSE);
! B" h8 Q- V1 V) g- ^; @. I        UF_print_syslog(call, FALSE);# @8 _( k  q" }! P% h6 n
        UF_print_syslog(";\n", FALSE);9 s9 j! I* p9 A) J& |: G4 F
        if (!UF_UI_open_listing_window())0 r$ ]+ O: }* N  [7 L
        {  T8 @# U+ U# W! U( ^! f
            UF_UI_write_listing_window(msg);; T7 n3 ]# h; _& H8 \( S3 h: O
            UF_UI_write_listing_window(err);" l  |0 A& J- P( M( }/ A
            UF_UI_write_listing_window("\n");8 }' _+ A2 I) n* A7 [
            UF_UI_write_listing_window(call);
" Q1 {3 y( H- I% U1 w" T            UF_UI_write_listing_window(";\n");
% y* i: l0 g. `( ^- l1 {7 K" Y        }
3 \7 I0 y% [1 x$ Z) O    }
# N6 V, J) Y* l) Y) V! L    return(irc);' o2 N1 z, N0 p  ^. _* h, \
}/ @* `8 Q$ h( E8 p7 t, N' D
$ i4 G  O' @: H( o$ u
/*****************************************************************************
* o5 g0 [" I2 I, D3 f  C**  Activation Methods+ w) h7 W4 ?1 m. e
*****************************************************************************/
( }2 Z6 Z4 A6 G/ R/*  Explicit Activation
* J) Z" C) X* E1 |1 F" J  ?% C**      This entry point is used to activate the application explicitly, as in& }0 d0 h0 e$ X2 V! }8 {# z% J' r
**      "File->Execute UG/Open->User Function..." */8 \' G+ |/ B( w* ~! E; s
9 z3 ]0 [& H( {2 \
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )6 L& S- i3 K, Z0 u: D/ Q' }" I, `
{
$ P) i+ \4 Z2 h$ Y7 w" O: O* z; X/ Y    /* Initialize the API environment */3 L3 [6 |- s5 {" P1 F
tag_t partTag=NULL_TAG;
5 E4 L' e# a5 v! ]( E double origin[3]={0,0,0};* I, y  n) u" y$ C, P9 S
char *height="200";
$ x" @% t# I, v5 K+ Q char *diam="20";
/ q, v! p: ^2 M double direction[3]={1,1,1};" H$ S# v$ ?( Y2 E* D" b
tag_t cy_obj_id=NULL_TAG;3 v% k8 [& o0 n7 z  l$ e7 t' l
uf_list_p_t edge_list;7 @8 i7 Z. A# K; M# \& a
int count=0;
7 E: d$ R& i& f) e0 w( n% o4 ?$ w0 E tag_t edge=NULL_TAG;% w/ E6 Y; U# |5 F; Q& Q  f
double originalpoint[2][3];: D& e2 o. R  W) l
UF_CURVE_line_t curve_coords;
# w9 c" h3 d3 l- U UF_CURVE_line_t mycurve_coords;
6 a1 Z  l* `8 w8 O4 M8 q) W8 F tag_t linetag=NULL_TAG;
% p: k/ w/ m. }, F( \- e2 n# }/ T tag_t body_ID=NULL_TAG;  }$ m: Z: S  G9 _, P. z2 E/ V% C
int i;7 [. {+ d) |# v8 i9 f
char mymsg[256];. E3 k* |! ?4 \1 U$ @5 z, V
    if( UF_CALL(UF_initialize()) )
6 {$ K5 V( a% f( C! ]5 D( `    {
( e  O" P! J' T, N0 H# `& C        /* Failed to initialize */
: O. `: U0 o9 h6 ?+ m6 y8 I, J        return;
. [) t. e) j1 [) V2 @! O; ^    }) H& D6 [6 t! f7 G. S! s; n
   
( h* V. z( @; ~# j    /* TODO: Add your application code here */: e, s0 i) I3 p% j, e/ R- c
// 1 new part
& X' e0 t2 O2 H UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠# G2 Q) Q7 X0 v6 B' O
- j. T% `  x! \# k& A8 K; w( a" X; G
//2 new cylinder
: A6 e" q$ t* r$ _ UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));) ~" v  r) O) W% a" U
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
5 m( _$ L0 e) C, n, E, o/ B //feature -> body
7 v% L8 k$ [8 K) O- D, v UF_OBJ_set_color(body_ID,21);# ]. m& S" b5 f3 \
//change translucency* o* w. S  V: j$ V) ?
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度* K3 b" n/ C1 R
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag, I  E6 e! e  `8 H, {$ k, Y' E
//3 new line
( {0 g$ C1 m2 t8 _ UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
/ S; o' }6 }0 @ UF_MODL_ask_list_count(edge_list,&count);) r) R0 w. \. T3 l: v! v, _
if (count>0)+ z) j2 c4 E$ a( N, R5 x
{9 t+ Z! W! p/ }/ u* u; p% `
     for(i=0;i<count;i++)" c% Q$ x) }6 i" E: D6 p
  {4 C( M& B4 k# \4 e+ s) H9 l
   UF_MODL_ask_list_item(edge_list,i,&edge);8 d9 r* @" ~6 V% ?. w. d
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
, q/ A5 y0 I+ F# x' Z  } 9 J$ y8 G% H( c
  for (i = 0; i <3; i++)
4 c7 T6 D% X* O  {) E+ L* m& v9 S
      curve_coords.start_point[i]=originalpoint[0][i];8 d0 O+ l+ ?" x0 g: G! \4 T
   curve_coords.end_point[i]=originalpoint[1][i];3 _% H) J9 X, F! W9 a$ J0 z
  }! V8 p0 \0 t, @; m
// UF_UI_open_listing_window();
5 A# s3 z7 {) \$ |3 q: h  n // 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]);
4 O7 W: d/ e5 J3 e- d //UF_UI_write_listing_window(mymsg);/ r5 s. n' X" r
// uc1601(mymsg,1);
6 \; H' J  Y4 M. A  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线: E' E( L% R/ i& t6 l# h% h  H4 d: b
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
2 }  ^$ U5 N0 @8 g6 L0 Y  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]);+ |) f5 ~; t' W% H" S5 M
  //UF_CURVE_ask_line_data(linetag,&curve_coords);) c$ e. X6 S& H; n/ ?
  //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]);" I4 f9 r5 ]; t* x* y
  //UF_UI_write_listing_window(mymsg);
1 ]2 C* H4 l* ^: L. F" G( T  v' x  uc1601(mymsg,1);1 f. _; R% |( E% I  ~
}3 @: K4 v" z2 O1 v) }  B, N( H: A* h
else
( E' H4 v- Z- m& M2 \ {( n6 _6 [# N* o2 g
  uc1601("no edge founf",1);* h  C2 q( o6 J" Y" @2 Z
}4 \2 ^4 i* ?3 A* `+ @

, R/ Z- N+ w; D2 _- s  j+ n% `  C0 y6 R1 {% J' n7 G, @, H
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
# w* H2 j8 M! ~$ j3 @) p //UF_PART_save();  //保存部件
/ ^9 [4 v1 o: o0 |  ? //UF_PART_close_all();   //关闭所有  ~9 _7 u8 i/ v' ?/ |
3 [# s9 X3 o$ V$ u, }* R% g3 G0 }
    /* Terminate the API environment */
  G0 C) x" N, x9 P* X. K    UF_CALL(UF_terminate());
+ a' k/ v3 ^( g+ }  v3 t7 ?}
7 ^5 C% _; p  X4 v6 G/*****************************************************************************
6 c* G- h4 d, u! C5 @**  Utilities
- N) @( r: f( a( w9 @' C*****************************************************************************/# T3 `5 [$ H; q1 b! t* Y
/* Unload Handler
$ r" g- C" ^* Q$ o4 Q' l! Z**     This function specifies when to unload your application from Unigraphics.
* l8 I0 U7 P/ u$ C$ V4 k**     If your application registers a callback (from a MenuScript item or a
+ K+ b2 [0 P' q* v; ?**     User Defined Object for example), this function MUST return
! v, ]8 {! k' a5 @& H**     "UF_UNLOAD_UG_TERMINATE". */
  ~. K6 S" J; Iextern int ufusr_ask_unload( void )1 N! t, q, N' }$ c* b3 Z
{  Z6 {$ g' N+ X& ^
    return( UF_UNLOAD_IMMEDIATELY );- D4 [7 d9 F9 r" g& i
}
4 Z" S3 o9 G2 W! u7 S" j- [- N
' ?9 U( H& o) d. V4 A( v
6 V2 o, x) {" O我把圆柱的方向设成【1,1,1】,成功了: o4 _7 P$ S6 M9 z
: b& i; w) r: @7 w' F: o
无标题.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二次开发专题模块培训报名开始啦

    我知道了