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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */4 G0 Y; v- D8 U5 x! D
#include <stdio.h>+ e0 X; v/ w) ~' F/ B. Q6 t
#include <uf.h>" _- x- L1 A; @9 p
#include <uf_ui.h>
( u' l) b. k8 B7 r7 H#include <uf_modl.h>
3 z$ k% L* v% B+ q9 J  y#include <uf_part.h>
, l- Z3 E1 S7 v" T9 q5 \; e#include <uf_obj.h>;2 t5 t  i4 `8 B8 D; R, f
#include <uf_curve.h>
( z, i+ `8 j: d0 E' G5 j* k8 _% [* @; Z) y2 D& b5 C
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))1 q$ o; o( V& L. H  O9 q
static int report_error( char *file, int line, char *call, int irc)8 L: }& X" R: E  S/ I
{
' k9 V' q. K, ]; a/ @    if (irc)
2 X- Z# {, k7 ^0 A9 w    {
0 W( [9 C0 H9 H        char err[133],9 h; I1 W1 {/ K% f5 Q% F3 _" v1 m
             msg[133];5 _1 a& L1 }) ^
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ "," w. i. S0 B+ b5 u
            irc, line, file);; F1 ]: d. w/ M% b# k
        UF_get_fail_message(irc, err);+ R4 U2 y4 x  Z) O# ^5 Z$ ~% {
        UF_print_syslog(msg, FALSE);
, ^7 u6 i& L1 y! I2 e/ C        UF_print_syslog(err, FALSE);9 W: s, D$ v( i/ q! h2 M
        UF_print_syslog("\n", FALSE);
! B9 {4 _& ?  m) f0 f3 n        UF_print_syslog(call, FALSE);
. W8 ?* M/ p7 A, _  d8 r        UF_print_syslog(";\n", FALSE);6 Y+ ~$ I- T, S: J( I9 D
        if (!UF_UI_open_listing_window())1 m9 }3 j7 y6 G7 e. E3 p$ w
        {* C2 \3 ^; C0 ?9 ~9 ]
            UF_UI_write_listing_window(msg);
+ _/ C4 z2 j: S' k0 r! B            UF_UI_write_listing_window(err);" y# X  H: s$ M) s/ l( k* K5 |" u
            UF_UI_write_listing_window("\n");
# f9 \2 b6 u- h( b8 }/ C            UF_UI_write_listing_window(call);
2 s+ w$ e1 x% D1 |) |5 c            UF_UI_write_listing_window(";\n");
3 i7 ~& c0 O8 O; [) g        }# U& k, e! }. x( {" f5 J
    }
) ~7 ^$ U4 ]& U' N4 f( t5 q$ r    return(irc);
( C' h% Z% E0 R# ]}
. v+ N9 X/ g6 M. q
7 c" @' u, [7 S& ~/*****************************************************************************; \. u4 v. u9 r6 g$ P. j2 g) |3 p
**  Activation Methods0 Z+ Q9 K4 z8 W8 q0 G% u
*****************************************************************************/
6 h; _) X" V2 c, N/ x/*  Explicit Activation$ [- D& k9 s3 i) G  u9 {
**      This entry point is used to activate the application explicitly, as in% |3 b/ j% U# Z; ]& ]( b  @7 J
**      "File->Execute UG/Open->User Function..." */
# A. ?! y% i+ ~" E& S% U- \0 z1 \3 }
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
; P- ?5 A2 v4 i# I- B* W1 Y{. b7 L; x3 v( j$ c* }
    /* Initialize the API environment */
5 Q5 ]6 ^4 a0 K2 ?+ q tag_t partTag=NULL_TAG;6 P4 B5 D/ p/ _2 O. F( v9 @( f
double origin[3]={0,0,0};
  ~' ~  Z" o( q9 u char *height="200";/ P6 O6 W! j7 v+ o% f% G
char *diam="20";- n( @1 `% P1 H$ l
double direction[3]={1,1,1};
- [7 v; w. q8 a" E) I3 w& X tag_t cy_obj_id=NULL_TAG;, _% G0 i" A8 `5 B, z2 E) e$ H- T
uf_list_p_t edge_list;
; q/ Y- u% d7 Q* F& ?+ I& C+ b int count=0;
, b' H4 N# L( w6 e- L+ m! h tag_t edge=NULL_TAG;8 u0 [0 B2 g! Y
double originalpoint[2][3];
- q4 u4 F1 {- M& C' W: ? UF_CURVE_line_t curve_coords;
6 n. H  W+ M, H" _1 {! f& [ UF_CURVE_line_t mycurve_coords;
4 X0 h+ U" O) H& a tag_t linetag=NULL_TAG;
2 p2 ]9 D' e* B) o' g tag_t body_ID=NULL_TAG;/ j/ X, `/ o- |; ~
int i;
, Z: l' y, v1 G! n# _ char mymsg[256];7 F. n5 e- n: T- x
    if( UF_CALL(UF_initialize()) ) " f: j3 f" x4 t( k" x$ }2 B/ {
    {' O% b" k( @4 j1 m# \3 _
        /* Failed to initialize */
1 \" w# r9 U6 s' F% b& F3 A2 Q        return;
+ r; b9 e% B6 l2 V6 X    }
1 ]0 K( l0 o* N' X2 G   
3 V1 A. E% V4 }7 Y! X# P* [    /* TODO: Add your application code here */: G1 D1 }% o( Q4 ?0 z, W
// 1 new part
" d0 y2 |; ^& H1 m0 t' b8 V" y UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
! `" O& @( K$ J  ]7 P / T" Q& ^2 r+ I4 C
//2 new cylinder
8 R/ j! k1 W* D& F1 o, B UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));/ M& N/ _2 i, `; h
UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
+ ^: d- ~/ f( P: Z //feature -> body5 h" A* z4 V% B4 P  Q
UF_OBJ_set_color(body_ID,21);5 _( z; s0 ~1 d# N" B' o& c' t) c' {! @
//change translucency
8 h, [6 O! o; `: k UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度& T& z: P8 O8 ~4 d+ c
//UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag( J# W7 ~- w' i  y- T4 r3 A
//3 new line/ j7 U% Y" X2 s/ Y
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
( j/ F1 T2 Z+ d* S' e UF_MODL_ask_list_count(edge_list,&count);2 e( n7 H) P# O, O- E
if (count>0). O1 w, e9 a! l: ^  S4 S# `/ ?
{. c9 Y" W! {8 W0 g* z  F
     for(i=0;i<count;i++)
5 U; O3 o6 Y# W6 M. A" i, `  {2 K# q& r% O6 c0 O& o
   UF_MODL_ask_list_item(edge_list,i,&edge);4 ^) h& d$ W! l, f  A( {. ]$ l
   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
9 \; i: N& M5 Q: t' \- W: n. C  }
  N2 `+ z% l" r- c9 |' @  for (i = 0; i <3; i++)1 _# j0 s" p6 i5 ?' N  k  K
  {
; }5 i/ D3 j5 h0 ^% \0 p- \6 S      curve_coords.start_point[i]=originalpoint[0][i];! Q: O# F% q6 \7 p9 t& n
   curve_coords.end_point[i]=originalpoint[1][i];. P7 B, s" K! ]
  }2 R8 _: Q& _% G$ s* Z
// UF_UI_open_listing_window();+ [" q% M- m. Y. \  C) b
// 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]);2 z# B% i6 t3 e7 B2 J- p* n3 _
//UF_UI_write_listing_window(mymsg);
( a" u# `0 A0 D // uc1601(mymsg,1);7 {( V: |( D& `8 j2 V6 V
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
( p* H' j) z& j2 v% x$ V  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点
" R8 M1 b) h' ~7 D+ @/ e4 P" H& 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]);& E/ z7 p9 t' x1 A* _0 v6 R
  //UF_CURVE_ask_line_data(linetag,&curve_coords);' ]+ r: M% Y# M! P: B5 }( a
  //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]);3 v# V) D/ O) z
  //UF_UI_write_listing_window(mymsg);
# U- H( A! B/ r% B  uc1601(mymsg,1);
" }; [" A* `. \6 X$ p4 T3 p }3 }/ q* `9 N5 F& [" F9 a
else- w6 I* v( w1 N& W; l
{2 ?9 ?4 O; m# x: D0 v1 q, {
  uc1601("no edge founf",1);! o6 F9 R  a$ f/ u" J9 @
}
+ H# J% t; |, F5 i
  e& V# I8 i9 e/ n5 @6 B, u7 _* \
0 R1 W: Q! n" G/ X //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
% x- T  `! p  U //UF_PART_save();  //保存部件
, j% Z* ~; z) a# j$ Y //UF_PART_close_all();   //关闭所有3 h; F0 x7 e( }8 P4 k2 W' f

3 n* }& @) R; |, L1 z' ^: b    /* Terminate the API environment */1 ]$ [) W* w* w1 H
    UF_CALL(UF_terminate());
( [0 ]; f: v; ^/ C! p( S5 l}8 `( h* a0 J0 m( l6 l: k% U% I8 A
/*****************************************************************************
: c9 }# p$ V1 j**  Utilities+ ]% K# O  z7 A  X- E
*****************************************************************************/! w: G) P/ m# Z1 E' H
/* Unload Handler
$ x/ j! P* ?0 ]# Y+ k# X' L**     This function specifies when to unload your application from Unigraphics.3 k4 x  o/ F( F- P7 G; G
**     If your application registers a callback (from a MenuScript item or a, |) f8 L" F. t' S
**     User Defined Object for example), this function MUST return- w$ w9 R8 ~% }3 K
**     "UF_UNLOAD_UG_TERMINATE". */" P) c. z5 F3 e3 Y2 G5 n4 W
extern int ufusr_ask_unload( void )" x& Q! o+ m7 H# r! N
{
, S, F; p. `  S% B/ ~0 B    return( UF_UNLOAD_IMMEDIATELY );
8 r( Y  {' t2 X# J8 R}4 Q4 Z# ]( f; e
7 v* f4 L: r5 V. a" a$ X( f

0 p- t% C; L" P1 w' R我把圆柱的方向设成【1,1,1】,成功了
' ~# g  l1 l- k8 I
# H5 E$ O' I1 C9 L+ y0 e
无标题.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二次开发专题模块培训报名开始啦

    我知道了