PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
! I6 |+ S, q8 |! _# h- W

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

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

2 c9 K3 w# Z2 X  r! v4 P

3 _. L1 E5 c) z* j7 p1.新建一个部件文件,比如:c:\plmhome.prt
6 q. i% w* W8 O7 u' X3 \! g- B8 H  }2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
, C* I( ?* D. I4 c! H4 q3 h+ l3.询中心线的起点和终点,并输出到信息窗口. j& T% \2 p- I& j% P9 o% k& r
4.存部件& i7 t0 U4 |7 H0 E# e' H
5.关闭部件6 G6 h4 s( G2 D
( H, o6 a$ q& H2 A0 y$ U: F
提示:使用到的函数:
9 n' v4 _2 j6 b3 o$ l
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
, L* l7 {  `% @! \0 i% c4 [7 t

! X# e3 m$ i; |+ r$ f5 U* ^9 D- V3 U8 y

7 T# t  W5 e& j. d1 o
上海点团信息科技有限公司,承接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;
) n% N+ B- S; m  i& D# E/ o6 U        tag_t cylTag = NULL_TAG;
7 r+ `+ q9 f, ^- k* N        tag_t bodyTag = NULL_TAG;
. m& U$ u1 [2 i' q4 N' ~% f8 c9 G        double cylOrigin[3] = {20, 30, 40};& X, g) |. }$ J4 X0 B
        char cylDiam[256] = "50";3 q! `) t9 g8 ~& b- z  `* s3 j1 \
        double cylDirection[3] = {0, 0 ,1};
, n5 v+ {+ d; U+ V+ @9 n' Q        double height = 60;. Z$ t- Q# Q& x! [$ \( I4 k
       
5 I" l7 I/ ]7 J3 ~# a& w& V' h/ ?* `  q
        char cylHeight[256];. K  g+ M/ O8 R. G" X
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);. [, C' x3 J/ t7 Y! p$ {- y
        //创建part0 Q) T0 ^  r4 M9 D# a* Z: n
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));" N3 y" O( n6 n& x9 N
        //创建圆柱& J+ @/ l$ q6 ?; r
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));) M& s+ W* Z$ P- T
        //获取圆柱特征所在的体
( `9 U, L- Z+ t! b4 e& v        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));) O* L. F. u( z; X' P9 h0 d
        //获取体上的边9 H& ^% x2 a6 W& s/ ]
        uf_list_p_t edge_list ;
1 Q  `' p' \+ \3 N5 J        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
  \1 q5 W1 C! E* T( h! u0 p        //得到边的数量
4 S. x) j# O' o        int edgeCount = 0;' J5 B2 h8 |5 Y6 u2 w
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));3 w1 v8 j  I3 w6 c
        //打印边的数量# a6 p, r5 [( l. @! {: R
        char cCount[256];5 t) ]8 a+ |0 W
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);3 \- N! Y" h. L8 _6 W
        uc1601(cCount, 1);/ T0 y* L" t8 m" r+ A7 m
        1 v" F$ m5 v  L6 E* s* r6 d$ U
        int error;
" R6 {" q  I; {9 Y5 n4 p5 H        double (*point_coords)[3];
6 ]' H6 z+ p! [: t        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
0 t, V, f- v5 O7 _7 M5 r: P        //获取圆柱的上两条边的圆心
+ C' p" t0 I" B& {        int i = 0;
- `" O9 n4 \/ o; v# ?        tag_t curveOriginTag = NULL_TAG;
1 }; c* G8 n2 \4 B# X$ Z5 G        for (i; i < edgeCount; i++)% Q. v& i+ O" O2 d( e# ]+ @; O
        {
, p( ~* A4 Q8 }/ ^* D& p5 g                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
1 `' t5 d3 A) E/ g: ?5 J                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));) j! ^. r) U' Y9 O2 a5 u
        }" J" S: P8 B* c' G* J+ Y9 \
        //将圆心存放到直线起始点的链表中! R( C0 O: h% ~& K0 f
        UF_CURVE_line_p_t line_coords;
: L* g, [' _! f4 O, g) P4 H8 g        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );+ x3 U) @8 m4 z; u$ V/ l
        line_coords->start_point[0] = point_coords[0][0];' a# m/ P# x, ~. F! G! u
        line_coords->start_point[1] = point_coords[0][1];
$ B/ ]% W! v7 f8 `) O" v0 C* i        line_coords->start_point[2] = point_coords[0][2];
  X, L/ [& o" ]" k  a: V        line_coords->end_point[0] = point_coords[1][0];
" L* `+ _" ]' R        line_coords->end_point[1] = point_coords[1][1];1 `& a5 R# @0 ~2 c, P- L
        line_coords->end_point[2] = point_coords[1][2];& p* v8 o7 L# o( Y& K. j1 ~$ E

$ X+ x# w7 k& i4 q$ J- _) |        tag_t lineTag = NULL_TAG;: N$ j+ m: e% g- ?7 q
       
* T/ \  d! I# B5 y, @+ t        //创建直线
6 a/ e( S  C3 f* k2 u! o# \        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
! t" C4 K5 l/ r
1 S4 _6 A4 X1 J7 F        //打印直线的端点
  ?5 u- R6 O$ M( u, [        char msg[256];8 i: x9 A" J- R! L" T
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
2 L$ n4 S$ h/ b" \                        line_coords->start_point[0],6 h4 l. q5 {2 l2 X
                        line_coords->start_point[1],
+ w% G( _- r6 l# o                        line_coords->start_point[2],( t* J+ P) k( I+ r: V3 D' U9 I
                        line_coords->end_point[0],! u; ~# h( h* N) I) @5 J
                        line_coords->end_point[1],- J7 |+ Y8 _; k3 @5 I
                        line_coords->end_point[2]);( k& A5 B6 C& m, u
        UF_CALL(UF_UI_open_listing_window());
/ i& b# @" b6 c6 L3 X        UF_CALL(UF_UI_write_listing_window(msg));
7 U3 l$ k) h+ y  c        //UF_CALL(UF_UI_close_listing_window());
% X4 V2 s2 [2 g" _; P5 w  J$ j( {2 N0 [- _
        //释放动态内存
% j+ h7 S" l" B        UF_MODL_delete_list(&edge_list);/ ^7 i* Z/ }" j3 @/ H
        UF_free(point_coords);, Q3 L- A" l& i0 p1 L* {( J4 j4 R& P- o
        UF_free(line_coords);7 ~: M6 ]: Q! W1 _5 [

* R; e& V* i( Y7 X$ V1 o3 f        UF_PART_save();
# y1 [8 G5 I  Y, F% y! G        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二次开发专题模块培训报名开始啦

    我知道了