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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
4 h0 z3 h" O5 \1 q7 |

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
' x& z" R0 u: k7 W' Y7 S

; w$ v" @3 C% H( H4 w. {2 N' m1 L5 a1.新建一个部件文件,比如:c:\plmhome.prt" t  X! O5 Q; ~0 s* R$ W0 [
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线) J7 k) {* f  w6 v* v% Q# \3 ^& Y
3.询中心线的起点和终点,并输出到信息窗口
2 C! r( Q: C% E! ?# G' o" P! {4.存部件
' k. m$ |9 }5 e& k5.关闭部件
# m, O' v- S% }( D$ t0 t  {( i( L: p
提示:使用到的函数:
# u; E0 V: `8 b3 t  o
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

4 p1 q  F/ I6 w5 K% j  [* v& Y$ q1 f( c1 n6 m

! z+ J, q7 C. z6 O) J% C5 x% l# }2 }- `- a
上海点团信息科技有限公司,承接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;7 V  v8 j9 @2 O4 N! ~; Y
        tag_t cylTag = NULL_TAG;
$ Z. N* F! ^4 s( u; w: V        tag_t bodyTag = NULL_TAG;
6 ~7 Q7 o- }: p8 U        double cylOrigin[3] = {20, 30, 40};
2 c6 ]" |! S  t  d        char cylDiam[256] = "50";2 o. L" {0 j+ T
        double cylDirection[3] = {0, 0 ,1};% @& C4 ^# S' G- I2 @7 h
        double height = 60;
, l; r2 o* Y6 x3 h/ G+ M+ X0 g8 ]2 O4 L        - P8 d/ C/ N6 g2 P$ u
: H8 f; x8 D4 r  ^
        char cylHeight[256];- F! d9 q; b$ W' v
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);5 |1 ^. G' }& ~9 O( \' S
        //创建part  p5 ^& X8 W' S4 ~. U; S. W
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));% z6 ~0 n7 i6 v" G$ r" l# z8 _1 P  Q
        //创建圆柱
0 k8 b  L! f( ^2 E* q        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
& v; Z5 P/ A- @: ?; F/ n8 u1 t/ h2 e        //获取圆柱特征所在的体1 C6 f: Y. F- y% \  j- P! S
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
5 a* b" z, v1 _1 j: O" D        //获取体上的边8 v* j2 g. _2 D1 [
        uf_list_p_t edge_list ;
% ]* j4 m% L9 T+ n- `, d        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
5 z' D  Y6 ], g  N4 R& k- R        //得到边的数量+ [8 P1 I( v! s7 ^. X
        int edgeCount = 0;
% ?$ E6 w6 @5 h  l6 p# J        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));* P* P* Z" u, _, K# h
        //打印边的数量0 j! h( Z0 N. D- T; F  z: v, f5 p
        char cCount[256];% I" n8 \  ]4 G9 x5 a. v
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);8 m: U: n& B3 P4 H5 i! b
        uc1601(cCount, 1);- E9 n' ^) b+ b0 U; l! S! \: C( T
        $ }! u1 d3 o5 O
        int error;8 C) U  y" g) u$ Y
        double (*point_coords)[3];
% b* x7 i% `) D" c3 v4 _        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
: z4 x4 j9 R- \: \* I        //获取圆柱的上两条边的圆心
2 d1 @  q5 b. J! |& r. g3 L6 \        int i = 0;
6 }! X( D8 \8 G# ?, L5 i. G) }        tag_t curveOriginTag = NULL_TAG;6 o+ l& d4 x/ ^+ C$ d" g/ v. v0 }
        for (i; i < edgeCount; i++)
7 V, V% N" b+ E  b$ k# y        {* k/ T! c- d$ H
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
3 k/ G* g2 v' s5 A" i3 w) W& [- f                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));( @8 H8 [1 n9 {& C2 c, `6 x+ D
        }
7 j* S1 m+ e+ a0 [7 E" K        //将圆心存放到直线起始点的链表中0 h5 a! b) x3 C2 G/ w, O. T% K# U0 k/ |# `
        UF_CURVE_line_p_t line_coords;
/ \' G; T% V( Q) d        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
; y0 I/ o2 u+ D  \. E        line_coords->start_point[0] = point_coords[0][0];
/ y5 p  Q' b5 O: F        line_coords->start_point[1] = point_coords[0][1];
  e+ T% _4 H9 l        line_coords->start_point[2] = point_coords[0][2];
! @  G/ p& M+ M4 |& g( [        line_coords->end_point[0] = point_coords[1][0];
* L4 p: h+ R& h" i  b3 d        line_coords->end_point[1] = point_coords[1][1];
9 Q; V: Q7 v* w/ L& }# v2 B: v        line_coords->end_point[2] = point_coords[1][2];6 O0 x9 X2 J7 Y1 j
7 s  I4 l6 q# u) z+ }
        tag_t lineTag = NULL_TAG;
6 Q3 N  g3 N4 ]/ U% u4 V        - O! G" g, S9 x* H2 B" N; y% K0 G
        //创建直线1 x* M$ R7 S) r; C& y
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));# `2 U% H, B% r' }( n

# q" h) s0 k2 P9 i& H# q( {5 ~+ }        //打印直线的端点
2 |+ c- v- j6 w1 j7 B9 _3 x        char msg[256];$ z( k8 {8 \+ W* k# A" ]
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",! w6 N1 C7 R4 M$ Q% {
                        line_coords->start_point[0],! R$ y! F0 m5 k# X0 T) X. l
                        line_coords->start_point[1],- e6 @5 F" i4 R5 [2 ?! G. y
                        line_coords->start_point[2],) m4 z+ u/ I7 x! L: p& j
                        line_coords->end_point[0],
* F3 @, ?' `& m* C( I) l+ ]" Q                        line_coords->end_point[1],& k( [8 \* X4 l+ U
                        line_coords->end_point[2]);5 n9 w: ~% r; c2 \4 O6 S
        UF_CALL(UF_UI_open_listing_window());0 b7 a  f) ]  o" I
        UF_CALL(UF_UI_write_listing_window(msg));$ ^* ^: Z* R1 i0 v" I8 T
        //UF_CALL(UF_UI_close_listing_window());  G3 ]+ d9 o0 p

, ~( G6 b& e: ?) ^! Z        //释放动态内存2 h7 L3 S2 a$ h- E0 @" A) h" _9 z
        UF_MODL_delete_list(&edge_list);8 C6 J; \  q7 n5 j3 h  A
        UF_free(point_coords);
& [. Y7 [8 P$ P! N- Q  ?        UF_free(line_coords);
8 L  ]9 d1 n0 W; k7 B- d7 L
  x0 \% I: q( E& p9 r* X        UF_PART_save();
! |* l  s6 D! v7 u4 b6 A        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二次开发专题模块培训报名开始啦

    我知道了