PLM之家PLMHome-工业软件与AI结合践行者

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
4 d' [5 F. O! x: o" H: ?1 ?#include <stdio.h>4 c7 C+ W) g0 O, r
#include <uf.h>: ^4 x+ R" B8 N
#include <uf_ui.h>
- {; k. m' p# j#include <uf_modl.h>$ _+ }0 q" ^1 R# ~" k
#include <uf_part.h>; @; O- C1 M8 O& V
#include <uf_obj.h>;
. e& D1 q: c3 x9 u#include <uf_curve.h>
6 z" E4 d- q8 v7 w) W' s
4 v' ]/ t' A4 P#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
4 c; w+ E  C" S. b& c1 n3 Gstatic int report_error( char *file, int line, char *call, int irc)
! _$ O4 b. P% b7 a5 x# {+ p$ z{
; i2 F( r- k7 R" `. [    if (irc)" ~' ]- e, B# u1 m9 k2 P2 _# u
    {* J4 q% w) Y* s0 G8 a" @$ L9 f
        char err[133],8 Q, d+ @  v4 t: c9 b: P/ F1 m
             msg[133];" B% t4 a* _0 |1 V4 s, h
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
3 O2 s, M* v$ _7 h3 [            irc, line, file);
8 J& N: x' K. I% o8 H. i$ G        UF_get_fail_message(irc, err);
- T/ U; h' m+ ^+ ?        UF_print_syslog(msg, FALSE);
& Z# X  W; J0 B4 R/ y        UF_print_syslog(err, FALSE);$ d+ ]2 L. J8 i
        UF_print_syslog("\n", FALSE);8 ~/ e* H; b9 j  b$ u$ D
        UF_print_syslog(call, FALSE);5 P% @% B7 |% X  h
        UF_print_syslog(";\n", FALSE);$ L' J+ ]# ]8 @+ M' g2 O: b( s6 s, }
        if (!UF_UI_open_listing_window())6 i+ |+ O# k! N7 o. J! D3 S
        {
% i, ?  h4 _8 }: ~5 n" Y            UF_UI_write_listing_window(msg);: o9 A" m9 o& J! E
            UF_UI_write_listing_window(err);
3 K* P( \1 W0 ?7 i. y& o            UF_UI_write_listing_window("\n");6 S  [7 m9 O& R/ ]) D
            UF_UI_write_listing_window(call);
; Q5 \, w( G. A, w; h& I  e# u            UF_UI_write_listing_window(";\n");- q8 T9 ~; ?, t. Q% `! u% w+ \4 F
        }+ M, X# [  Q: q& O1 F+ J
    }
$ W4 b& P( ~9 I3 I  Y0 G& f    return(irc);" i1 F; K; e, U  `- l4 d: _
}
$ S+ _+ d% n5 d* w; G# S1 m, a" G# W, C: o0 [4 r: |) }
/*****************************************************************************
" l& f6 o# _: ?4 m1 E**  Activation Methods
* q7 j% N) X1 }1 h% i: [& V*****************************************************************************/  Y5 c# M  K/ s5 C# @' P
/*  Explicit Activation& f6 @& X3 E! @, G! f) U
**      This entry point is used to activate the application explicitly, as in
- T6 E) n* m% u; u+ l**      "File->Execute UG/Open->User Function..." */5 P% r0 _+ Z* l  g# P, F2 F
2 {% K$ H6 a4 a1 d, l$ e2 b8 h3 r
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )5 E- _- b8 Q* W" L. M/ S2 p+ c
{4 k0 @  d# b2 j
    /* Initialize the API environment */4 ?" a$ W% s+ a
tag_t partTag=NULL_TAG;
& b- w( T% R4 \. |$ s double origin[3]={0,0,0};3 D6 S, P1 q  ]9 v* W. c. I$ L
char *height="200";
6 y! A" k! s% o( x- M& F char *diam="20";# x7 p- C+ Y3 [
double direction[3]={1,1,1};
( R* ?& m) W! O! N/ u- F tag_t cy_obj_id=NULL_TAG;# x8 u3 `) Q- x/ g5 n/ y
uf_list_p_t edge_list;) ?, b" v& ]7 f- E$ ^
int count=0;
) g* S9 Q& k4 C! `7 r tag_t edge=NULL_TAG;5 C$ V+ g6 _9 _' ^. w3 z
double originalpoint[2][3];, K1 F6 w2 F5 [  K, t
UF_CURVE_line_t curve_coords;& p5 v) z9 f) r; V* i, i1 A, E
UF_CURVE_line_t mycurve_coords;
. A( p2 S) Z+ A# a tag_t linetag=NULL_TAG;1 L5 V, n+ W6 J4 U
tag_t body_ID=NULL_TAG;
" T) P. c: [) y5 j int i;
7 @% q2 @! [8 r/ c) }6 w& G( b1 n$ r char mymsg[256];
: y, N# e% {& }+ F# h* ^. x    if( UF_CALL(UF_initialize()) ) ( R& B7 [2 J1 F! b: x5 @* O4 A7 P
    {
. D( d$ z$ X+ H* b0 i        /* Failed to initialize */
+ A0 T, j2 ?- }6 V! f% R        return;% Z  K  [5 L4 f; u3 o; j
    }5 U. [: C1 o# {: O7 f* D8 @
    " J$ k( w- [, R! z
    /* TODO: Add your application code here */
0 S  I+ H% U1 ]+ i( C% d: k# H // 1 new part
# p- `$ Q* x/ F, T' }. N. j( u3 Y UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
+ I1 Y3 y# k6 y
8 d0 U/ H- I$ _ //2 new cylinder $ W; {/ H' \% A! V! l
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
( A3 _: ~; Y. b8 f* W6 q UF_MODL_ask_feat_body(cy_obj_id,&body_ID);% w9 b* N* j0 [; h& l0 d
//feature -> body6 d2 Y' \5 v. H5 K; [/ z% d* |
UF_OBJ_set_color(body_ID,21);
8 _6 p5 {, ~% Z* w //change translucency
8 T8 E1 e+ n5 |7 ~ UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度9 t* E. ^/ J9 E
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag
! W  Q& n0 |- K) v; }; Q! s8 r //3 new line
6 y0 A3 o2 O4 P7 {+ ^$ ?+ J UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));2 ^' G/ Y- N4 @6 s5 v
UF_MODL_ask_list_count(edge_list,&count);3 D- B  Q4 K$ Y' |
if (count>0)
& I" o  @, @1 R7 h {* [- K$ T( F" N( S$ T- N5 J1 Y# G
     for(i=0;i<count;i++)
9 S" Q; m! ~* x* f; U9 F  {9 B' ~0 F: ^* s3 ?: B/ ^
   UF_MODL_ask_list_item(edge_list,i,&edge);' ^0 y( A2 S9 t% q9 `- w
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
/ I7 n5 [( K' |; r! _) q* D: f  }
) o6 l0 e7 V" k8 @  Y$ T  for (i = 0; i <3; i++)
- K% j! W( K; F1 l/ v  {8 ~, o3 f9 u- n2 e" P5 M
      curve_coords.start_point[i]=originalpoint[0][i];8 W4 {+ E. P. z( h% s, ?
   curve_coords.end_point[i]=originalpoint[1][i];
: J4 b% o" k# Y* H4 i; K  }
' C: K# s1 X: J4 N( ~. w, y2 M // UF_UI_open_listing_window();
* _* T1 ~. y5 Z( E6 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]);
2 ]9 l7 s; b' P5 h7 k //UF_UI_write_listing_window(mymsg);  }( H( P2 w5 l) B9 ]! b( X1 N6 j
// uc1601(mymsg,1);/ g9 O( P  [0 S; H3 K3 T
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
0 K  o3 x: P8 a# H4 n" {) ?4 O  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
# Q& Y; X; G3 x; ?% Q- X  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 p- A6 D: L" g5 V8 R7 j  //UF_CURVE_ask_line_data(linetag,&curve_coords);* f* D5 p$ r* Z* H$ f5 L
  //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]);% p, p& D, s8 x& Q! j; c, r2 D
  //UF_UI_write_listing_window(mymsg);; r! k3 h& D( h6 y: o- J
  uc1601(mymsg,1);
" Z5 F! x) J5 F1 l4 h7 c. {5 o }8 Z3 D( `1 X0 \# s
else1 d# S+ G1 C7 S1 K0 R0 {
{. ^! q! {3 P1 L  _6 w7 t- O
  uc1601("no edge founf",1);
4 `+ E/ h# P5 j, e; u }
/ h; }9 w- a( U- R  W) m0 U - F' x  E% P; D
, d9 n; A# K( ?6 x
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
& r- R' O( }3 ^9 u- x //UF_PART_save();  //保存部件
+ D7 ~& U7 L4 F2 i0 \ //UF_PART_close_all();   //关闭所有+ c' v9 k# S' x: `  S% ?
' ?  W5 |$ ]+ J5 w
    /* Terminate the API environment */: y( m" w! x1 K- C5 N4 K# ?) x7 T
    UF_CALL(UF_terminate());
: r. z' P& i# O}
8 m( e- O0 n1 Y5 K" K$ Q/*****************************************************************************8 v' x; z" I4 c6 h3 e% ?
**  Utilities4 \! p. A2 [. C9 q6 O- |; o  `
*****************************************************************************/" M1 I3 x+ i0 a7 c6 f! q& V
/* Unload Handler" I4 ]& o: O! f# |( ~& g
**     This function specifies when to unload your application from Unigraphics.  [- Y' {0 A6 M; J% {
**     If your application registers a callback (from a MenuScript item or a
. [/ C% E+ W  S# H* D6 _# E$ C4 r**     User Defined Object for example), this function MUST return
- [) }* u* X* Y6 S3 E" K**     "UF_UNLOAD_UG_TERMINATE". */
* U2 |$ [- M6 D: @; O7 N" oextern int ufusr_ask_unload( void )& ]0 r7 Q( z& V6 s- ~/ ~# q
{+ T3 G' Z+ e3 ^) }2 t
    return( UF_UNLOAD_IMMEDIATELY );+ b+ u: Z( {. ?; e
}2 p, v" m" P+ q1 V" E2 t1 l
2 \% Z( G8 P; S( c. c) ^$ k- r

( y7 T# _; V) K2 U: Y' T我把圆柱的方向设成【1,1,1】,成功了
5 R6 ]6 |: R% F3 l" G& R0 S9 C* W7 A- ^  ]/ ~0 @
无标题.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二次开发专题模块培训报名开始啦

    我知道了