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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
8 ^- s6 D" o, A* f0 C) ?  ?#include <stdio.h>
( |" o* F2 t) z2 L. B#include <uf.h>
5 r6 B- l" _8 K+ Z, G' u9 K, K, A5 F#include <uf_ui.h>
- P# {. P# c7 r7 ^#include <uf_modl.h>
% F' a0 y  B; Y: X+ j4 m6 b#include <uf_part.h>
& g! M" i: u& C( g#include <uf_obj.h>;2 J; ~/ J" c6 a- u) t+ r
#include <uf_curve.h>  K/ q2 B, w% ^; q
: \( A$ v' B1 }" G2 K3 \4 Z
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
, t1 k" y4 u# Z/ k# B" mstatic int report_error( char *file, int line, char *call, int irc)  q, p" n1 W+ E1 q7 U
{) C: i. Z! B  }9 V& ]
    if (irc)
- ~0 X2 N) O" l7 d    {" C5 i4 T, D+ O
        char err[133],
6 o3 z# H5 p2 @4 |% b0 P$ o% V             msg[133];/ i/ s. s1 f2 c0 n( {! |9 E' G/ z  v. O
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",. p# F1 ~2 L0 z) E6 x/ Y4 z
            irc, line, file);  C( g3 b/ H1 n3 ^
        UF_get_fail_message(irc, err);; d( ^8 v) W% J  A  N  u
        UF_print_syslog(msg, FALSE);; w/ f9 y8 B& p! E% U$ F
        UF_print_syslog(err, FALSE);+ O" S/ L) T1 P
        UF_print_syslog("\n", FALSE);
9 N' R5 g3 M: \+ |% e) U        UF_print_syslog(call, FALSE);  |  p, R* V8 E2 x, l
        UF_print_syslog(";\n", FALSE);
8 x, }( x8 \- T, v/ x- w9 Z. }        if (!UF_UI_open_listing_window())* B, f! D/ A5 I' t
        {7 F. `9 O& F, f; H6 ^) x4 y
            UF_UI_write_listing_window(msg);3 t7 V5 ~5 a+ |5 D+ x
            UF_UI_write_listing_window(err);7 T+ L4 O0 `( Q# G; a' _8 u2 [' Y6 F) E
            UF_UI_write_listing_window("\n");
2 w) e! a/ |1 \) J8 I6 J1 h            UF_UI_write_listing_window(call);+ {# s2 l& k9 Z3 Y" j
            UF_UI_write_listing_window(";\n");8 h" E6 d  g) ?
        }' l2 k8 y/ S, G' @1 s8 G5 n$ U
    }
: M: B0 m7 e- @' ]3 m+ F    return(irc);
! D1 F% x! e2 [" u) q}
; s2 O: P4 n& l; q, J$ c6 v1 Z0 s6 `+ C
/*****************************************************************************
- d. E! {! P7 G! ~**  Activation Methods  z6 O3 x/ x% W+ @7 x
*****************************************************************************/
( f7 R8 w" B9 ^/*  Explicit Activation7 ]7 U* ~8 H" W: Z
**      This entry point is used to activate the application explicitly, as in* B; P5 A7 @: j  z  \
**      "File->Execute UG/Open->User Function..." */
, H, }( V5 t4 w4 D$ h5 t( {) i) I+ L9 D6 f) ]
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )/ r# B! L& b; |% T( l
{% `! c& m2 T+ ^5 w
    /* Initialize the API environment */. h( L& W8 l$ ]0 M3 V. I( T
tag_t partTag=NULL_TAG;
- N' A& c, [0 O" W1 C0 p2 d double origin[3]={0,0,0};
% T6 P7 A4 u( @# Z# @2 r8 g1 f char *height="200";
* [5 O% d( R6 Q" v8 j1 Y( h char *diam="20";
, ~8 n' w" k& a3 p double direction[3]={1,1,1};8 l4 l3 ^, S$ ~5 t3 i. M5 b
tag_t cy_obj_id=NULL_TAG;
# A8 b6 V9 i: `) t; M5 D9 ~% L6 Y uf_list_p_t edge_list;
8 J1 g6 n- L4 X int count=0;
. l0 a" o( S0 c5 m! ?9 ?" l8 X tag_t edge=NULL_TAG;
" `4 I0 M% T' G: r! {  m double originalpoint[2][3];: d4 e% Z6 p9 Q  ]6 ~: K- R8 w. V
UF_CURVE_line_t curve_coords;
* ~. f, y4 W( A: R9 O UF_CURVE_line_t mycurve_coords;! e! G5 |7 d% N
tag_t linetag=NULL_TAG;
& B+ k7 s/ R+ ]2 Y) t) ]( f tag_t body_ID=NULL_TAG;) n. M( ]' Z+ S; J
int i;3 q+ y. Q$ n3 \9 B0 b" R5 A
char mymsg[256];2 F6 {! p5 n- {" q
    if( UF_CALL(UF_initialize()) )
3 p9 C4 N, q/ Q, h6 o9 _    {
" f7 E& e( n6 `8 d3 M; c        /* Failed to initialize */
/ N0 @% H/ K. T4 \6 z% I        return;2 x' u& S9 F$ n0 W% k
    }0 x& \1 {( R. ?% J: F
   
2 I- M/ A$ v& B; u    /* TODO: Add your application code here */# r; w: E9 u9 g
// 1 new part
5 Z4 z/ A, U& N$ N+ t* ^ UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠8 X; [4 G* E8 v# d7 h

2 J4 I6 [4 }9 J% @  e9 r$ s //2 new cylinder
* n+ k! Q- Z+ E6 O/ z& v, U4 s& f( K UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
# D, E$ x: |9 H' D" D3 B9 l" o7 e% O UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
; q: ^/ }5 S7 X6 S4 C9 o% F //feature -> body
! h6 {; |4 C6 X( Y2 W0 o, C" C UF_OBJ_set_color(body_ID,21);8 T; B7 G5 O4 ^2 q6 H
//change translucency& M6 D" ]5 f& v+ [
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
' N1 H6 v2 r% b% H7 \/ Q //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag- R- y  Z, \: ~2 S. O- n  [
//3 new line
5 F  r, Q) O; ~' s7 ]( t+ x UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
- F; @; Z1 Y4 {. T) d, S7 q UF_MODL_ask_list_count(edge_list,&count);
4 d& ^% k; h4 |5 F( R) B0 D if (count>0)& v$ N/ g0 y  x6 q8 p
{& j( x+ I/ s& O1 I  a0 k
     for(i=0;i<count;i++)# w5 w  {; l; A* s! V( q4 _$ F
  {
5 G1 w1 ]0 Z9 P/ E   UF_MODL_ask_list_item(edge_list,i,&edge);
8 ~; d, N  Y( ?, F8 l7 O4 B% e   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心  X5 a( g6 O. t" `$ R
  } % `2 c1 R# b7 ^
  for (i = 0; i <3; i++)
8 A6 q. p! r, Z, y: n2 N, {+ N  {
; C) e& g" F5 S3 P& k; F6 e: i      curve_coords.start_point[i]=originalpoint[0][i];& N" J: @: h" B! @  F
   curve_coords.end_point[i]=originalpoint[1][i];: X' h' u" x/ U) U' C
  }
! K! ]( U0 _0 c4 A, r // UF_UI_open_listing_window();
! \2 r4 k' u/ K6 N // 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]);
% {+ K4 a" D6 J //UF_UI_write_listing_window(mymsg);. ~2 _- ?4 s* E* K4 v* Z
// uc1601(mymsg,1);
! Z' _5 E1 {* I7 W  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线0 U5 g( `2 M0 j5 D9 P
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
( H( m& m: S' z) P: 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]);
+ O( G9 \. m+ s  g  //UF_CURVE_ask_line_data(linetag,&curve_coords);* S, o( }$ b0 h- `
  //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]);
' ^; W  P, c$ s2 ~6 A  //UF_UI_write_listing_window(mymsg);
2 w! P! T: V; n' a1 \3 L6 R3 f  uc1601(mymsg,1);, M7 _/ `$ w0 Q, s" S6 h8 Z
}  E7 a3 h% y  Y# H" Q8 ~$ }# {
else" S& L" I4 z0 ?, L, X2 f
{
3 {9 X0 C. o, G& |* @  uc1601("no edge founf",1);
! g5 `: `9 L" {; ^5 a }
- B6 E" C  O) ]2 c9 }8 } 9 ^2 v' s, W) G5 `% A2 x* Q

, J3 w  v* M1 h. ^; @ //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
/ u0 J" I" \: u) T( E! e5 n //UF_PART_save();  //保存部件) P& T( e& r' z" L/ d! _
//UF_PART_close_all();   //关闭所有7 V3 P1 a$ U" r9 W0 B4 H/ K" |
: J' G% d7 l3 {5 p" \! @
    /* Terminate the API environment */
6 A" K0 B+ @2 U    UF_CALL(UF_terminate());) P8 b  M; r; K" X  e& W
}
- o- f- j0 l0 N" ^/*****************************************************************************, U( N* Q2 r  \. x, S. O2 A8 O
**  Utilities
' C5 H- H& }4 H% u! r. J*****************************************************************************/* |& O0 i2 U6 _: `9 a1 O
/* Unload Handler1 ~0 P! @7 |8 L) u% @; Z: R
**     This function specifies when to unload your application from Unigraphics.
0 l; `; \+ T2 F**     If your application registers a callback (from a MenuScript item or a
8 i) G+ z! {- S! B8 E**     User Defined Object for example), this function MUST return! V- M8 Y& v7 d2 h& k* y
**     "UF_UNLOAD_UG_TERMINATE". */
! H2 ?( Q7 G$ Dextern int ufusr_ask_unload( void )
8 ~  U& `6 ]4 l& _* O{0 m* g3 c4 e5 M1 g0 S
    return( UF_UNLOAD_IMMEDIATELY );
0 w" ~# s. z- z5 Z}
1 v3 h# j5 U8 s- P, W( \; O6 U. }: V7 {$ h

) z5 x$ m* \" u" M* w$ X5 l, E9 n) ?我把圆柱的方向设成【1,1,1】,成功了
. i% v( _" G+ v3 ~
. B% I0 M7 o* }1 v; q1 R6 L
无标题.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二次开发专题模块培训报名开始啦

    我知道了