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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */# `1 ?" y/ r* b# _  B; i8 G1 Q
#include <stdio.h>
1 {# C% V) i+ z$ u+ e#include <uf.h>7 N4 B$ ~' \* v. k6 |2 f; F
#include <uf_ui.h>' N: d, I: W- e) C7 d
#include <uf_modl.h>
9 k  Y. T+ U. ?$ w4 o# j0 ?#include <uf_part.h>) H# G0 j' j- w
#include <uf_obj.h>;$ Y# v+ I% X% a- o/ c
#include <uf_curve.h>
, P9 O( s- Z8 S+ a7 Q; O5 K: C7 I$ o- m4 @+ F
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
$ a( z6 J! `! {. Ystatic int report_error( char *file, int line, char *call, int irc)
, \$ U# W. L/ o{9 Q2 ?6 ]' Y) o8 |) F9 r1 j. c
    if (irc)
& P$ ^' g4 j/ v" j( l    {
3 G2 ]" h! s8 Q0 x- ?% w        char err[133],' h; Q# v. s* a7 x$ g
             msg[133];  a# C+ g: t3 x; U  ]  I# a
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
8 a* w: _, {$ S* Y            irc, line, file);6 V$ v7 _! @1 }' M( ^. l7 m- \. e
        UF_get_fail_message(irc, err);
, H' c4 s* j" o1 J: u1 j5 b0 S        UF_print_syslog(msg, FALSE);
5 d) Z8 |$ D* K1 h) i        UF_print_syslog(err, FALSE);
* @, E: ]: Y- `! u, f% Y8 [, B& a        UF_print_syslog("\n", FALSE);
' L% q# Q# l9 O, N        UF_print_syslog(call, FALSE);7 d/ P& p( K& k  t4 n/ }5 H8 F8 r
        UF_print_syslog(";\n", FALSE);2 {& [0 A  n$ `! k. B) a
        if (!UF_UI_open_listing_window())
6 T9 H( b1 t3 }) e* c. C        {. Q" ~/ J: B! V5 Z
            UF_UI_write_listing_window(msg);4 \) Y* {# b/ ]& S) m' O7 P7 G
            UF_UI_write_listing_window(err);
. o3 P$ p7 C* a) J. x  y            UF_UI_write_listing_window("\n");
5 U, ?/ g4 Q6 {/ ]            UF_UI_write_listing_window(call);
8 Y7 V; y2 I, Z. S            UF_UI_write_listing_window(";\n");
" q1 O' q, R  g' p6 [# O% ]        }9 d- X' @2 B6 ~! M& o
    }
6 G7 P/ `& }6 l7 u! ]8 _/ i    return(irc);7 D3 B7 \" Y4 c3 U
}
' A# j2 K- z; n  `- H
! K8 w- [2 o! b3 C1 h/*****************************************************************************, x' L+ b' v! N
**  Activation Methods8 R, Q& y! L+ I. b9 y; m
*****************************************************************************/( U# _; j- g/ s' z0 J& _
/*  Explicit Activation
& O8 X; C$ [# n; o0 k' J**      This entry point is used to activate the application explicitly, as in
$ M" P8 Z* W% g& t# W**      "File->Execute UG/Open->User Function..." */
6 ~4 i1 e) C9 n: X9 Z# R5 ~2 n+ `9 }
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
3 K& A* v0 u/ v# K& `6 j, ^{$ v1 W* |' f& k: o. Z; |  }- b; P% ?
    /* Initialize the API environment */
( V( A( V' D  |  ` tag_t partTag=NULL_TAG;
) r) u! g8 [" `1 ]! X double origin[3]={0,0,0};0 Y' z) ~9 T. U
char *height="200";
1 [0 s! E, ]: Y' W" f char *diam="20";
: f! Q* d/ I" z& G3 J" m/ g, b6 D double direction[3]={1,1,1};+ S& s  _! F0 ?/ Q3 N. {9 g2 F
tag_t cy_obj_id=NULL_TAG;
: K6 `$ L# S; S# s uf_list_p_t edge_list;
9 ?( W" [9 ^9 F% r7 m int count=0;: n- j8 z0 @* X
tag_t edge=NULL_TAG;8 `- I4 {  g0 E% p& X8 A
double originalpoint[2][3];
/ S9 i5 X6 G. A8 j+ m UF_CURVE_line_t curve_coords;
: Q3 ~1 v# N1 w1 c( E8 G3 m UF_CURVE_line_t mycurve_coords;. i2 A& d- M9 T1 F
tag_t linetag=NULL_TAG;
5 m+ P: T3 [7 _- b tag_t body_ID=NULL_TAG;
9 }; n/ o6 W$ N( T5 o, M$ F int i;
' v3 i$ ?& T; c9 Z char mymsg[256];6 t$ R8 `8 K* L, f9 _
    if( UF_CALL(UF_initialize()) )
3 a4 S1 x2 }' c5 O# Q& P    {
& S9 e; A2 E+ n+ E+ Y0 B0 x- r' Y) q        /* Failed to initialize */+ n" O( C: V3 R6 i4 G
        return;
/ w1 B4 e; g/ T7 [    }3 n" [, l; F) m& f  I+ K
   
' h6 E1 p4 k1 s0 `9 O) }    /* TODO: Add your application code here */
# ~# s5 I  `0 I! w+ N) Z" O$ s# @ // 1 new part
6 ^$ W3 s9 t$ V9 v9 z3 \3 j  U. G UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
6 O; u9 L. C& E7 b- `
" Y  c) i: m+ _- R: Y //2 new cylinder
$ B# a3 R5 }( [7 h& U# I. E UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
9 z' P& H2 p8 S, _% O$ j1 s6 p) X' b$ T UF_MODL_ask_feat_body(cy_obj_id,&body_ID);- {  G- J4 S' _0 q
//feature -> body; B- H) d( P0 X( H
UF_OBJ_set_color(body_ID,21);2 V/ ?- ~. A0 x/ \# P# V2 |
//change translucency
8 `# ^' `# T+ N UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
9 _) R7 R7 D) U  S* o //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag5 e. W/ d) ^' {! k# _
//3 new line
* C8 R5 \# O4 }% R' _ UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
$ M- `8 @4 m0 y7 ` UF_MODL_ask_list_count(edge_list,&count);
. l' ^" L  N& z. ^3 w if (count>0)
9 I# t% n- I5 h3 ^. c {1 J/ y$ y; F9 D0 ]  _  l7 k
     for(i=0;i<count;i++); T8 D; P: \* Z
  {
2 F" @0 H; |: x* ]- D5 h/ C   UF_MODL_ask_list_item(edge_list,i,&edge);
2 T* c8 d* {9 O# D, N7 A   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心$ Z+ P$ C% B6 W9 `1 Z
  }
5 O5 {8 J: L' Y  for (i = 0; i <3; i++)8 Z4 B8 O& g6 K7 H
  {
1 s2 C+ a2 L! n# D/ |! N      curve_coords.start_point[i]=originalpoint[0][i];
0 c% @* D$ z$ Q2 }. ~% b   curve_coords.end_point[i]=originalpoint[1][i];
8 F" k$ E3 O: x* ~$ T  }
& @5 P$ r2 G# A$ U/ ~ // UF_UI_open_listing_window();1 @' v$ ~! h+ S2 ]
// 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]);
% W0 T+ [% t& ~3 g3 l$ |# t* G4 b //UF_UI_write_listing_window(mymsg);4 e6 ~- R$ \2 d4 X1 y8 }
// uc1601(mymsg,1);# \0 L' r' U6 ], |
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线; y( D$ |% v" n% @
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点4 m/ m4 |: e! D8 ^% a. H
  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]);- I# c) j$ C6 _* |# j
  //UF_CURVE_ask_line_data(linetag,&curve_coords);
' y! t/ Y6 k+ x6 N9 D9 u  //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]);; f. S1 f& P9 q
  //UF_UI_write_listing_window(mymsg);
  z; _& Q3 h7 q9 i# A  uc1601(mymsg,1);! E4 E, A. b" p( M2 R, P2 l, e8 l) h
}
; {& c5 ^  x: |; D else/ k2 |1 V# O  s
{
: Y2 L; s7 x% E, i; b0 U% G  uc1601("no edge founf",1);0 z' d* K! J( b, {. x: p6 A7 A
}
) x$ V) E9 H- \" R+ E 3 Z8 I" e' ?9 k4 I) }8 T) o

8 I9 F: t4 k+ G- S, ] //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);' E6 V( ^2 I' `3 Q4 ?- r
//UF_PART_save();  //保存部件0 ?6 q/ `. W+ \$ d; q
//UF_PART_close_all();   //关闭所有; O( E9 j* k* [$ E4 Z# z
& E+ K% \2 _8 p5 e1 g) ~
    /* Terminate the API environment */
0 m8 a: T% [9 t' J$ n4 R/ ?    UF_CALL(UF_terminate());' X% F: k: L6 [/ [, F% j
}* G2 D1 N2 c  a1 g* k) ], K/ C
/*****************************************************************************/ B: t; w9 I; q) X* ]  Q% G
**  Utilities
: Q& V. J+ V5 A2 \/ i5 q6 [*****************************************************************************/
& s" u% ~3 _5 h7 O, u% M+ Z/* Unload Handler
" `% o3 R3 g  _+ Q  @- ^% w**     This function specifies when to unload your application from Unigraphics.; `2 V3 g/ L6 I( U
**     If your application registers a callback (from a MenuScript item or a2 A( s6 ]" b" i# j$ `' x
**     User Defined Object for example), this function MUST return
: W3 T5 O6 \3 A**     "UF_UNLOAD_UG_TERMINATE". */" H4 H# W# ?% ^0 k0 U% U7 [
extern int ufusr_ask_unload( void )4 w% w( _& K7 e6 z9 m  x
{
- ?  q7 A  c" F* X    return( UF_UNLOAD_IMMEDIATELY );
; n& c+ k8 B4 X8 y: B1 a2 K2 @. {2 Q}
+ J' V) Z) W* T2 m9 w1 d( G  f! |) F3 q( _- Y4 C) f( u4 j

# K, C* R; x' G8 v& J4 V) G我把圆柱的方向设成【1,1,1】,成功了
, o/ A  ~5 w6 g# w; P* M% b+ T  A# {. i$ q
无标题.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二次开发专题模块培训报名开始啦

    我知道了