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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能5 ]: ~( T4 \: z' i

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

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

1 j3 W0 G7 D" b. P' \1 b( W' J, e

5 B0 ]6 B3 [8 _6 H. ]1.新建一个部件文件,比如:c:\plmhome.prt
4 w# @" f8 X' ~6 A: [5 U2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
6 O' Q5 q6 q/ i0 Z" {2 P4 f+ Y3.询中心线的起点和终点,并输出到信息窗口
" g  O! |& v6 a/ _/ C8 V4.存部件1 y; ^$ v; |8 C. E$ c( n
5.关闭部件
" q5 d# m; S5 I8 l2 c
9 D0 C! ]+ a, C" u4 c& m提示:使用到的函数: 0 g7 e1 q  L6 G$ P$ V% X
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

) g+ d! I, i4 ?) Z4 r
1 R1 P9 w* M/ q0 U1 o& Z& _9 n, p' E/ @. B3 x

6 L! a$ A6 ]* J: f
上海点团信息科技有限公司,承接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;
6 j  X4 Z$ G; d7 D        tag_t cylTag = NULL_TAG;
6 {$ u8 V5 y+ V0 Q0 Z) o+ P        tag_t bodyTag = NULL_TAG;
3 J- o/ ?6 ^2 S3 g% u: `        double cylOrigin[3] = {20, 30, 40};
( X# X$ z" m. G  z8 B5 s( j2 k        char cylDiam[256] = "50";
  U/ d0 \/ G$ ~        double cylDirection[3] = {0, 0 ,1};+ P: o8 {8 W# }; [$ }) W7 c  e$ v' O3 B
        double height = 60;
' b( f: Z- m  ~/ ?  E9 X        - F  ]4 d. Z/ n7 Z, m/ v/ t
7 _4 {6 v% U; ?( j
        char cylHeight[256];
2 h- E: w4 v1 e        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
4 U+ E6 S% s& S. U0 G# Q  A8 h- U        //创建part
, O* L+ @4 g8 R: t        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));5 T+ ^0 W" \4 U
        //创建圆柱+ A' Z* C  }* u' m; \
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
- l1 Q2 e& N  e7 b1 C        //获取圆柱特征所在的体
% n& v7 P: I& [& U3 h, U        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));) c9 e3 I) K8 F+ ]2 W
        //获取体上的边8 o4 Y' e' c. V. z1 o$ k
        uf_list_p_t edge_list ;
4 M$ g. _) z- i" H        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));% j. k% X) a$ y* Y
        //得到边的数量
, r$ O6 O+ X. v' @& C; q$ \* y        int edgeCount = 0;3 {* U2 G# b5 {0 f7 t, h3 y
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
: ~- |( V' F/ \8 d2 D0 i        //打印边的数量
3 M# ~9 r) m3 a        char cCount[256];/ L/ X# J. A1 @# C; [8 ^- z' G
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
  P/ h* X  G  M        uc1601(cCount, 1);2 e4 l7 l7 T& Y7 h  X7 _/ \
        $ @9 M- M; Q3 R0 l5 W
        int error;
! c6 U# w' c9 a! c) s2 J        double (*point_coords)[3];
9 P4 [) O3 `0 n  |        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );+ A9 U) \! L& O
        //获取圆柱的上两条边的圆心
9 O' _6 f3 g3 {2 _+ C8 ^        int i = 0;" }  A! g( k: r2 |1 T& E, o# X
        tag_t curveOriginTag = NULL_TAG;
1 q- L  Q/ J4 I+ h        for (i; i < edgeCount; i++)6 k4 N; R+ U% R1 h/ v- h
        {: c" L- \% _5 S& I' E+ c9 P, q
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));! v) @! ~0 L( W2 U7 [
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));$ M# a4 X0 W2 `9 Y! u$ C0 V# x* t* P6 P) F
        }
/ U2 |# x! k& d& V' X        //将圆心存放到直线起始点的链表中- R- @: Y. }5 B8 {6 l  [
        UF_CURVE_line_p_t line_coords;
7 w! P9 T+ c6 @+ n4 g( ]        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
, }( _# y0 n  z* {' j  q6 ]+ s        line_coords->start_point[0] = point_coords[0][0];
1 v* h- ^: r/ K0 N- Y, J( H        line_coords->start_point[1] = point_coords[0][1];
; {# E2 m% |; ~6 b# `3 C        line_coords->start_point[2] = point_coords[0][2];5 ]* `; ?1 _( Y! j& n
        line_coords->end_point[0] = point_coords[1][0];
" h- [7 r) c  a5 [8 k        line_coords->end_point[1] = point_coords[1][1];4 r, I8 j; x& x8 m! j" m" a
        line_coords->end_point[2] = point_coords[1][2];! t3 R% k; M$ X9 K( [0 y

. U& ]1 k0 l& E9 c8 @/ [        tag_t lineTag = NULL_TAG;
& G6 H9 s5 e9 i! w4 Y6 }0 A7 f7 f        ; g& y& k0 A. F* U
        //创建直线
: g, m# M: y2 S1 `  c! T, V        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));% i9 r6 Q, y1 V5 v  C6 z* j
; d; T6 q5 C3 {; U; X3 J
        //打印直线的端点
' c9 Z+ {  L! q- z2 U) g9 W9 x        char msg[256];: E7 Y- x. Z) y1 a  {3 G0 A
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
5 L; M# Z. w! }& g0 S  T* m0 }                        line_coords->start_point[0],4 @! J& E+ m& Q  m
                        line_coords->start_point[1],
; X8 S, z- i5 f$ b, S7 [                        line_coords->start_point[2],
% V* g( y! u# ^2 L9 }6 r# G                        line_coords->end_point[0],/ R& q; H! M3 ^2 C! ~7 Y- z
                        line_coords->end_point[1],
: L( d" X( U9 e                        line_coords->end_point[2]);
% @6 i6 c5 n: w' I9 _; x! C2 u        UF_CALL(UF_UI_open_listing_window());
' [8 X/ f% J5 E        UF_CALL(UF_UI_write_listing_window(msg));  m5 H* b. Y! ?1 g; P0 n$ a
        //UF_CALL(UF_UI_close_listing_window());
* R2 K# M# \* V) {- j6 `  [' g/ l
        //释放动态内存# I8 ?6 z+ _1 w: c1 f0 d( H6 V
        UF_MODL_delete_list(&edge_list);
0 X  r3 s8 M' `* ]2 ^% H! g        UF_free(point_coords);
3 K5 U1 e, V/ g0 }8 e# I" [        UF_free(line_coords);1 V; z% _0 G2 H. t- k& s3 C# ~
4 r, E; l8 ^: R- X- A
        UF_PART_save();2 W" k' W. R# s8 Z1 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二次开发专题模块培训报名开始啦

    我知道了