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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */0 _7 U) G$ Y" \6 S( S$ v
#include <stdio.h>, f  y0 Q/ ^- a& D. s
#include <uf.h>  ]6 Y4 |7 T2 V
#include <uf_ui.h>7 O- }% r2 \! A6 c7 C8 S
#include <uf_modl.h>
* T* i2 h' P; K& @1 Z# B#include <uf_part.h>
1 {3 E; c; J& |9 T  }5 [+ f( G: C#include <uf_obj.h>;
$ f6 h( a- y$ C$ u  |% o; T/ s#include <uf_curve.h>
% a0 @3 B4 G2 e, A0 X1 D
; m5 \9 D( P% x, V. `7 r3 p* M#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
1 _9 p3 V8 z! v& U) P* O1 X! x* pstatic int report_error( char *file, int line, char *call, int irc)
/ W. w5 J  D* c. a% c0 R) g$ l{+ \$ m  Q; ~9 ]) O2 q- l, o7 K: e
    if (irc)
4 B- N0 i8 a' `- H& V5 Q: X    {
, a  S2 m9 k4 e        char err[133],
; y7 ]0 R* }8 F9 B% V, ]             msg[133];
1 h, y$ X5 a5 D$ R; U        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
* R4 C' k4 c* i9 _3 B# L  B- u            irc, line, file);" ^1 R  `5 J; X% p" n3 J
        UF_get_fail_message(irc, err);. L& H) l; j0 @# J$ f3 u2 x
        UF_print_syslog(msg, FALSE);9 E& S+ ?4 K; o
        UF_print_syslog(err, FALSE);
. Y  y, l( s2 w& L  J. p; s        UF_print_syslog("\n", FALSE);$ ^/ h7 _& `$ g/ o, `) O! L
        UF_print_syslog(call, FALSE);
* L$ h; [" C# d, ~) ~        UF_print_syslog(";\n", FALSE);
/ g' h( g% M; w# `6 o7 ]. R+ u        if (!UF_UI_open_listing_window())5 x! x& v0 V: P) U* K9 f' E' b# p
        {/ C, F0 ]- f+ c7 S" Y! C
            UF_UI_write_listing_window(msg);
/ D2 Y0 B; X! I            UF_UI_write_listing_window(err);! f2 i& i% T( C$ t
            UF_UI_write_listing_window("\n");
3 d/ ~) V1 b; s% Q7 i            UF_UI_write_listing_window(call);2 i' y) L2 y+ w! t/ n* @  K
            UF_UI_write_listing_window(";\n");; E+ h% b/ G* ^  [( l$ s. q
        }
- w% J4 ?& |9 [1 ?/ T    }
: _$ N. Z, G* f/ j5 V    return(irc);* J8 F/ M+ R, o1 B, d
}
6 v" r% a1 u/ g6 [0 x# c/ B
' ^1 h8 T  d# z7 p: h" Q' e/*****************************************************************************
6 b! j" P! |+ p, j* P; W8 O**  Activation Methods
- f$ M( K2 H; `; g' j*****************************************************************************/
. e* S. O  g- |" {( A9 x; |/*  Explicit Activation0 `1 ~+ I% M( i* I# p
**      This entry point is used to activate the application explicitly, as in$ X* u- V+ c& C" }1 H8 X
**      "File->Execute UG/Open->User Function..." */
( I9 L1 Z! C0 j9 U+ U/ i% k) A3 f3 O! A! W0 J! k5 ^
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )+ ~( l  C  r! G+ q
{+ M- R$ Q1 R% Y* Y
    /* Initialize the API environment */6 G) z. J5 l0 {! d) p% A! g% A6 u
tag_t partTag=NULL_TAG;
2 s% y3 J) I7 A double origin[3]={0,0,0};7 {4 i' y* `/ ]. ]  a
char *height="200";
! I) x  h4 }; f char *diam="20";6 k  z+ ~$ e" m, [
double direction[3]={1,1,1};3 ?/ T4 `& ?. ^. I6 |) M
tag_t cy_obj_id=NULL_TAG;
" E: ]: q: h7 b! l uf_list_p_t edge_list;
  c' Y$ V8 @4 W int count=0;
" p! `6 d- u  _# V+ a tag_t edge=NULL_TAG;
. @3 b$ o* d9 t, ] double originalpoint[2][3];  o2 s: ?. p9 s. x+ @
UF_CURVE_line_t curve_coords;
. b5 V8 W8 ^, _7 l7 ?% i0 t UF_CURVE_line_t mycurve_coords;' ?/ q/ l- J  o
tag_t linetag=NULL_TAG;- ?3 h! C2 Y( k& {* k
tag_t body_ID=NULL_TAG;
( y. O3 v4 z+ N, b* b! P8 \5 J int i;
+ q1 D! }9 t8 c# g: B8 u0 V, Z char mymsg[256];
% E9 e' J; h  s    if( UF_CALL(UF_initialize()) ) ( p/ v5 M- I9 c0 Y! i8 z  w6 \  z  h
    {
* `0 K' V6 C; P5 r+ ^        /* Failed to initialize */
# g) X8 U% w  V) X        return;
" Q% M% u" Y& E; y    }
% {: s8 S0 y0 \$ h3 p   
3 i/ G8 S0 \) A  P8 T    /* TODO: Add your application code here */
- ?+ N( W! `: Q) b3 G% e // 1 new part
" ~3 J) [* l8 O0 T0 g+ { UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
3 V' ~9 [; p& B4 n: R/ J' k+ Z8 e
% j6 z: j2 _5 s: C3 V //2 new cylinder
7 y% g+ f8 w  t: R1 L' N UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));  E9 g, q- a4 m' U! {3 t( F
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);, x/ A# z  B- Y5 S: m2 d+ z) K
//feature -> body- ~& C$ a1 r/ a
UF_OBJ_set_color(body_ID,21);7 N" V) Z( T3 F" l  S4 K0 P( o
//change translucency4 R  j; e6 f) J" C" b
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度2 X4 B) A/ Z- J
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag! S# x1 S9 l0 m" j" b
//3 new line! O5 ?6 r: u9 H& Q
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
3 x9 A4 O7 e' [! c  J0 J UF_MODL_ask_list_count(edge_list,&count);5 E  g1 r$ z% [4 L- Q
if (count>0)& b1 ?5 f# Z: W/ ^
{
* o( H' K" G- h8 ~5 ?; \     for(i=0;i<count;i++)
% {1 d. F1 i% h) ^; M  {$ {$ o9 L& {2 Q* R# X; d( b
   UF_MODL_ask_list_item(edge_list,i,&edge);
6 T/ P* r6 w. A+ r6 `2 f   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
5 @1 Q. n7 ^- w% S4 i9 ~4 f2 B  } 5 Z  o+ e6 w7 F: m8 `- O1 ~4 A( c
  for (i = 0; i <3; i++), k0 J# ]. z, W  E
  {
+ n' p! ^9 Y- S4 G8 s# ~      curve_coords.start_point[i]=originalpoint[0][i];6 t' G, j; R7 @- x5 E/ p
   curve_coords.end_point[i]=originalpoint[1][i];  E2 _# z7 A0 _9 s1 |
  }0 J6 `4 T# ?* l6 k) F( y
// UF_UI_open_listing_window();
, M( }/ I' G" a0 |, R& k( c // 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 Z! x: P9 [3 c$ d //UF_UI_write_listing_window(mymsg);
8 L0 ?, @$ ~) P+ K6 [* D // uc1601(mymsg,1);
- }5 U' `* M2 K  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
7 }/ r! X/ G. q  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点% h& F- E- [9 ?2 M
  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]);
  h) N: `0 F* U4 }0 t0 J/ {  //UF_CURVE_ask_line_data(linetag,&curve_coords);" ?/ N" c$ H1 ^1 @/ E& e
  //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 Q1 W( r9 b* p4 d9 S# q' \
  //UF_UI_write_listing_window(mymsg);" t5 t5 I5 C# p( l; d
  uc1601(mymsg,1);# Q- B0 i6 Y7 S: a8 p! O8 w$ s
}% {1 k" \( @: s5 [
else0 z: |: k7 _- }; C- T' L' o# q
{
: @3 ~4 i( ]8 H3 R6 |  uc1601("no edge founf",1);
9 D8 O0 S: |7 [2 O+ z! D }
, l1 I% x6 P" x0 L   o: ?/ ~' n6 O- G4 }6 |1 G1 V, P
, r# @) _5 D; }6 x4 L$ c& \
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);/ }7 m7 M7 J# }
//UF_PART_save();  //保存部件
$ p# X" ]( ?% [# ^ //UF_PART_close_all();   //关闭所有2 I. s+ |7 p. N7 B
, K$ X% C6 l2 k. V0 {
    /* Terminate the API environment */: F  f/ X1 I9 ?  N" \
    UF_CALL(UF_terminate());' i( R9 a$ K/ M+ H+ s# W, }
}' e1 g6 t  f6 N' e' I
/*****************************************************************************
8 i+ D  \  J$ t% H/ L% z& O**  Utilities
3 K' m( N6 j) @' e; Q- P*****************************************************************************/
7 d+ T- G, f( D! I* O( \/* Unload Handler
4 N7 D) B! |( v" H**     This function specifies when to unload your application from Unigraphics.
# i5 x  F3 L3 {, [3 d. v6 R2 p; G**     If your application registers a callback (from a MenuScript item or a
. A* c9 ?9 |8 ]* G8 M! j+ h1 @**     User Defined Object for example), this function MUST return
9 l# N2 D# a9 s6 L: q0 A**     "UF_UNLOAD_UG_TERMINATE". */) r1 n6 U5 K) H
extern int ufusr_ask_unload( void )
9 {& K+ Y0 V; U{( P& M7 J8 @& i9 k; c
    return( UF_UNLOAD_IMMEDIATELY );
* f  }* w0 P, f# d. C$ g8 J  J}
, B: ?, o5 N6 U: Y: ~( u7 e% I
' x) P! {0 c. o2 T  R/ n) A3 d' L+ l% o1 w
我把圆柱的方向设成【1,1,1】,成功了3 V' ^' g+ |! P

- ?" V5 i9 L% x* _3 f
无标题.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二次开发专题模块培训报名开始啦

    我知道了