PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

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

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

x
使ufun完成以下功能
# j  O  `5 v, B4 T* e6 }

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

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

4 v1 _% y6 r  t* ^

% G6 h, m/ D- g! k/ Y  E. h* X, f4 x1.新建一个部件文件,比如:c:\plmhome.prt1 p( O9 {' e  {* d
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
" e! W7 o- w! B2 X& I' Y3.询中心线的起点和终点,并输出到信息窗口
$ u% s$ S' d* n1 ^$ s4.存部件
0 c( \+ |, m+ N3 _5.关闭部件! X" `1 I/ t! i! M
4 _# b2 h( j. l# \+ Y
提示:使用到的函数: $ R9 }; V! N* v4 b! c. q
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

5 G" K* [$ ]" u7 f. i8 l3 X) u7 C- m: U
, r! W# C5 h. }' V2 {( E$ u; W
# u1 o7 V- ?; N; r
上海点团信息科技有限公司,承接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;
+ y, c( u- ~$ ~        tag_t cylTag = NULL_TAG;5 c  f2 C: d: b0 M, A; k
        tag_t bodyTag = NULL_TAG;
( ~0 b% g. c+ H2 w- i- q, I        double cylOrigin[3] = {20, 30, 40};
; I' G& P. |. j7 h; p        char cylDiam[256] = "50";0 n: {0 Q& R' y% H& D6 q! E  s
        double cylDirection[3] = {0, 0 ,1};: R! u1 r' B8 p0 }. g, E, ]; ?
        double height = 60;& U; l( P, P6 e4 A; D- s1 o
        ) `- i# v/ c/ O" n% J6 }: u* l

( V  o, d3 C! y3 B" i9 x' o        char cylHeight[256];" F7 Q4 i- h2 ]4 t. o
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);! x6 a5 l7 E' Q2 z# o0 c( M+ W- I
        //创建part
' f0 t" M0 b7 P        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));  q! I& T3 I' t1 e% O% J
        //创建圆柱" e$ C! E6 b2 f( h! Z; g6 u
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));6 J3 e; [& L; A5 I; d, ~/ o
        //获取圆柱特征所在的体; {: s0 V+ r4 \+ w2 `/ S8 f8 d+ ?$ f3 ^
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
8 V6 Z5 R3 K. ]        //获取体上的边* a4 U1 [6 Z! P
        uf_list_p_t edge_list ;
' v, N! n- j" w) E        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));9 R. u+ J# g6 _. l1 W2 |9 F
        //得到边的数量
( _- B! @" P5 [2 L4 m1 Z        int edgeCount = 0;
1 W: r: G/ b! |& M5 B! K        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));2 O1 q  Q( n! C" x% C7 t4 N
        //打印边的数量6 z# {) D: v6 L$ m% e1 N
        char cCount[256];
! k" ?0 L+ {8 b8 E; c" `        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
' N0 w" G4 B) f5 O; c7 W8 a& ?        uc1601(cCount, 1);
8 G" C/ O4 w6 S) ?2 B) W        - _* c# r7 L( U0 l# T
        int error;
; I) {# S' a) [$ z* c, z/ w. `: c6 z        double (*point_coords)[3];! F- W$ y; b- @, j  h8 [9 d
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
. V3 g! N$ G7 U5 w! @0 e        //获取圆柱的上两条边的圆心' }4 s7 m, H( e4 N* B
        int i = 0;
6 g+ t7 x) j0 {        tag_t curveOriginTag = NULL_TAG;3 u5 t! G' S: Z2 j
        for (i; i < edgeCount; i++)
# V6 \0 R5 r+ E" p        {
( h. ?5 j& U7 V5 P' p3 v                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
" f% j. m; w5 M+ y1 D                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));$ o, b/ C, X0 l/ ^
        }6 q7 h5 w) s! J4 a) `, q" @6 @/ d
        //将圆心存放到直线起始点的链表中, ~! Q( e8 e6 ^2 m3 E0 \
        UF_CURVE_line_p_t line_coords;; e* Y  L  ^8 E! f. N! w
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
: B# h* c2 F3 n7 F+ j# f        line_coords->start_point[0] = point_coords[0][0];4 K" [5 N: d( F) U% i: H
        line_coords->start_point[1] = point_coords[0][1];
  w2 }& @3 l- [1 Y# Y* L        line_coords->start_point[2] = point_coords[0][2];- z5 j& Z2 u* ^7 r
        line_coords->end_point[0] = point_coords[1][0];
/ U3 i% Z8 Q' W. l0 B: U% i* p' j        line_coords->end_point[1] = point_coords[1][1];& l) A! ~; Q" C% h4 Y
        line_coords->end_point[2] = point_coords[1][2];2 H7 n( M* x' _$ f5 z

. w9 x  `1 c  t! ]( F        tag_t lineTag = NULL_TAG;
+ Z, u8 T  i! ^. t# a, B0 p5 M        5 d4 Z5 Y; n8 e: J
        //创建直线6 r$ n; U! O3 q
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
, c. A+ O) ~% w  L. Z& H1 a$ ^- P
        //打印直线的端点9 B% W! B" f. d8 w
        char msg[256];
, a1 n. j0 {  I8 Z; ^0 S! `        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
* d0 Q: @+ h9 F8 ^5 B: s1 \: {                        line_coords->start_point[0],
, B4 R7 A6 f" j) s( w& |                        line_coords->start_point[1],/ W* d8 q1 |3 T' [( v* r9 B
                        line_coords->start_point[2],9 [& {5 y0 B, p( X
                        line_coords->end_point[0],; e5 n* k0 |% L% ~
                        line_coords->end_point[1],  O& y+ f: |1 K6 ?" ^; l+ D7 y
                        line_coords->end_point[2]);3 X1 @. w6 Z+ `8 ~% H7 t
        UF_CALL(UF_UI_open_listing_window());
% _: l7 k0 K" H' G# Q) d: c& [: h        UF_CALL(UF_UI_write_listing_window(msg));2 L& I0 [6 \4 i
        //UF_CALL(UF_UI_close_listing_window());
7 O- B- L! F7 w
- T+ o7 f' F1 i) u, x3 [$ a        //释放动态内存
6 p, ~8 w1 P) F5 y        UF_MODL_delete_list(&edge_list);4 [4 r; ]% C9 ^8 S& O& Z
        UF_free(point_coords);
3 p; z; n# @4 n  i) j( u  q! r4 k        UF_free(line_coords);/ |' }# j5 o1 N$ w/ g8 _
' x0 b; B! m- f4 t
        UF_PART_save();
+ d+ [' T# B. e8 `; y/ v        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二次开发专题模块培训报名开始啦

    我知道了