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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */" s' h; ?" f' [& |" S
#include <stdio.h>' H, y( ?- g9 v0 a0 ~
#include <uf.h>: }% V3 q% U5 X% y
#include <uf_ui.h>: b: S/ F$ _/ m$ x
#include <uf_modl.h>4 o) K4 Z* n/ G. j5 c
#include <uf_part.h>- S. }2 a5 V: h1 [0 Z
#include <uf_obj.h>;
+ D+ P! C, Z5 U" c" ?#include <uf_curve.h>2 q# d# ~- Y$ ^  z( c; L0 c

: e& Z2 ^" ~3 [, J#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
0 ]  K! q- Z" H* ?% N& Y. c# |5 ~static int report_error( char *file, int line, char *call, int irc). q5 b! X( i! `- C9 n, E$ I
{
$ w7 w- E/ ?7 F    if (irc)' F4 a9 @: U* ?  ?* v
    {' @3 ^$ M- Y% I: i- y  n% j
        char err[133],
/ l' s; Q$ Q8 X( B4 ^9 \- Q             msg[133];' n  l% K5 L- i9 g8 q+ I
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
7 W6 k5 J/ Y6 i2 t6 C* L% x5 y            irc, line, file);
+ M% U: K/ O+ U        UF_get_fail_message(irc, err);. k1 o5 x( r4 N' e( r
        UF_print_syslog(msg, FALSE);& [/ [) r; F0 V$ S. p- ^
        UF_print_syslog(err, FALSE);8 X, a, ~% }* v6 x* B* M. I+ X% g
        UF_print_syslog("\n", FALSE);# R5 E, D5 i' G) m- f
        UF_print_syslog(call, FALSE);* v  |. P2 L! q
        UF_print_syslog(";\n", FALSE);
! u" ~- l" A+ [- S. `  |        if (!UF_UI_open_listing_window())* k. @2 ?& ?% @+ P, b6 x7 T( V, F! p
        {; |5 ~: [% x+ o. q
            UF_UI_write_listing_window(msg);
1 ^+ x% j2 W( f, i            UF_UI_write_listing_window(err);
$ D+ |9 t( V; x) F            UF_UI_write_listing_window("\n");
0 s$ B+ U" ^: s$ A9 ^  a! c            UF_UI_write_listing_window(call);
+ q4 r; `; l1 t8 K* ^/ J* q. V            UF_UI_write_listing_window(";\n");
6 x- y# B8 t( g! j        }$ B7 k. r, g2 f& Y6 v
    }, ?. k0 d: |. G" C' w% V1 u+ T
    return(irc);
& ?4 Z9 l0 c+ T8 s}( U1 O# f0 Q$ j/ t

8 W3 @# t' _$ Z' Z6 e# H/*****************************************************************************
: T7 W- m2 I$ m$ N) M**  Activation Methods
: |& ]# \% B: n- M- V, T% a! P. p7 l*****************************************************************************/
  ^. W% p6 o9 A/ a/*  Explicit Activation
. k/ V: z  q: @2 X**      This entry point is used to activate the application explicitly, as in5 E3 S7 [1 @! k3 `5 R0 y3 F5 x$ k
**      "File->Execute UG/Open->User Function..." */
  [# B/ {& {- r  l5 N2 q- |! _- X' C- }- `7 D
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
* M4 p9 P  X5 n* e{
; [! z$ T2 `( O    /* Initialize the API environment */1 `: n7 h) Y7 G- ^' w
tag_t partTag=NULL_TAG;
! z* w) S3 r! ~) n( V& R/ b double origin[3]={0,0,0};
8 ]% }& S$ j3 [6 Q9 D6 L% o char *height="200";2 h. C2 U7 _; F  `" U/ s5 [
char *diam="20";: z# Y% h! ]2 M: A1 _  i  d/ \
double direction[3]={1,1,1};
+ h1 R8 l2 V( x8 r tag_t cy_obj_id=NULL_TAG;: }# {7 \. D6 Q. }8 k" F
uf_list_p_t edge_list;! \  r( z- g) A6 y4 w
int count=0;$ K8 h* \" i" g( a. M! z8 t* N
tag_t edge=NULL_TAG;+ C% \- w0 ~1 m. ?+ @
double originalpoint[2][3];2 t( \8 h' P0 w
UF_CURVE_line_t curve_coords;! w. l4 ^# ^0 x. `, a$ c
UF_CURVE_line_t mycurve_coords;
, ^) `& W. ]5 k/ R6 V2 d) l tag_t linetag=NULL_TAG;
4 S% B/ I% f/ y9 s) W tag_t body_ID=NULL_TAG;4 w+ ^. ]2 j/ K/ F$ [
int i;
# S. Y* j" ^: k) X char mymsg[256];6 k4 U* o' ~4 L3 v: Y  \8 ~1 e
    if( UF_CALL(UF_initialize()) ) ' U0 i7 N5 J' y% f
    {
' F  S5 C$ d- G. \; v7 F# A" w( j        /* Failed to initialize */4 d& k7 G- C) A* E) E* j% G: E
        return;
- E# O# Y) [7 Q9 n8 E$ k    }0 X3 f5 m  z- _1 H( }
   
+ `. w4 s9 l/ C' r- }    /* TODO: Add your application code here */, X! V5 }$ S  E# G9 a
// 1 new part9 A: s& i0 w3 N) Z' j* z
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
1 z& X* P/ t5 X: u 7 Z: p  f8 X/ G7 v8 m6 n
//2 new cylinder
3 l* b8 M. [* l; K% V UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
' H: u& |' t' L$ u$ a) e' r4 Y UF_MODL_ask_feat_body(cy_obj_id,&body_ID);) `& P/ Z) B' A& g
//feature -> body
, s, k  f( k$ _" j' L( k6 m( w! q; b UF_OBJ_set_color(body_ID,21);9 x+ G3 v6 ?) R1 D; x8 f
//change translucency
" d3 U3 `2 A5 P/ G) \/ q$ d9 N) y UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
+ M. K# ]8 Q: D! L! W& R //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag7 n' W% F5 x1 z; N% L4 k$ \. Q
//3 new line- Q: S! N3 R+ v# K2 c4 W4 i
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
0 w2 {7 u; F+ {" Q" Z9 g UF_MODL_ask_list_count(edge_list,&count);
: _9 s' y  m4 X; S2 C/ q) { if (count>0)
$ `  v! G1 F! e7 W: r+ {) R {
1 Y5 |0 w  t* z3 T( r     for(i=0;i<count;i++)
' A) {4 u& ^- x  {
, S9 G/ s6 G% s) H   UF_MODL_ask_list_item(edge_list,i,&edge);( y3 C+ ~' W4 D) P+ y
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心6 y- {  J# h/ N% B9 O, Z' i
  }
% y5 [' X2 w, G1 [* x  for (i = 0; i <3; i++)
$ Z9 p: j7 h. m% I  {+ c: U) n, V- Q; m0 q
      curve_coords.start_point[i]=originalpoint[0][i];
! S4 ?& @# h1 i   curve_coords.end_point[i]=originalpoint[1][i];
) A' g9 D! g( Q6 _7 @0 n  }
" u- H: U7 X# o // UF_UI_open_listing_window();3 U/ ?) @2 C3 V9 R+ ?
// 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]);( O. O3 R1 p9 p+ Q" l
//UF_UI_write_listing_window(mymsg);3 t2 Z5 _8 b* H- L2 L
// uc1601(mymsg,1);1 m  w7 @: a3 l# q# I8 q
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
8 {0 Q6 Q2 B# n+ C  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点& ?# T+ q! ?6 @9 l- Q+ F. _
  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]);
: V" e" V% c& h  //UF_CURVE_ask_line_data(linetag,&curve_coords);
- k! D8 X/ B  k. k  //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 s8 d& T# [7 B, z, l3 g  //UF_UI_write_listing_window(mymsg);
- {2 `3 ~" V! p4 _" X$ M% q  uc1601(mymsg,1);1 K  E- p& S% W0 b6 }
}
  n: D/ b2 d$ A# D5 w5 ]3 C else
; `9 o3 O& |8 L5 \ {
: W) C' s: b( I+ n' |0 H/ y2 J  uc1601("no edge founf",1);
1 |! k. [8 H# {8 C1 _) S7 ?1 d }
1 }4 y& z9 A1 G5 W0 U6 p( p, A 8 N2 Z# T: ~1 B) B8 B
! w' M, m  Z( F5 B
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);  ]5 q6 i( ~: W# N
//UF_PART_save();  //保存部件% c7 n" `5 O, o3 ^. o) z+ o8 @" C
//UF_PART_close_all();   //关闭所有
  D* J( `! h( ?4 P
6 y8 _  E: `5 K2 o' f    /* Terminate the API environment */
2 t2 w  e* [8 b2 A    UF_CALL(UF_terminate());1 s) i- K; Y5 p
}4 s( A( J, H$ }& |$ {2 m* B6 K- O% t! ]
/*****************************************************************************# ?% _- q7 Y& W  m& P' D8 i- ~
**  Utilities
! m3 N7 m* {+ G! k*****************************************************************************/- o( V  @, j3 V! X* a+ Q
/* Unload Handler
" w2 G% e/ s8 w$ e$ @+ l**     This function specifies when to unload your application from Unigraphics.
$ Y* R9 a/ T$ F: V' S) p) B  B**     If your application registers a callback (from a MenuScript item or a1 \& f6 T9 M- m6 W3 W, X5 C
**     User Defined Object for example), this function MUST return+ r5 s- a  c" z5 P
**     "UF_UNLOAD_UG_TERMINATE". */
8 n/ u, E( q: @: Vextern int ufusr_ask_unload( void )
) v3 E) {0 T0 W0 H{4 e/ U# {# L% R! M) v# f+ z
    return( UF_UNLOAD_IMMEDIATELY );# W( i: a0 i0 _) N3 @
}
3 e8 i' H4 G( h0 F9 W& O/ G( t2 D) S! N4 h2 u7 x; ^6 R  z, O: E2 L, }

8 {2 @$ N' p8 K9 J& c- K2 T: o; C我把圆柱的方向设成【1,1,1】,成功了
. w* O7 @/ F- G
: l3 F. H1 K' z& j/ h7 S5 M
无标题.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二次开发专题模块培训报名开始啦

    我知道了