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

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

  [复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2014-11-24 07:57:59 | 显示全部楼层 |阅读模式

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

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

x
使ufun完成以下功能  Q7 o8 F% g* Y

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

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

: s/ r9 s. H4 z
* r7 S% O  {  X4 \+ d
1.新建一个部件文件,比如:c:\plmhome.prt+ e; A7 R% e4 F' U5 A1 p1 g
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线9 X1 r: r+ t+ l% c1 \+ L$ q" W
3.询中心线的起点和终点,并输出到信息窗口9 Q% }& _, }8 C1 S& ~# U
4.存部件
: E* E1 H$ U0 v# E4 Y" i5.关闭部件
. D; T+ K4 u, r7 j  i$ n! b; [( B2 P8 k( N+ N4 `- Z
提示:使用到的函数: 9 w3 s: L) o  O; e0 |& h2 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
6 F2 @9 m6 U1 M4 i0 }. Z$ F

+ d& q3 i) T/ M" n2 r( X! ?3 _  m" @0 G6 ^5 @

: t. q8 Q. A# N* x: y" i3 O
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

0

主题

39

回帖

331

积分

培训VIP会员

积分
331
发表于 2014-11-26 07:50:53 | 显示全部楼层
tag_t newPartTag = NULL_TAG;  n% V- ^8 t; j
        tag_t cylTag = NULL_TAG;
# e+ r8 E& p& c7 z- y. _        tag_t bodyTag = NULL_TAG;2 L! f3 M  H) d: R
        double cylOrigin[3] = {20, 30, 40};
+ F! u5 C1 v# \( `6 A5 Z        char cylDiam[256] = "50";  Y! l1 i4 G  P4 |* P
        double cylDirection[3] = {0, 0 ,1};
2 h" v: o. {7 L9 O3 N, i8 B        double height = 60;
; ?: O" k3 I6 w- q        * E4 t: Z4 z: V6 Y

7 @" s9 ?+ w. _7 x3 H/ b        char cylHeight[256];
. t2 e  \: R' G% e        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
/ G9 H+ |1 ?/ A1 ~8 [4 v& g' U  b        //创建part+ }* L. k2 d, b, }2 E
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
3 B- ~) T" O, c: }; U* Y* |, r2 w        //创建圆柱6 l1 a, H; o% n
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));2 H2 t7 L3 C1 i) ?$ v- A! J
        //获取圆柱特征所在的体
8 Q7 d1 \* W! s0 P1 F9 J        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));8 ?! f0 O7 g' e: X1 v
        //获取体上的边
6 r1 [' w) J, B; }2 U# m        uf_list_p_t edge_list ;
% U: d* a: X4 j, Q* h; f        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
( Y" M, c4 V4 r, z5 q$ e: B        //得到边的数量
. o; Z9 c% s4 R& b6 X+ n; t$ G        int edgeCount = 0;
0 g: G: K! p- T- j/ c% T        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
- L, J, {; E5 E( Z# }) V        //打印边的数量, K4 l: v8 {- _+ E
        char cCount[256];/ Z  H* t1 e! t* z3 k* X/ h
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);& P  i" L. z6 \0 |! j
        uc1601(cCount, 1);7 o: v# K- u4 p1 j; ~" \+ H+ M
        ( m! ]% Y$ d% i8 a# S8 e. f
        int error;
7 h, I; _# Y: u, V" }        double (*point_coords)[3];+ l% H; o' `8 e( a. e
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );# ^; U, C) y/ a$ I4 x0 b
        //获取圆柱的上两条边的圆心; n8 \" V/ k+ U" @& v
        int i = 0;
$ r; T6 W7 O: M% @        tag_t curveOriginTag = NULL_TAG;
* p  R' {% a3 z3 o! H# {/ k8 k        for (i; i < edgeCount; i++)
# W3 j0 N' W0 p. R, u' S# V        {7 B+ m+ w2 N3 B1 e; k! m
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));1 x9 w" A# G# D2 T& ?. [+ [3 l0 ~
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));6 \  n6 D( M4 S/ c0 J: E, J( w6 t( P
        }
) u& y0 C; u+ B7 s4 i        //将圆心存放到直线起始点的链表中; O) e" A" b% X) C
        UF_CURVE_line_p_t line_coords;
* j6 p5 ?  U" M/ A        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );. q9 h9 G3 j7 P) e; i7 G$ [3 Y  |) @
        line_coords->start_point[0] = point_coords[0][0];+ Z* C* d1 H1 @& L
        line_coords->start_point[1] = point_coords[0][1];
$ R+ J3 s$ ~- E. |# L4 L# z8 B1 p        line_coords->start_point[2] = point_coords[0][2];
" c% D* x1 ^" A( @: V        line_coords->end_point[0] = point_coords[1][0];
& f4 d* c* N$ f- E+ w/ x        line_coords->end_point[1] = point_coords[1][1];; J4 A! g+ a- X) s5 b3 o1 a
        line_coords->end_point[2] = point_coords[1][2];5 k$ a: s9 j. P6 A& t
: t- L# v2 x- n, g( j
        tag_t lineTag = NULL_TAG;
. l' m& ?, [( o4 b* J       
7 _8 L% _) z! v+ L- r: L* M        //创建直线
1 z3 M7 C2 p9 M, o2 a* G8 H        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));, v: W- U8 C* m8 C0 V

# Y; B, E' C3 X0 ^$ H        //打印直线的端点0 Z% E: L$ T9 j2 H0 c
        char msg[256];
, \3 U- _9 V: l! z( J+ m        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
/ @5 E1 x; z8 T; v                        line_coords->start_point[0],+ n  c% ~4 S: s: i# _* [( j: S0 ?
                        line_coords->start_point[1],) j: n; K- z+ r6 k
                        line_coords->start_point[2],+ `* Q7 ~# e: p( e' I% X3 ~* x$ V) Z, j
                        line_coords->end_point[0],
' J  ^. k  w0 v                        line_coords->end_point[1],
/ n) F- E6 }- H8 k( p/ R  s& R                        line_coords->end_point[2]);4 r& l9 o' e+ K) I$ F" N
        UF_CALL(UF_UI_open_listing_window());
: G& I% N8 J  f/ V4 n        UF_CALL(UF_UI_write_listing_window(msg));% O; e7 @5 @; g4 k. s# Q
        //UF_CALL(UF_UI_close_listing_window());/ y: \) \! X- z/ T' i
' H( ~% l6 c$ t: y" J
        //释放动态内存
: m" z4 o' t4 |' U: d3 S        UF_MODL_delete_list(&edge_list);
4 v" f+ }3 {2 u* M1 F        UF_free(point_coords);
/ B& x% a0 x+ B        UF_free(line_coords);
; ~5 o0 f3 K, ]$ t4 Y
# e9 Y3 I/ H0 V8 B        UF_PART_save();
  x( r* T: Q+ 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.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了