PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
6 o% d. Q/ Q7 z. H8 E6 z/ n' B2 j& u: r

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

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

& T; x1 h1 `* y* U) W" a

" H- U- X6 c! t$ l. t9 b& ]1.新建一个部件文件,比如:c:\plmhome.prt* }0 z" v0 W* X
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线1 I6 A9 l0 P" t7 C! ]8 u
3.询中心线的起点和终点,并输出到信息窗口3 A: e% x" v' b' A" q# Y! U; N
4.存部件7 Y' V* J0 v+ [( o
5.关闭部件- ^6 M" A0 L" m. v8 q, ^
: q: [8 t- F& @: g
提示:使用到的函数:
7 [2 r( J; r4 P6 F9 W
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

, k/ q6 L* A) N, D  J( I. ~
0 ^2 E* I. J7 X  {9 Y
6 t! [3 D& O9 d3 T
7 E* }: y& l8 j  s1 c1 b8 N
上海点团信息科技有限公司,承接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;1 ~1 l5 p5 X' T. T0 z
        tag_t cylTag = NULL_TAG;5 f1 B' Z: {) A- @, r
        tag_t bodyTag = NULL_TAG;1 ]0 n1 {$ d3 m2 Z# @; I* ?$ \
        double cylOrigin[3] = {20, 30, 40};" H; M' D5 |  y6 g# g
        char cylDiam[256] = "50";
- D! n: R# N$ ]7 [2 n8 \        double cylDirection[3] = {0, 0 ,1};# e8 s; K) \% @) h2 |
        double height = 60;
' A# S* \6 ]/ R' \        6 V, }; K* G$ Z' ]" m( @/ h
0 Y7 ?  y- K& s4 T6 R' {0 X
        char cylHeight[256];
: m7 s6 `  L. f5 S        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);% Y  M3 n) Z7 S0 ^1 x* ~8 q
        //创建part  k/ x1 [! r* f/ l: N. T! s
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));# M1 q" ]8 X2 _- |
        //创建圆柱% N$ t. I# ], J7 ~$ J+ y
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
+ X: a$ n' ?5 u2 P& i3 [* m4 h$ s        //获取圆柱特征所在的体8 T5 M) S  {# l. e
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));1 W5 |" {) U2 O; c! u
        //获取体上的边
; f6 t4 }4 b  Y+ P3 S$ p        uf_list_p_t edge_list ;
, K; e. Y5 J7 i  B1 F        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
% l$ i" k5 L3 p        //得到边的数量
: ~+ ]* Z6 s+ P) H1 R        int edgeCount = 0;
' _3 o" v& E# k$ d% z% a        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
# ]$ ~: A) C. F        //打印边的数量
0 t" j9 k% m3 h        char cCount[256];7 P0 J3 z) Z# u
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);: N- w0 P; q5 L" p: T
        uc1601(cCount, 1);( }3 L4 S4 I: D( x, P  \0 }4 ^
        1 B- h+ ~0 T0 O, }: }& F
        int error;
$ U9 ^' |" M+ T' b: s        double (*point_coords)[3];
4 ^6 Z$ m  ]: y- C4 c0 ^        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );( f4 U- U, L& p& S5 C4 B1 X
        //获取圆柱的上两条边的圆心: B3 D4 u+ S) K  Q
        int i = 0;
# v7 u/ S0 r8 b: z' D        tag_t curveOriginTag = NULL_TAG;* X+ }( N, d; `
        for (i; i < edgeCount; i++)
9 R6 M2 Z% S& b. j        {
) X# n7 q0 q4 X1 \3 D9 Q+ R                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
. c, e3 l+ l& S( S! G                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));1 q9 T8 K7 L: y2 t6 p
        }6 [4 K" g' S6 _- g& e
        //将圆心存放到直线起始点的链表中# s/ S) H0 V4 p
        UF_CURVE_line_p_t line_coords;+ u: {6 `1 S% d$ D  i% Z
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
# n1 D, ?1 e2 X% Y/ W) u5 I5 f        line_coords->start_point[0] = point_coords[0][0];, Q- Y( O( q8 X/ w# A& `+ h  `
        line_coords->start_point[1] = point_coords[0][1];
4 ~5 ]/ {" a, X. U# z        line_coords->start_point[2] = point_coords[0][2];
6 B. H# ~+ d. o3 W        line_coords->end_point[0] = point_coords[1][0];3 N$ [" s- `8 W0 m  l9 {! p/ u
        line_coords->end_point[1] = point_coords[1][1];! w6 k6 u7 Q) A" _
        line_coords->end_point[2] = point_coords[1][2];: U1 m- n  I/ L3 x9 n4 y8 E# D
/ v9 y2 p4 g( ?$ Y6 S0 q' g& W
        tag_t lineTag = NULL_TAG;$ a. a+ d- ^& A, Z0 i
        - n, V9 W1 k' Z* D# I: B
        //创建直线/ s  v  h! T0 h) g4 {6 R7 \
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
" h: {7 O  _5 S! Y1 h* Z, f. E- t6 T. Q
        //打印直线的端点( s( {# d' h4 f
        char msg[256];
& h- f2 r+ \( L5 Y! f1 P' z        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",2 L9 h% `+ N* H0 I3 @4 I  @
                        line_coords->start_point[0],& O! x! d0 m) E- ^
                        line_coords->start_point[1],) m6 f( n$ x& G. w
                        line_coords->start_point[2],/ a* X( t) i6 V# ?* z) g& t( i
                        line_coords->end_point[0],9 f. `; t! G# }9 C4 V
                        line_coords->end_point[1],
, j( p: U! ?2 ^5 {                        line_coords->end_point[2]);; |/ m0 x1 v/ [
        UF_CALL(UF_UI_open_listing_window());
' ]1 x# B3 m' n% Z$ t7 L        UF_CALL(UF_UI_write_listing_window(msg));
+ }2 C# q+ T+ j5 L3 p/ F  {6 K        //UF_CALL(UF_UI_close_listing_window());
3 T) j$ |& n+ q2 _2 T5 X+ w. D4 L6 v# v9 I) E4 R
        //释放动态内存- q0 V. A. @) u  _$ H* U
        UF_MODL_delete_list(&edge_list);
1 K+ ?" S0 V8 o+ c" F        UF_free(point_coords);
) O. }; K- x; q" W  Z) T        UF_free(line_coords);
6 D' H6 P- }# P% R5 \2 H3 D2 V. {* U' B/ c0 l
        UF_PART_save();. O# E) y9 I8 t* ^% m' F
        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二次开发专题模块培训报名开始啦

    我知道了