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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能; [, o! ~+ x% e% ?5 l

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
6 N3 n. I  R$ Q- Y$ h

6 k6 L( F: e9 P  f8 A1.新建一个部件文件,比如:c:\plmhome.prt1 W4 t8 _5 I1 O0 s$ a* x- Q/ \* v" X
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线/ r9 \! ]% F+ {( s7 v( I  J
3.询中心线的起点和终点,并输出到信息窗口  v0 V: ?7 X. Q$ S3 t
4.存部件4 O: Z3 k- L. B. _6 y7 ?- \) J
5.关闭部件
+ G- n& [" h; ?* i) b' T2 L9 c
- u( A9 ?/ D: O$ {提示:使用到的函数:
( u/ M: {- s! T$ u
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! H: e4 q( ^# J( [% {* I
" B, U$ S/ W3 o" ^
8 @) X8 }# @% I/ i7 ~: W2 N3 `
- j4 S5 e- a0 d* Z8 n7 l3 ?: x6 ^
上海点团信息科技有限公司,承接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;
, s; F. e! Q# P7 X  Q        tag_t cylTag = NULL_TAG;
" }: I! w! U1 ~% ^        tag_t bodyTag = NULL_TAG;8 B- V2 w  I( X: `+ j) l
        double cylOrigin[3] = {20, 30, 40};
; S6 f# Z- _' U; ?/ p! f3 x        char cylDiam[256] = "50";% ^' f) q! f$ x
        double cylDirection[3] = {0, 0 ,1};
7 [) A7 m* r% a! R. e6 r* z        double height = 60;
* o' r5 i" X  u9 q. i) P       
1 s6 m% \: T  E9 o7 f. h: Y9 K8 ?! u4 ~1 D" u0 t
        char cylHeight[256];
& }5 {6 d% b2 r. b1 C+ v# u        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);9 c" H: ^# q; Q. u8 s
        //创建part
: o/ ?5 t% x# s; R        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));! E- J) }5 {: T! v0 T, m8 T, L
        //创建圆柱
5 M+ ^2 H" \' Q2 I9 \  ~* q! D( b        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
& M2 _9 B  ~" n" ^; b6 U' m4 p        //获取圆柱特征所在的体9 n; `; T! K8 m6 R* M7 g" u+ B$ V
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));' Z- M* a/ m6 P- a9 e$ M+ K
        //获取体上的边
) k4 m& Y: _4 T6 ?        uf_list_p_t edge_list ;
& @9 V. t# c9 V6 \8 ?  b        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
% n& n' e; ?% k  f0 [  h: u0 G# g        //得到边的数量
# y3 c. @1 a2 M  ~6 K9 V7 O+ k        int edgeCount = 0;
9 y) D2 g1 B0 l$ e. d7 K        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));& x7 Q8 n) }! A0 C. X! P7 `
        //打印边的数量
* B: B4 M" d* a+ _- N, R6 Z8 z7 c        char cCount[256];
6 @, Q  P  G; v1 M+ }# C        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
  F- D7 }! j2 T& @/ X        uc1601(cCount, 1);5 I2 x- e% n1 V
        6 z+ g1 x6 ~9 ~) ]5 J0 V6 R( u
        int error;
! a$ F/ C$ y# u  [$ t        double (*point_coords)[3];" y5 m; e" W' G8 o* o# V& j* J
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
9 s3 M* H, z3 |' D. w; m        //获取圆柱的上两条边的圆心
- k- U6 ~, L+ L4 W7 H* [        int i = 0;
! K+ z( [1 `: h  F/ ]        tag_t curveOriginTag = NULL_TAG;
. D/ @. P7 t, z9 L7 S. O1 B# Z        for (i; i < edgeCount; i++)
: D% d' g' ~" S  e/ t" ?* ?& Q! v        {
6 e5 T; z7 @* ^$ S8 r! s                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));0 s, }, y! F" r+ s; e
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));, @- w* k9 L) r* Q  ?
        }" S% g0 `. b  [' O" o1 P
        //将圆心存放到直线起始点的链表中4 g$ f4 o. @5 F; ]: N1 [
        UF_CURVE_line_p_t line_coords;, Y. ]& q: l" n+ e+ Y, i
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );% ^& \6 x$ [9 f! I
        line_coords->start_point[0] = point_coords[0][0];
2 s: c# D" B- @. Y& y% Y        line_coords->start_point[1] = point_coords[0][1];: u4 e4 Q; ]; U: E3 |- s8 y9 m5 F
        line_coords->start_point[2] = point_coords[0][2];. C( x8 b, u! Y5 V3 w3 X' n* @
        line_coords->end_point[0] = point_coords[1][0];4 W3 f5 q/ m" q+ ~' Y2 D
        line_coords->end_point[1] = point_coords[1][1];
- k3 C% q+ P9 x, B' V' K- C0 ?        line_coords->end_point[2] = point_coords[1][2];. S& q7 I/ J  x
& n6 H5 t, ~. O. Y! |4 \
        tag_t lineTag = NULL_TAG;( Y% ]' l0 C! d% F, _
       
# G( T6 d* F; B8 d3 \2 Z        //创建直线0 b& m7 h- b& r3 q
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));$ y# \) q* J, x5 S% ^: _
4 X) k. {5 I+ C
        //打印直线的端点
4 n4 t5 ?! u8 ]% t7 r! ^        char msg[256];
( ~/ j6 {: e1 v. ^        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
8 |) D+ I5 D# d8 w5 L; v$ M                        line_coords->start_point[0],
* b& T9 m1 f) o* c9 `                        line_coords->start_point[1],
8 D* v$ U! j" ^# A: M                        line_coords->start_point[2],* U4 J# S' @) z% g* h  T% P
                        line_coords->end_point[0]," ]9 b) ?# v$ V' D# \
                        line_coords->end_point[1],+ Q, q3 d; t0 H$ [; ~
                        line_coords->end_point[2]);
) G2 K0 ~; E  ]% j" G1 ?0 a        UF_CALL(UF_UI_open_listing_window());, x& q  n0 E- ]. v: f- ^, w; H* m/ l
        UF_CALL(UF_UI_write_listing_window(msg));
+ l( t# R6 z$ k- r9 i: M, l        //UF_CALL(UF_UI_close_listing_window());
: o8 e9 r( o% A" w0 T5 I9 L, {$ P7 e  \6 r! K. w! q4 @) `
        //释放动态内存2 r! `" E/ D* W5 l
        UF_MODL_delete_list(&edge_list);
3 ?1 Q3 Y# U* _9 M' i' t0 E7 y        UF_free(point_coords);
; _! b9 s8 e$ b) m9 ]# J1 Z        UF_free(line_coords);6 S# T- Y7 C7 f$ E

# c* C  |6 Q% x& F5 }3 I1 ^# H        UF_PART_save();! V' O5 \+ K, K3 r8 V( f7 b8 X
        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二次开发专题模块培训报名开始啦

    我知道了