PLM之家PLMHome-国产软件践行者

[资料分享] PLM之家NX二次开发:第二次课后附加作业

  [复制链接]

2014-11-26 07:50:53 3457 1

admin 发表于 2014-11-24 07:57:59 |阅读模式

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
0 _7 b. ]& A1 i$ P7 o3 L; K4 K

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
% A4 P4 e0 A. P2 p" T0 E

( \0 A( P6 a$ g7 X' G1.新建一个部件文件,比如:c:\plmhome.prt
2 O- i# J2 u5 i! V& v' n2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线, L5 }# g! i: g5 U( D8 [5 }
3.询中心线的起点和终点,并输出到信息窗口3 R, d* f6 |" P8 i0 p: A0 |& y/ }
4.存部件
& |$ x+ U- T0 e, m- K) Q5.关闭部件+ }* R1 u; |5 Q- W4 G7 }

, _$ r4 P  V! J5 k! R& f- r提示:使用到的函数: ! y0 w/ U, W3 R0 ^
UF_PART_new,UF_PART_save,UF_PART_close_all
UF_MODL_create_cyl1,uf_curve_create_line,uf_curve_ask_line,UF_UI_open_listing_window,UF_UI_write_listing_window

! E' G( a. }: b8 w2 ^4 T: I( z' K% x0 T
% o' b, y- J" e+ }9 V
; \+ o+ a! D: M8 P
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

leaf 发表于 2014-11-26 07:50:53

leaf 沙发

2014-11-26 07:50:53

tag_t newPartTag = NULL_TAG;' M! C) f5 f8 H
        tag_t cylTag = NULL_TAG;
/ F6 Y& X9 J6 @0 Y* }2 y        tag_t bodyTag = NULL_TAG;
2 Y% f" W' j1 J: k: e4 u        double cylOrigin[3] = {20, 30, 40};
" m+ }! _0 ~( F! D/ G        char cylDiam[256] = "50";2 D3 b& L$ h4 g$ b0 n2 |* v
        double cylDirection[3] = {0, 0 ,1};
* i3 j# N# |" Z        double height = 60;  c1 x: p% ?' f* P" n
        1 e' l# ^; l# f5 o3 H

" V* ]# x; t) m5 O8 @/ {# j. S        char cylHeight[256];
5 h( }" }& {6 C9 H/ I) {, s        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);7 q- z( x- N+ ^1 _, p. J- W$ k) `8 o
        //创建part7 z4 ^1 E# @3 u, q! S' N
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
. {$ }; N$ x9 b: t; [* F# r        //创建圆柱$ m; V$ B+ {! m( ], a
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
: P9 d5 u0 U) J9 y6 T1 x        //获取圆柱特征所在的体4 t* k" x9 ]1 v
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));# u) w( Z5 a6 O
        //获取体上的边
5 g$ S$ q7 Q+ u        uf_list_p_t edge_list ;
5 a3 j' S9 H  S        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));3 g. S+ e7 M" i  x. J
        //得到边的数量- ^2 n7 q0 i" i$ `9 w
        int edgeCount = 0;& K& K( y' i/ j2 f3 j: [1 `6 p
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));5 K/ E+ c  Y6 g. d- ]& p, l
        //打印边的数量
: f' p/ L$ \) \5 M, k4 x. O# E        char cCount[256];) s; @5 y, f% m) l0 l
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
5 Q2 A+ G5 d* U& E: T        uc1601(cCount, 1);( s* x3 `! B  W+ {8 S! @2 n% L
       
! `/ D& \0 `2 m3 ]        int error;
: Q8 r7 N3 x& z        double (*point_coords)[3];
* c. G& {& e- b$ @5 O- A; G0 u9 Q        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
# L" u/ g8 b6 a/ w        //获取圆柱的上两条边的圆心% K# J4 U! b# I9 \
        int i = 0;
  g0 k1 d5 F- H9 }9 B        tag_t curveOriginTag = NULL_TAG;
$ A: [1 c. h0 L8 A/ W( y: i        for (i; i < edgeCount; i++)7 w! Y) t: z7 a% r- x
        {3 {5 I/ P7 g; v/ R: n; `. v& c2 M
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
# m, |0 j( d& j- g) d4 z; u                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));8 n9 |- N& O3 y' c  z$ E, {3 S
        }
% I7 y6 }2 F% y4 ~+ E$ |) y        //将圆心存放到直线起始点的链表中' D' F2 t. r1 y  {# Z2 T: H; h
        UF_CURVE_line_p_t line_coords;
+ n- D* E% c2 K        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );$ t6 ]$ T: a  i' C5 }
        line_coords->start_point[0] = point_coords[0][0];
5 v) D% X' U1 m3 p. D1 x4 A        line_coords->start_point[1] = point_coords[0][1];
* ~! @4 [2 u: _( v5 S, O        line_coords->start_point[2] = point_coords[0][2];) a' D0 w& h, R
        line_coords->end_point[0] = point_coords[1][0];
/ y: v. j, p& `        line_coords->end_point[1] = point_coords[1][1];  ~: n: c' Y% L2 d  ?
        line_coords->end_point[2] = point_coords[1][2];, C, v7 P6 _, r; J& ]

0 G& H- @4 q- P1 x( x        tag_t lineTag = NULL_TAG;+ ^2 w" @3 m4 a3 h. \
       
5 {3 m* u9 v* N        //创建直线5 H2 \" E1 k5 A: W: z
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
  w2 ?) s- c, [3 G# f& n
1 |4 V0 U+ G6 ~4 N+ }# m. ]& O! ]        //打印直线的端点
$ u. q* b! I2 I4 W2 t" D        char msg[256];' M' U9 X1 A( I# y
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
$ A  ^8 ^( G+ ?& l$ \! s                        line_coords->start_point[0],
% q# }8 q+ x# b) C5 F6 a                        line_coords->start_point[1],
. U8 {, {7 G; U1 p+ D                        line_coords->start_point[2],- N# P: O3 u7 y" Z( Y& n& a6 p/ [
                        line_coords->end_point[0],
' ~7 g/ V  h: G) X! K6 f9 l6 o                        line_coords->end_point[1],
/ G6 v7 g9 q4 y  k5 h2 u0 }                        line_coords->end_point[2]);+ n3 r8 l1 L) v
        UF_CALL(UF_UI_open_listing_window());
# x9 G2 M1 G5 S& G8 X: r        UF_CALL(UF_UI_write_listing_window(msg));8 ~, U0 j. I6 {" Z+ l8 Y
        //UF_CALL(UF_UI_close_listing_window());+ \6 \3 y$ G/ t8 A8 t, l1 E3 I' J

  t( k9 [% c8 k+ R9 ^6 y* n& M        //释放动态内存
% r! J9 B6 C4 V$ R( O        UF_MODL_delete_list(&edge_list);" W/ d* b9 X0 U, T
        UF_free(point_coords);
" S; k0 F- c$ x( g; i7 T) M        UF_free(line_coords);8 {7 G9 f$ g& e  K/ L

& O, j% O5 \3 Q        UF_PART_save();1 p- i& z: ?( m8 f7 Y* H
        UF_PART_close_all();

评分

参与人数 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
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了