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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
8 f: K7 B) U& c$ P#include <stdio.h>, _9 y% L  U. f5 @2 ?
#include <uf.h>- K( }+ o; x* \& S
#include <uf_ui.h>" |# C7 Q! e" o) e) f
#include <uf_modl.h>
" R+ P, t$ d8 W2 }#include <uf_part.h>
' G7 m' ~" g- Q) r! P% W8 r#include <uf_obj.h>;
+ b$ O$ \6 B/ l% c* t#include <uf_curve.h>
$ K' }: y! {) e$ v; m- m6 n( P" n" w1 W* G; _) R! h
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
0 p) l2 {+ x8 Hstatic int report_error( char *file, int line, char *call, int irc)
. i3 p8 E7 |2 s% `{
" N* Z( ]8 f2 ]9 L! o% t; f    if (irc)/ i8 c/ @) B, e6 ^/ |
    {  a+ ?7 j8 A  ^% P! B6 _" G; c2 g# M1 X
        char err[133],
; S5 i+ ?8 ~) k& i! C  s& K2 K- _             msg[133];/ Y8 {  e, z  `: e4 Y0 m3 v; s
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
# h# y: G# G7 b2 [            irc, line, file);
' \  S0 _: z1 v- C( _        UF_get_fail_message(irc, err);& a8 W5 l* t7 y" ?: j, [1 b" ?
        UF_print_syslog(msg, FALSE);
2 Y" z5 Z; z, J8 Z  B        UF_print_syslog(err, FALSE);6 G1 c$ t8 e. }8 a' u
        UF_print_syslog("\n", FALSE);% H" Y- W& r. M  c2 D
        UF_print_syslog(call, FALSE);, i1 H; F: T  R: t5 m
        UF_print_syslog(";\n", FALSE);+ [& h4 {1 r, e1 B( I& s
        if (!UF_UI_open_listing_window())- N7 J/ K2 a9 V$ g. U5 C
        {1 y: C( G- v1 K7 N0 K
            UF_UI_write_listing_window(msg);
) A# V8 M7 X- f# \+ O, h            UF_UI_write_listing_window(err);, j6 R/ @' D$ ~5 [; r: k
            UF_UI_write_listing_window("\n");$ _, n  n3 {/ w' O8 f
            UF_UI_write_listing_window(call);3 f3 i& w5 E* `% W/ r% Z
            UF_UI_write_listing_window(";\n");. L; z7 T2 _3 t1 `% }- }2 @6 Y. @) o7 F
        }# y. K1 i: C9 y: |) G
    }% D* K4 m7 o& E" k; |4 ^, E
    return(irc);
% ]  N$ J( g& R- @4 j}
$ _$ G' K( N. N$ k) j& ]4 T( s
4 W9 L1 t/ |3 o3 R) }1 V* Y/*****************************************************************************
" v1 t  Z% H5 M: H# d' s**  Activation Methods2 N- U/ a; v3 \
*****************************************************************************/
5 i6 k8 c, {- t- L/ d( l6 [- ?/*  Explicit Activation1 v3 S3 c: o. L9 D8 I. W1 j
**      This entry point is used to activate the application explicitly, as in5 m' W6 m+ U  z3 K$ f0 s, Y+ K% i' R4 \
**      "File->Execute UG/Open->User Function..." */
+ |8 ^" ]! U5 y+ K
9 i9 k% V- C7 p: V+ D6 W1 vextern DllExport void ufusr( char *parm, int *returnCode, int rlen )# x8 ]. _9 T& R4 K+ o+ |' i% S
{1 {% z7 o( J* }5 w0 z  Q- x
    /* Initialize the API environment */5 b0 z* c( L/ Y+ a
tag_t partTag=NULL_TAG;
* `) q" a+ {% ]+ ^/ F double origin[3]={0,0,0};* i" B0 {/ |( a) w
char *height="200";
5 P- G, W; e+ E' ?* L8 O: _ char *diam="20";+ p6 S9 x4 q  U/ |: y- X
double direction[3]={1,1,1};1 x  w$ D) c! d. _$ [5 `( p
tag_t cy_obj_id=NULL_TAG;6 |4 `1 i+ _: p" T: _' Z3 l
uf_list_p_t edge_list;3 J6 y. I* v+ C$ {- o3 H
int count=0;
* X/ e9 I: q: v: R tag_t edge=NULL_TAG;
5 s$ O) [' Q) `& F: z, k double originalpoint[2][3];6 P; u) S  y5 m, Z" [; N2 i% ~
UF_CURVE_line_t curve_coords;" |# N$ P  N7 E/ ~0 N1 }5 B9 K1 Y
UF_CURVE_line_t mycurve_coords;/ G; e; V' ?1 t- I7 M
tag_t linetag=NULL_TAG;
6 ~& j6 s  G2 l2 ^. j- v& ? tag_t body_ID=NULL_TAG;" z% B- l& d8 S( ^( y
int i;6 e' Z) v% l5 q
char mymsg[256];
3 X! g4 R. j, m8 c$ A    if( UF_CALL(UF_initialize()) )
( Y* \( A$ M* r0 E# H" v    {6 i" }5 C5 w+ a5 `( ~, O- R
        /* Failed to initialize */
3 F' |/ V6 B  ]  q9 f        return;1 Y( I! [/ j; F' Z
    }; g" J. k6 h+ u7 X1 B0 L6 k
    7 u- ?/ s/ [7 o
    /* TODO: Add your application code here */
6 Q' q) h1 V: d) F3 l9 p4 x; i // 1 new part2 q( p/ \" Q7 `* G% [
UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠1 b5 y; ~/ b- N; S0 Y; `1 o

, b; v2 t; a5 E. H9 U //2 new cylinder * t2 ?- q' U( _* n+ W
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
- H5 k- g& i8 q" o! J' { UF_MODL_ask_feat_body(cy_obj_id,&body_ID);8 f. k7 a7 M6 B. ?; C
//feature -> body, I* Y# q6 h. ?3 n- D) C
UF_OBJ_set_color(body_ID,21);! c$ @7 K4 O* N  c: S
//change translucency/ z  x& S3 ]2 ]% X
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度+ ]+ P! F5 u$ v8 Q1 H1 W! b
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag* W! e9 K/ d- m2 F  a/ f
//3 new line: m& e& y, _" ~* [/ H) H" x6 |
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));/ {% Z$ l5 b0 t5 K& W' w
UF_MODL_ask_list_count(edge_list,&count);
" S% {; j" B: Z, r% E5 K$ |3 i if (count>0)7 a* N  w3 N+ l% T9 D- d
{
# N4 ]' J$ _$ ~9 j/ H     for(i=0;i<count;i++)2 ~: J( T3 ?* v% Z& o- v0 N
  {
, z5 d7 B( u5 k, G1 [- T   UF_MODL_ask_list_item(edge_list,i,&edge);6 ^/ \& d9 [' m/ n/ G& |7 }
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心( {/ t, D* c- H% w
  }
& p8 T9 n  e5 l' k3 x4 {8 F  for (i = 0; i <3; i++)
" H& m, P$ u1 V" j! r& d  {
" n" y' ^6 H3 w/ _5 Y      curve_coords.start_point[i]=originalpoint[0][i];
, z, R( R0 J* a& r6 w   curve_coords.end_point[i]=originalpoint[1][i];3 j, |$ z' {, e* X2 G
  }+ j8 }- d5 h/ g4 q
// UF_UI_open_listing_window();* d9 w: `0 ?; V$ D9 ~
// 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]);
5 o! E0 H0 u6 ^5 k //UF_UI_write_listing_window(mymsg);1 h. R' q5 R7 T- `. o9 k6 ]
// uc1601(mymsg,1);
( H( g  l$ ^7 M" ~0 I4 v  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线, Z9 l- n% Y9 X% W
  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
( Y( a- u4 F& E0 B# o  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% y' C: P: P4 N  //UF_CURVE_ask_line_data(linetag,&curve_coords);
; a0 ~% \0 W3 @% E* r) [! R  //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]);) R( V  v' e! y" U$ X9 E/ M
  //UF_UI_write_listing_window(mymsg);
# f0 [; F( p0 l, [  uc1601(mymsg,1);+ \9 S6 u- P( ]0 G
}
" c0 h1 {$ @* O else
% S9 A6 v* S- ^6 D: u {! H; ?0 J, x6 g0 E7 r, l
  uc1601("no edge founf",1);
' o3 q% }3 Q" a3 F }* u) |3 Y* h: v& Z# N  N
# |1 b+ {2 I& Y( ~; N

4 y& |' d$ B7 o, o" Y$ j# h$ k: _ //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);- f/ x7 _, ]. D2 V8 B# @
//UF_PART_save();  //保存部件1 ~9 w+ y7 @1 H5 s' [2 j  e6 P
//UF_PART_close_all();   //关闭所有
8 X2 L/ u" [. r3 G- i0 L6 g+ ?" S
+ x6 i+ ^8 s; \! l+ ~2 O    /* Terminate the API environment */
  W6 }' ]/ t; O- s, [5 o' N    UF_CALL(UF_terminate());
. n. D0 \7 ~' ^3 L0 v4 |: L( l}
) ~6 F7 @. X) n+ p: Q& `( X/*****************************************************************************
( r0 T( d9 L  I7 v. @: Q# f**  Utilities% F% A1 \+ ?; I2 u1 @7 R4 R
*****************************************************************************/: |7 Z$ D5 o9 i' t. v* U
/* Unload Handler; P9 n7 p3 `" j$ w' J$ c8 I
**     This function specifies when to unload your application from Unigraphics.
5 K  X" T0 v% d% a**     If your application registers a callback (from a MenuScript item or a
* u- \1 |; _/ {! X9 K8 n$ U**     User Defined Object for example), this function MUST return, U7 f- f2 C* `- f5 J9 G! Q- W( h
**     "UF_UNLOAD_UG_TERMINATE". */5 M( g* r# K9 g# y9 k! @
extern int ufusr_ask_unload( void )
' o0 g* R$ ]/ L: L( N{4 D8 E) @) C$ A/ B, E
    return( UF_UNLOAD_IMMEDIATELY );/ f' b/ X! N2 T, U
}6 A9 j5 I1 A) r/ J1 D+ `

; G- D5 q% z! t7 n
. w  N' y$ N  ?& f/ z: f我把圆柱的方向设成【1,1,1】,成功了
% C  L+ z5 W; i& P0 x& R; T. m7 S8 x& h
  R/ D# B" D4 M* t& A" B4 d
无标题.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二次开发专题模块培训报名开始啦

    我知道了