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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */# e5 N( u# j  I" K: I
#include <stdio.h>4 t" X" p7 w2 h
#include <uf.h>0 L8 v3 z  g& H2 I' f" K
#include <uf_ui.h>3 o$ e/ z2 P* n& i  S
#include <uf_modl.h>
! s+ x* r' s; l5 E: e#include <uf_part.h>
) |* q& N' z1 R( G#include <uf_obj.h>;  i0 }+ W  ~( V% w3 v/ \
#include <uf_curve.h>  m2 _2 T8 x: j7 l9 J2 i* N
. b# ~% ]! V  z% M
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))& i2 S* p: L4 H5 K, Y7 h
static int report_error( char *file, int line, char *call, int irc)
2 m* F$ n9 n$ K' w1 r7 m# K{2 t# O- ?; P9 @+ A/ `8 |; l5 E2 D
    if (irc), C$ ?0 l( M* ^5 o6 X4 E& N
    {
* w  D9 n! p) e8 L  @( z        char err[133],+ b' ?2 r) m* \, s0 A6 H
             msg[133];  D* X$ |1 {) c7 R2 n& U6 @1 H
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ "," i9 z5 x" ?* V; w4 v/ a
            irc, line, file);& A, j. D2 y" t: E3 }
        UF_get_fail_message(irc, err);- M' a- k* A$ m: O
        UF_print_syslog(msg, FALSE);
% f. v; P; R) J& M        UF_print_syslog(err, FALSE);
- }' a; j3 m' H' V        UF_print_syslog("\n", FALSE);6 h! `* m$ Z0 V9 z* {
        UF_print_syslog(call, FALSE);
6 ?! R! n, H7 L* d        UF_print_syslog(";\n", FALSE);9 f  O( ~+ h4 h' F  V$ G. ]
        if (!UF_UI_open_listing_window())
4 C, H/ k" r1 S        {( r5 x4 J% z9 M( C' e
            UF_UI_write_listing_window(msg);
! R6 z2 A& y: m( H5 R/ f) u            UF_UI_write_listing_window(err);7 F4 D( {  J* c4 b4 `# X
            UF_UI_write_listing_window("\n");
: F) b6 n* }8 g5 v6 k& ^            UF_UI_write_listing_window(call);. q$ Q3 T3 M  L) Z6 a% K
            UF_UI_write_listing_window(";\n");' J; ~2 B5 `$ x: ~4 p# X3 M$ S% z
        }. G& z6 H+ G2 X# @4 m4 w# b
    }
2 Q$ p& G# l" f    return(irc);/ s1 l& r7 o; D7 ]$ g; f
}
5 {, }9 q# b) h% a( ?
) V: a) K1 p1 v! U  B7 g/*****************************************************************************
3 B* ?7 T+ Z3 x* v**  Activation Methods
* A2 Z$ Z7 @7 T: r" X% z2 ]*****************************************************************************// X4 V7 F( b; y9 X( D' d; h2 T
/*  Explicit Activation
9 U; M# M0 |; O( V4 S**      This entry point is used to activate the application explicitly, as in4 \) M0 Y5 R, H. j5 b" J+ [- n
**      "File->Execute UG/Open->User Function..." */
/ d' @) P5 E8 B3 [. S. a' O6 N! t' p& D) g
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
# G- W2 Q( |' J; N{
  z# d" N$ c8 F    /* Initialize the API environment *// p# N$ k' @6 q& l
tag_t partTag=NULL_TAG;
: O4 B! w, t4 {6 q8 }9 |- F3 I- _ double origin[3]={0,0,0};! _+ A7 q' g5 T/ z9 I
char *height="200";
1 `4 t- v4 Y; t' x char *diam="20";
5 N" {/ B/ Y& w double direction[3]={1,1,1};
1 q1 q. K) K' n0 b# Z% R% ?# y tag_t cy_obj_id=NULL_TAG;
/ I8 a) f" l% ^, m! e uf_list_p_t edge_list;
9 T( m/ u" Z1 B1 x6 d int count=0;0 U2 I1 L3 C: O4 E2 `
tag_t edge=NULL_TAG;
: X5 [: f- b' a double originalpoint[2][3];
% \4 t* c; i1 k UF_CURVE_line_t curve_coords;1 G9 d# Z9 V# O0 M8 q
UF_CURVE_line_t mycurve_coords;
5 p" z: q0 \6 A) y tag_t linetag=NULL_TAG;; k( O& W9 j3 o) h. `! a
tag_t body_ID=NULL_TAG;
; L  j7 s7 r" b2 p$ c) R3 z% i int i;
$ |5 X* V8 o) L9 ]3 ^7 v- f2 J* t char mymsg[256];
% R1 \; J5 _8 O$ \    if( UF_CALL(UF_initialize()) ) & ^1 {- m$ c% R
    {
- W4 E  P0 l: ]* ^: A" D# {: B0 ]: r. V        /* Failed to initialize */% \4 |" t( x9 \/ Y9 V
        return;
3 N. I: Z! v8 ^; X; O, R1 Z7 y    }! j3 o7 w% d/ b) @+ A9 e1 P
    $ z# o! C( \# z: h
    /* TODO: Add your application code here */6 i$ q6 Q; W+ f& T
// 1 new part
9 T. l3 m2 @1 v) V; |' N$ q UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
( z2 c' U+ H6 L
# E) Z: N1 e6 A  O2 S0 L //2 new cylinder
$ [& k" Q" n, B4 C. J0 N3 i: z+ z) A UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
6 [2 `4 t! p) }0 u; [) q4 C# z4 z8 @ UF_MODL_ask_feat_body(cy_obj_id,&body_ID);6 e- v: y6 T1 X  \* i- E
//feature -> body
. I# v' x: G% x9 g3 e" ~) k UF_OBJ_set_color(body_ID,21);
9 u1 m4 T& Q) c7 X) ] //change translucency
$ c+ x  H+ g% X! |, n UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
/ e& g; b, Q( l //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag- p) t3 S- H+ a/ P, s3 _+ X
//3 new line
3 R( E* `# d# H% i8 `0 K% y, V% ` UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));$ w: K: A0 G* s  S( w" [
UF_MODL_ask_list_count(edge_list,&count);
3 Z! v/ b) i% V7 Z7 Y if (count>0)4 A' G& T4 E3 Z9 N+ Z
{; Y- Q& P- U3 r7 }9 c
     for(i=0;i<count;i++)
- q' @- w3 h0 n& A  {
0 @$ m* b! m$ Y* Q% o   UF_MODL_ask_list_item(edge_list,i,&edge);: q! Q! G+ T: p3 y4 {$ C
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心2 y3 [5 g& k& Y/ w
  } 5 ^4 c% \4 c& l: k* y
  for (i = 0; i <3; i++)
2 y8 D! c9 D* w/ i8 y  {
! D( n9 T$ A0 T, w0 f; ^  A      curve_coords.start_point[i]=originalpoint[0][i];' w4 ], C: ~) j; q# W6 g
   curve_coords.end_point[i]=originalpoint[1][i];
7 u# S% {% c1 D' @  }
2 |! B. U, ]# ~) N; W& g // UF_UI_open_listing_window();
0 s  K" o1 e3 _% s. e // 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]);
7 q0 X2 L1 B! n8 Q, Z- N //UF_UI_write_listing_window(mymsg);
2 H5 @; g$ `7 O! [/ s# | // uc1601(mymsg,1);! D9 h; _; m. M! P7 I! Q# ?9 a
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
! J( ?& a6 o* |  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
* h" N2 v  k& R/ n3 z  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]);+ _+ D  K3 l0 S6 C, b& B* ]5 U
  //UF_CURVE_ask_line_data(linetag,&curve_coords);
, j2 N3 v1 ~2 y  //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]);
0 @6 i" Z6 F0 M& p: y  F  //UF_UI_write_listing_window(mymsg);
7 Z9 A( d2 f. C4 L: }1 o1 C  uc1601(mymsg,1);
1 G4 y' R% @5 p" w9 `  d4 I! r }
0 w' w" f( O0 s: K( D else
( y0 l) f6 l8 q' x- p {
0 w. ?# K! Z5 @3 `9 M  uc1601("no edge founf",1);' x/ c) t6 M: V$ s2 T- p
}
: E9 e1 `) a9 y/ _( K' }9 u6 t: X
! Y2 h. I3 |& D! ?" r" k( V+ s( f& }7 R, _3 R+ P
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);  n+ r4 Y* Y* M9 n. J/ b" }/ @
//UF_PART_save();  //保存部件
9 \$ R/ u& ], U0 q. t! A% J //UF_PART_close_all();   //关闭所有
) G. Z. f9 v$ S/ R$ L3 s
6 ]* m8 X# M$ G" h6 F& y    /* Terminate the API environment */
  c6 c9 ?, E/ X4 b0 [    UF_CALL(UF_terminate());
: T$ ?5 j$ Z# W' z* f0 }" d+ f}
6 }9 M% F: l  b& N/*****************************************************************************' M1 [. x. j' w0 G7 o  l( W* _: l% K
**  Utilities+ A0 {% g8 h& t( Z
*****************************************************************************/
8 B7 _$ k5 l1 m4 H9 ?) }/* Unload Handler
6 T" y* P8 C5 H**     This function specifies when to unload your application from Unigraphics.
! G" }! H9 G; v$ I! S3 N& @! G**     If your application registers a callback (from a MenuScript item or a6 u- R- `& [" c
**     User Defined Object for example), this function MUST return
( B3 ?9 Y. ^0 ]* R**     "UF_UNLOAD_UG_TERMINATE". */' B) ], B4 B: H3 g* W9 B7 i
extern int ufusr_ask_unload( void )
% R$ _4 W, X7 E6 b. `{* V& _1 T# G. `" q. W
    return( UF_UNLOAD_IMMEDIATELY );9 p& r% f4 u( b6 Z5 j
}. v' V8 z$ s/ p4 M+ K

/ b: C; O$ j( O3 w( b
6 [# ~9 ]7 m7 j0 d$ J! A! C我把圆柱的方向设成【1,1,1】,成功了! E4 b5 ]' j/ z( r9 s

& K) J# Q  E8 ^
无标题.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二次开发专题模块培训报名开始啦

    我知道了