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

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

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */
8 L- J# C1 e  m' ?) c$ G* v6 Z6 b#include <stdio.h># g7 h" D/ M$ ~
#include <uf.h># r( }: Z: w) f- V6 i3 O5 d2 i
#include <uf_ui.h>) F6 J, ?& Y% N2 [/ U/ x4 i# r
#include <uf_modl.h>2 j/ A5 y: t/ b, r9 y" `8 \
#include <uf_part.h>
) k/ I+ v' j2 n4 v#include <uf_obj.h>;
2 P- r0 Y& m; G5 Q#include <uf_curve.h>
( g! e' e. G4 m6 O$ P) A: c2 |
- n& O5 x/ z  |* U1 m8 q/ d2 s4 V#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))  u; I' q: a* y) c8 d
static int report_error( char *file, int line, char *call, int irc)( ?5 i  u/ j9 \2 v! [
{2 L# V2 s% {0 ?0 \2 P: d
    if (irc)
$ g4 E$ b+ s: g/ L* s  Q: _: T    {
& O0 ~3 O" t. z. C        char err[133],
" ~& m. }! T2 o8 \4 y9 A; x             msg[133];+ J' j3 c, @" j3 C1 R9 D
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
, A2 S* M  z/ {! C6 m# S. v% E            irc, line, file);$ M, W8 ^) G9 B% t: Z& `% k6 G
        UF_get_fail_message(irc, err);) F2 e3 A/ e1 M4 y$ R& o# F9 s5 S$ x. D
        UF_print_syslog(msg, FALSE);
6 M  A2 Y6 F: a3 N. |; N2 V+ l        UF_print_syslog(err, FALSE);8 i2 t( f# T* M- I2 t, S
        UF_print_syslog("\n", FALSE);
" l  }/ W$ B( x4 H! k        UF_print_syslog(call, FALSE);6 l) R* b: J# |/ O
        UF_print_syslog(";\n", FALSE);
1 f1 t0 X6 q0 L( r2 a! Q5 m        if (!UF_UI_open_listing_window())( |$ N: w1 s3 x; K" W
        {: Y% M# ?1 _4 f* e
            UF_UI_write_listing_window(msg);
& n& U3 q- M9 m9 z- l8 f6 B1 \            UF_UI_write_listing_window(err);) X/ n/ ?6 y6 B" B$ j
            UF_UI_write_listing_window("\n");
2 j2 q3 n/ B$ b9 v4 a            UF_UI_write_listing_window(call);2 p& Q4 f) D# z' a; b4 p
            UF_UI_write_listing_window(";\n");. y3 I5 @6 l. Z3 G( Z9 K
        }1 w0 ~& u+ L; P  K  s
    }
3 D- o; W5 A: K% X+ p    return(irc);& t! B( }- y. v1 Y' F. N
}$ |! {7 c7 |! p

7 S2 I9 y* F' ?: ~" _/*****************************************************************************: V' o' Q3 J$ |0 K  J. u9 X
**  Activation Methods4 u# e3 n, |- A! @  D, v6 p5 r
*****************************************************************************/0 [% y9 C' B, m. `; N
/*  Explicit Activation
: E" L- c+ @& A/ a! c% @5 z6 C**      This entry point is used to activate the application explicitly, as in+ f$ h. b0 o/ |  B* ~. D
**      "File->Execute UG/Open->User Function..." */
7 j# G# b* I8 J8 Z, B1 \/ R6 m/ b/ x  e( s9 X
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )8 q7 Q' C9 ~& T8 M
{# L/ e* Q" C; D  |9 L. u
    /* Initialize the API environment */
( N0 o$ R" K0 X  U) Q/ `- e% i4 E tag_t partTag=NULL_TAG;
! O. o/ @$ u) V, M2 k! g( p2 D double origin[3]={0,0,0};, |) A, E2 v" o9 S$ F( T" J" o5 I
char *height="200";7 A6 s+ B9 I! ?6 E9 ^
char *diam="20";
. [2 t' c; q  R double direction[3]={1,1,1};
$ t2 L+ p! C0 _1 k0 ~8 K1 R tag_t cy_obj_id=NULL_TAG;+ x8 t/ m3 l3 _. P8 m- k
uf_list_p_t edge_list;' W, O% s8 _; A! U
int count=0;
+ i3 ?+ F4 Z+ j2 T# a tag_t edge=NULL_TAG;
/ ^  y/ V9 x( w2 _ double originalpoint[2][3];5 i3 S( J" P/ C+ ^; @. S
UF_CURVE_line_t curve_coords;
! G# Q( ~( P3 m3 y2 V5 n3 q5 V UF_CURVE_line_t mycurve_coords;5 N! u  E0 p0 S; x7 u' Y% J: O
tag_t linetag=NULL_TAG;
) v( E- I1 Q  {9 b. k tag_t body_ID=NULL_TAG;7 D+ u  \: F2 i8 G3 Q' h5 r. Q
int i;
, h) j0 L& P. d# p# m char mymsg[256];
$ U7 ?3 `) e* S    if( UF_CALL(UF_initialize()) ) 7 r5 q: t( q: y  {
    {
( \' o9 s6 j) m* T        /* Failed to initialize */: Q  u4 `8 b# a; Q; L& i1 I
        return;9 t7 M7 s6 e! {! [
    }5 d2 h" R  W5 j2 U3 o
    $ R) h5 D: G1 a' k+ O2 u2 v  s
    /* TODO: Add your application code here */
' `( \% ^# o4 f! x // 1 new part
7 h9 ^& A4 e/ ^ UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠0 A( b/ c5 X" w( s0 w

9 n( Q  s3 S6 y* v% \* P$ G8 c; l //2 new cylinder 5 B( J: ]: b8 e0 |$ @. i
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
, |; i$ g0 U+ \/ {) C UF_MODL_ask_feat_body(cy_obj_id,&body_ID);
1 c! k" K2 j+ F //feature -> body  g# z6 X6 q9 z+ n. S
UF_OBJ_set_color(body_ID,21);
* p) ]- r) N% m: d //change translucency
* K4 `, [  m7 x. z% _! `* s UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
( @. N% S& L# t2 @: |8 L //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag) R. m( P2 n* O; T# j! B7 @8 }8 {
//3 new line7 W1 n+ [- X/ M$ N: ^% r7 r" k
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));
9 [- B# x; Y4 S% }  V UF_MODL_ask_list_count(edge_list,&count);- l/ m6 G2 ~; t
if (count>0)
- r6 C7 s/ |- }4 D9 q7 I9 d- z4 [ {
* G. Q& e4 `, X# i' s# E: [) R- H     for(i=0;i<count;i++): s6 b( d1 @% r6 U
  {
; x6 Z- x: l7 N& ?5 n/ B   UF_MODL_ask_list_item(edge_list,i,&edge);
- F  D* `  i5 x# k0 V2 R   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心
3 U* ~4 ]! V9 U2 T; o2 i+ g* D  }
% M$ N2 F' ?# d  for (i = 0; i <3; i++)
, v  \$ @/ F$ R/ ]  {& z: I- i9 `) c, ^% u
      curve_coords.start_point[i]=originalpoint[0][i];
( `) _0 _) a& V   curve_coords.end_point[i]=originalpoint[1][i];, J3 n6 }$ U3 H$ z" G  K' |
  }# d2 F/ d- ^  E% N
// UF_UI_open_listing_window();
4 O9 p6 @( `* q // 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]);
# x6 O; }: ]* m, _, z' S, t //UF_UI_write_listing_window(mymsg);" [2 E1 X4 i% @, {! X
// uc1601(mymsg,1);
4 }$ x9 T% Q7 ]1 u' A9 D$ s  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
% O# a: Q; l& N6 V, c" Q  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点  I% }8 ^+ t% f2 H5 X4 s% R) N( m
  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]);
1 @0 G& k7 n* t9 F  //UF_CURVE_ask_line_data(linetag,&curve_coords);
( c+ A& M* P& j  Y$ r& g  //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]);# |) ~. z+ E; h" G
  //UF_UI_write_listing_window(mymsg);
4 [$ _* a' H9 i0 @7 J! @  uc1601(mymsg,1);
5 l& {) A- L; w3 c* w  F2 B }
: W0 o6 F4 e. Y" r( G% L else
; u; g. M' t/ Q% o5 |( T {
/ [& E# A1 L3 x6 y1 |  uc1601("no edge founf",1);
7 s) u  S; @0 l  O }
4 v. O1 j" q" v5 I; Z' O " q; {/ j7 B! b. L9 Y  `1 k1 u

6 V0 [3 w+ e' ^) k) q' }$ ? //UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
: x5 g% s: p2 G' a //UF_PART_save();  //保存部件
/ ]9 F( u2 f" f2 j% } //UF_PART_close_all();   //关闭所有
% |; k. \) _  p6 @: o( ]5 R
0 d: x$ n4 G, `( {( ?+ G/ A4 y    /* Terminate the API environment */
- n# s8 g% G. w8 E    UF_CALL(UF_terminate());- [6 F) p  {3 @$ z3 ^
}
1 ^% G2 ^, e- P! Y/*****************************************************************************( U. J5 e/ ^0 C+ g! C. b
**  Utilities
0 W4 r/ h# q( `; J$ a# ^+ \*****************************************************************************/
: n1 i6 w5 X$ N% @+ D+ O/* Unload Handler
' @8 Z/ N& e1 e2 e**     This function specifies when to unload your application from Unigraphics.
! d. b& s2 u- d**     If your application registers a callback (from a MenuScript item or a
! V8 w6 ~1 P0 K. R* v8 o/ _**     User Defined Object for example), this function MUST return
- h9 e9 o% j  M1 q) b7 T3 d) [. \+ N**     "UF_UNLOAD_UG_TERMINATE". */7 u  @# p" V" C* E( Z, u& O1 J# H+ c
extern int ufusr_ask_unload( void )
) ~  P8 i! C) G{
, v- M0 N# s/ z. T6 f; e  F6 D' @    return( UF_UNLOAD_IMMEDIATELY );% G9 ^, m$ h2 s! _
}
" |8 t: F4 ?: N" r6 S6 T( H2 c7 G: z; E1 S, c

* {/ K6 z2 d2 w, k3 N我把圆柱的方向设成【1,1,1】,成功了
0 @5 D5 L4 x) i  A- V; y
# M$ ~! T' ^' G8 @
无标题.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二次开发专题模块培训报名开始啦

    我知道了