PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

2015-7-17 22:23:12 2972 2

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */8 r/ [7 S& J. y, C- T" G
#include <stdio.h>
/ N; m6 t: ~4 u  T6 y+ K9 J1 z3 Q) C" I#include <uf.h>
1 [2 u- t* k& ]! J, J$ I( _; Y#include <uf_ui.h>
+ E$ h0 k9 E: `. J/ Z: R5 |/ u% H- a, h#include <uf_modl.h>
- c  ^2 z8 Z  p1 n; u#include <uf_part.h>
7 M3 w' A; b7 ]7 Z0 d( l" b6 T7 Z#include <uf_obj.h>;
) o/ ]% ~* {) t0 ~$ x#include <uf_curve.h>
& R: Y/ m% E3 s0 m& b
/ q4 k( q( d. y; m; f& {#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))! J) I% n8 J; T, ?7 ?- s
static int report_error( char *file, int line, char *call, int irc)
2 g( q, @  U! k3 y$ s* u6 m; f{
+ x  j6 r8 ]/ }6 D8 O/ l, I) A    if (irc)  I+ V2 w& t( C4 F8 n3 ?
    {# }" ?5 x' }8 m9 n  O
        char err[133],* [, t2 w( w: \7 ]. Y2 P( l
             msg[133];
$ Y5 t$ }6 J4 \7 x0 @3 u/ y' H+ d' j        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",( z8 b, a+ r  }/ R% D- `
            irc, line, file);
7 f9 |' L6 j8 I& {        UF_get_fail_message(irc, err);( a& [; ~. @  I7 \; u& i! _2 \
        UF_print_syslog(msg, FALSE);
7 }9 L& K  P" c: v        UF_print_syslog(err, FALSE);
, B! Y' K& Y: _8 z& `9 p        UF_print_syslog("\n", FALSE);
* v. ^2 c& B" o, h) h" U, W        UF_print_syslog(call, FALSE);
' A0 I$ B3 E+ ]0 K: `' \$ z        UF_print_syslog(";\n", FALSE);
5 \+ |  b$ t+ J, e3 y! G" F        if (!UF_UI_open_listing_window())/ F: j5 ?5 \# I# H0 [. W
        {
% |( w' q* [; Q3 H. w- @! J            UF_UI_write_listing_window(msg);
8 s, E: \5 K- o& f; I: S8 n" R/ r0 o            UF_UI_write_listing_window(err);. F  H* O+ ^$ G
            UF_UI_write_listing_window("\n");; _% b% ]) I: j' E7 w: D, U
            UF_UI_write_listing_window(call);
; s9 z( f& ]/ r9 K/ f  c# P3 N            UF_UI_write_listing_window(";\n");
, o$ J; p* g# K: r$ w        }
0 T' `# g/ A1 V/ O0 G# O    }) q5 O+ }0 S! g
    return(irc);: v% @2 E5 ~. D, y! l! K
}
" n7 ~, p' S' f) f$ ]9 b" a" U) [1 J# {4 M1 ^( ]7 b! ?
/*****************************************************************************3 U3 {+ ^$ p8 m" A
**  Activation Methods" u  @& n% ?, H* t- o
*****************************************************************************/2 B" L8 L! R6 V! R+ o( j: L
/*  Explicit Activation2 ]; e, N. r# H: x
**      This entry point is used to activate the application explicitly, as in6 l! Q4 l& q% w# {0 m
**      "File->Execute UG/Open->User Function..." */3 G" Y7 z* S/ ^  U3 z2 u# p- ?
: N) R# ^- W! s: ]2 f
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )' e6 ?  x" i  x9 Q5 Z" Y
{( N2 k# l) I8 [# Z8 w
    /* Initialize the API environment */0 d  o( ^6 D  Y# H+ G7 M+ L0 V. B
tag_t partTag=NULL_TAG;7 w, S; B7 l" z. C, k
double origin[3]={0,0,0};
, \9 s8 D, j0 u# h& h$ j char *height="200";5 o* p! M* S& P' k7 u
char *diam="20";. V, W. @* i  E/ \5 c* q8 z# O+ q
double direction[3]={1,1,1};
  V0 S, }; K2 U5 F- R# y7 z tag_t cy_obj_id=NULL_TAG;5 i$ g! J; b4 i3 o% v& P  t
uf_list_p_t edge_list;
% @6 H- Y3 O" R% p int count=0;- e' j9 c- n+ o7 E
tag_t edge=NULL_TAG;
8 S( M. h8 X- P8 D  r* I double originalpoint[2][3];
8 ]  t. w+ Q! u7 n6 p. n' Z: ~ UF_CURVE_line_t curve_coords;1 u/ M0 `6 l. }5 e/ x; e0 ]/ D
UF_CURVE_line_t mycurve_coords;, M/ E) x# }8 p
tag_t linetag=NULL_TAG;
2 T4 ]+ }7 ^. x% `* A tag_t body_ID=NULL_TAG;
' c9 t" A6 _$ H; u0 @ int i;$ j: w/ j: i# Z; A, z+ T
char mymsg[256];+ P7 K( q9 M" S  v& }! Q% y
    if( UF_CALL(UF_initialize()) )
: }5 b9 B( u0 |2 O0 t    {; G2 j- p5 _2 o; F
        /* Failed to initialize */% W3 x, R- ^' g2 z; l7 e& ?
        return;
+ u4 t) I3 ]7 q+ o. g  z    }
0 r( f' B4 t/ l, o; U! P* ?    - {7 P1 h& y9 a5 k% a
    /* TODO: Add your application code here */& o( z7 u: X/ Y* J, r! |
// 1 new part; t2 h( b/ e- n; X( V% S  H- ]/ c3 p
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
+ g0 A4 Q) h: O7 [9 V) t0 G- E
, [' ?4 F# R8 r& S+ \ //2 new cylinder 4 A0 R5 ~4 [  ~0 c, C/ U) a7 k
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
5 p. H/ n6 _1 B UF_MODL_ask_feat_body(cy_obj_id,&body_ID);+ m) x2 d3 w7 n& R  l! `
//feature -> body; ?; W0 z5 L  i0 w0 ?
UF_OBJ_set_color(body_ID,21);
1 `# T! W, V* i8 C* e3 f+ I //change translucency
/ S. O1 i6 Q% r3 `8 ^7 d2 v UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度( A2 n; Z: _; J5 k; g. `
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
7 R0 \- U! M: C0 h //3 new line8 K9 ~+ {! B1 d* t
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
, L) }* O& S: z$ ?0 `) [! Y1 n UF_MODL_ask_list_count(edge_list,&count);9 `9 t& M) X& j7 R% G
if (count>0)
* Z# N% U# Y2 r1 z& O# n& l {, `/ r/ X; o9 l; T% Z( b3 n
     for(i=0;i<count;i++)8 T- h  M  w5 H% [3 d) m
  {, l( ^6 E. j2 {4 ]9 |& z* b' }6 W4 X
   UF_MODL_ask_list_item(edge_list,i,&edge);
! h3 q4 \. i2 ]3 |: t   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心3 E. f; l6 k/ v5 E# f$ L* x& h9 E
  } " g3 X( }6 O4 u2 P
  for (i = 0; i <3; i++)) l. V+ s: _) q! M0 u. B
  {
* Z0 h; ]) `3 j% P4 `- x7 a      curve_coords.start_point[i]=originalpoint[0][i];2 C: b- ~' G" H
   curve_coords.end_point[i]=originalpoint[1][i];# k3 U. v2 o4 R6 f- Y$ e: B% s- ]
  }: W) F) m/ J( O1 K0 q! x" H! {- d7 W
// UF_UI_open_listing_window();% O7 k7 P, v6 x; @" W
// 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 h, x& F2 f: D0 a2 d4 p //UF_UI_write_listing_window(mymsg);2 p# Y( }1 {- n
// uc1601(mymsg,1);1 g- J5 p5 N2 L% \8 w* u
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线) p4 S6 o; [" v. X+ Y; ~3 m: k* P
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
3 m; z+ }( N, a9 A: l, x& g  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]);1 |; }5 B) ~, _- K: |! [) P, ?
  //UF_CURVE_ask_line_data(linetag,&curve_coords);; f- @& S. \1 B: p
  //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]);
6 g% G8 P8 e. p& R3 g  //UF_UI_write_listing_window(mymsg);' F4 }+ `4 m' z
  uc1601(mymsg,1);% h& w" M6 a" b+ P
}
. F8 L8 r1 k- l7 e else
( D* S: b; s9 i( F {
1 ]# Z  y. ?+ N5 T7 z' i  uc1601("no edge founf",1);
, \7 t& u" `# E2 T" y6 m }, k2 t6 u' w: a. J6 O: X- |. v
+ H, U2 i+ G2 E% V/ K; K2 k) B

* R: R9 Z( s, b5 F* X# y, y# E //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
. n6 o! N- w. ]5 Y- E* ` //UF_PART_save();  //保存部件8 b( m) U( w& O" G/ p* p( K
//UF_PART_close_all();   //关闭所有
* a+ X: J" c2 s5 B 9 {6 A- Z( Q7 L$ D# m: u0 Z0 B1 w
    /* Terminate the API environment */
" x4 a( J8 {  m3 ?& n: B    UF_CALL(UF_terminate());
4 r/ B$ S9 o- W+ e}* m5 u$ q: B) ^+ x
/*****************************************************************************. Z# y+ D5 V( W0 T7 l% x( y( ^8 X
**  Utilities  s0 b3 {2 k% T8 M; d" y
*****************************************************************************/
) i5 z3 I; d' e/* Unload Handler  J1 D/ p/ |. }: D' r7 x
**     This function specifies when to unload your application from Unigraphics.3 Z  N' q: y3 n4 u! n5 V
**     If your application registers a callback (from a MenuScript item or a
" f! X6 N5 I" N! y. y**     User Defined Object for example), this function MUST return7 o: U$ V" V' h
**     "UF_UNLOAD_UG_TERMINATE". */
; E* f+ P$ O0 Z1 C6 P- Rextern int ufusr_ask_unload( void )9 q4 M3 D! C" s" C  U# \
{
: X. o0 }- V4 O5 ~% V    return( UF_UNLOAD_IMMEDIATELY );
& |" f$ h# g  d  s5 i* f}
4 s$ M% Z2 u$ [" J; _- `. R- T( s

9 W" V$ k6 o3 l' X我把圆柱的方向设成【1,1,1】,成功了# _# ?5 w, L3 f# q/ ^; D4 ]# C9 M! X2 }
7 m! q  x; J# \2 ?) j# x# @
无标题.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二次开发专题模块培训报名开始啦

    我知道了