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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能3 [& W' p" V7 x- u5 B3 @

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

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

/ Q* Y3 [# y  c/ b4 [

' q4 [' h: N! C  e* S; |3 Y1.新建一个部件文件,比如:c:\plmhome.prt# a( A& z. j) L$ T6 e9 n9 E4 P& @" R
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
# m2 B3 M, _- h: \% j  W4 |1 p3.询中心线的起点和终点,并输出到信息窗口3 V, P% I2 }9 d3 X
4.存部件
  v' @* m( t$ p$ g+ J5.关闭部件
0 `, f( H$ f+ ?3 a4 [3 M1 P$ _# H* [9 N) c
提示:使用到的函数:
6 X* N/ ]  r9 m3 h
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

, n# ^4 U/ f1 ?- r4 ~6 A8 R1 \- i6 o  j- h- t' ?
& r, a  a6 i0 w9 W+ K  ?1 {6 P
, n- |! x3 A( n' P/ b
上海点团信息科技有限公司,承接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;
' _* D" L) O2 e  M5 G" S: j        tag_t cylTag = NULL_TAG;- c7 y, z! m% F
        tag_t bodyTag = NULL_TAG;
$ B2 B7 q1 o' _        double cylOrigin[3] = {20, 30, 40};
) C/ E/ Z, d% J! m+ M- P        char cylDiam[256] = "50";
; I, x/ l- H# J        double cylDirection[3] = {0, 0 ,1};
( ~: h9 H5 C; q$ q        double height = 60;  V- g; Z7 T: _
       
5 w2 U+ V( F( W$ i/ g6 i' t
) @- f4 u( A, h1 }- k/ ~" F0 x2 g        char cylHeight[256];8 [% q7 {# p. d
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);, d8 I, ^4 c& ?
        //创建part
, M# e$ G  L* A/ s" F        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));8 q0 b% f5 K/ I" q1 Q
        //创建圆柱+ \% z- [2 E; w. s0 a# i
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
( p( w' a. T) E: n$ v1 p/ g        //获取圆柱特征所在的体% I; |5 J6 l9 _# E) ~
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
" x1 M& O/ I! ?' n, b; E        //获取体上的边4 h4 J1 w1 ^6 G# b' L* a
        uf_list_p_t edge_list ;
3 T, b3 x* I- r! s        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));3 o: G0 O0 r3 s; }" n
        //得到边的数量( D3 V& t. g! J. p! \6 K$ T
        int edgeCount = 0;
8 M; A( N# u- o5 |        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));2 \) f$ j( m# X
        //打印边的数量. F- H4 f! p: R) h
        char cCount[256];4 W1 @/ Y1 u& o# {6 y0 u' d
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
5 q5 N" k6 g% K2 q$ e3 F        uc1601(cCount, 1);
! e% W- h9 l8 q2 ?! Z6 G        0 \0 Y: q( x4 ~2 r/ Y  G- W, d7 A
        int error;' H& ~) j) Y) ~6 v( T! N
        double (*point_coords)[3];, A# \& @' U! h) n
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );3 m1 R$ h! N- G, I: H
        //获取圆柱的上两条边的圆心5 O1 b$ Y3 C( N4 [  \3 P) _
        int i = 0;0 r0 [' g7 l# \4 x' r! z' o
        tag_t curveOriginTag = NULL_TAG;
, C$ u8 V5 b' H! {5 O9 D$ U  [        for (i; i < edgeCount; i++)
$ c0 \  G" W8 f' y        {0 E5 `3 K6 Y) ~8 H8 t2 p4 }* S, \
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));% f! E6 b$ H1 j) q2 r
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));5 E( z% s7 Z, ^4 G0 C* z( a
        }# V/ v/ w" C; v/ E6 \1 e( X
        //将圆心存放到直线起始点的链表中; k1 o$ q8 B# F: L0 S5 W
        UF_CURVE_line_p_t line_coords;
# a# A- q+ s! ?9 z4 ]4 _! j5 O, p3 e        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
7 R5 J$ I$ @: w) z) T        line_coords->start_point[0] = point_coords[0][0];1 V' l, [2 l" m" i/ c0 S- L
        line_coords->start_point[1] = point_coords[0][1];
) j+ ]  z- }2 V        line_coords->start_point[2] = point_coords[0][2];1 r. G. _, ~* ^# S1 R( N- l
        line_coords->end_point[0] = point_coords[1][0];" t; \/ r! ]- L, D7 I. \) Z/ m3 T4 a# M
        line_coords->end_point[1] = point_coords[1][1];$ R& _  F& M) M
        line_coords->end_point[2] = point_coords[1][2];* a' T$ O6 r/ j7 V' ~9 n' {& }( j
- \4 Y* g" L2 H- a- }
        tag_t lineTag = NULL_TAG;
4 x0 W) ^7 c- P5 z4 q! h$ c       
5 G& q8 K7 O: W) W% a        //创建直线4 r2 c" L' u$ s# e
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));& h, N  V* H5 E
! }4 u3 n4 O2 n8 [& ~
        //打印直线的端点8 t; L; ^9 z* L/ L" v8 b
        char msg[256];0 j5 y8 P  [* n( }1 D$ s$ V
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
- R% C" B8 [( ^" y" w                        line_coords->start_point[0],, t; N# p, H' c' M' W
                        line_coords->start_point[1],2 A$ V% Y  B+ h& ]8 |# g
                        line_coords->start_point[2],
3 s. G2 E. ]9 Z                        line_coords->end_point[0],
0 r# S' C: K/ C0 g/ A# U. p                        line_coords->end_point[1],
  D0 q8 @; @' C) l9 p: \                        line_coords->end_point[2]);
8 ]- ^: L: x- [" Z  c$ \        UF_CALL(UF_UI_open_listing_window());
3 `; d( p# ^$ |: @        UF_CALL(UF_UI_write_listing_window(msg));0 a% X. [8 W" m/ M4 R
        //UF_CALL(UF_UI_close_listing_window());3 h, t, d2 N: h# B

7 r! G) s0 W& D7 l( W8 F2 }. ?        //释放动态内存2 S6 J+ {) G9 T- S7 p# l
        UF_MODL_delete_list(&edge_list);' u7 S0 i$ f4 d0 v4 m
        UF_free(point_coords);6 |0 s! d% N: c& P) h5 h
        UF_free(line_coords);, T2 U6 ?) @; ~, |' V8 K

% S" G3 o5 }. w8 ], E, d% k        UF_PART_save();+ h9 O$ F! U8 Y9 j' M
        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二次开发专题模块培训报名开始啦

    我知道了