查看: 3677|回复: 1

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

  [复制链接]

4

主题

3

回帖

44

积分

管理员

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

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

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

×
使ufun完成以下功能
5 g. G- P6 w- b& D; c* m5 c- r3 h# a

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
9 U2 F! g) Z8 ^5 L$ w& T2 T, u

- b2 o0 _5 u/ E1 @. p1.新建一个部件文件,比如:c:\plmhome.prt# W! x' D7 t4 T9 P7 l" V
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线; Z! E# g1 a7 c7 x7 s3 {/ j
3.询中心线的起点和终点,并输出到信息窗口
9 C2 D" [! ~/ a' T1 i9 M1 a4.存部件
- Q( q# \4 E, v5.关闭部件, M/ \$ A! C" T/ O! u
+ n- I' O5 q3 P  X* ]
提示:使用到的函数: 0 E+ w* g; ^! Q/ s
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 ^% b; Y( w6 Q) o& d
. y% ~, D6 ?! B7 ]+ _- h2 x* y
4 D2 q# [5 G) p8 X1 U% K; n
$ m* N! c" F% q( f6 k
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

0

主题

39

回帖

331

积分

培训VIP会员

积分
331
发表于 2014-11-26 07:50:53 | 显示全部楼层
tag_t newPartTag = NULL_TAG;
* H3 ?' B( |" z/ R        tag_t cylTag = NULL_TAG;
- I7 f" L: t" p4 n. ]        tag_t bodyTag = NULL_TAG;
' \! ?  ~4 M; ]7 x: L: a        double cylOrigin[3] = {20, 30, 40};0 X, L7 C, ?3 I9 x( a
        char cylDiam[256] = "50";4 D5 \* y+ c$ N" W
        double cylDirection[3] = {0, 0 ,1};" o7 _6 h& i+ z% W6 y' n# h" f
        double height = 60;; O& g" ~! o5 _3 W1 ~& i
       
' E2 e' r8 u3 E8 U% L$ w$ O4 j1 a+ k- t
        char cylHeight[256];) b9 S) P! t9 E
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
( @4 o) u/ A* g  k9 y- \+ z        //创建part6 @! ]2 l9 P8 P) n  q
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));' D7 ]3 G' ?% c: Y4 r, d
        //创建圆柱
& l% D* w8 s& K        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));5 h) a7 R' E' N3 I$ b& b+ d
        //获取圆柱特征所在的体- g! r: V6 O1 C+ H0 p
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));. u4 d2 H* i6 X# ~7 d5 [5 T# {
        //获取体上的边( N" G  w% c" P6 r
        uf_list_p_t edge_list ;
6 |0 I: J) L# z6 G        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));9 G# L# Z5 q% A& n0 ]3 E& h. M
        //得到边的数量
% {5 R/ F; N: _" J" |; \# j6 h        int edgeCount = 0;
4 B* |9 n" O/ ?. B5 ]: W        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
! x+ @& H- J) p        //打印边的数量
8 Z& c" {- ~; V: K4 X) E. T. K        char cCount[256];1 v; B1 p3 l- p$ ?! Z8 C
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);% F& A( x9 D5 H" ?7 |
        uc1601(cCount, 1);
, z6 x6 G! M' v0 G, W5 {* D  n        / k$ E7 y6 E  ?6 @8 b
        int error;9 s/ u* B, y. ~/ _" z1 z1 G  [
        double (*point_coords)[3];  o/ N7 i8 B6 r9 Y2 ~
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
% c5 H. l3 e4 f" w% u, d, v        //获取圆柱的上两条边的圆心% X+ h, ?! k4 e# }
        int i = 0;- y( o1 C6 U9 z6 |% u/ a2 W4 I
        tag_t curveOriginTag = NULL_TAG;; V. D8 r+ u3 [$ ~
        for (i; i < edgeCount; i++)+ t% X7 m5 N7 E" \' y
        {0 j; R( U# f; i- u
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));7 K  C! i0 H/ C( [5 ]5 }) I5 V( i
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));" ?& F+ H3 T, P7 D+ f4 r7 Q
        }6 s4 Y: W* v# g8 ]  Z, m; t, A9 P+ x
        //将圆心存放到直线起始点的链表中* W: o; K8 `. x# Z4 c' v& B
        UF_CURVE_line_p_t line_coords;9 i2 g* D! S1 d7 R7 F) g) w+ e
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );0 L! j5 I1 j: ]" z& U
        line_coords->start_point[0] = point_coords[0][0];3 \3 q" c" S, e4 y; s9 D9 T! H2 p
        line_coords->start_point[1] = point_coords[0][1];# y& c6 q0 g" U0 N0 L
        line_coords->start_point[2] = point_coords[0][2];; z) u1 F, w' [2 \
        line_coords->end_point[0] = point_coords[1][0];2 G/ T2 `  C3 B* _
        line_coords->end_point[1] = point_coords[1][1];
' A0 `) I5 p' I; h2 _        line_coords->end_point[2] = point_coords[1][2];
, j1 h4 ?! f2 h1 v2 r4 @6 F7 ?4 c4 X! ^: Z
        tag_t lineTag = NULL_TAG;
, w3 L- {3 }5 v$ G( O       
& j; x) m5 c/ d0 ^5 m# [* y        //创建直线8 ]& z  O: W! o5 a, v3 l" o# c
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));5 I& E# ~% d8 O) A# H* |5 ^
# c. `# q: o, O
        //打印直线的端点
4 m  t0 Y( q. V/ O# z! H% W        char msg[256];5 q7 f1 l& r& [
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",' s1 ~( R  ^( d( N+ T: r
                        line_coords->start_point[0],
  s; U0 m6 D9 q9 ^0 v- r                        line_coords->start_point[1],
6 q6 T  n. f& U' X$ J: {% o                        line_coords->start_point[2],+ F% o$ i# ^2 X
                        line_coords->end_point[0],
/ _9 {; Z2 w4 y3 s3 s                        line_coords->end_point[1],& f3 B& h9 p: `2 J
                        line_coords->end_point[2]);
5 V8 X7 h! k/ j        UF_CALL(UF_UI_open_listing_window());
' |" g+ ~+ F( @! K        UF_CALL(UF_UI_write_listing_window(msg));
4 z4 e8 w9 M9 t& b3 u9 }$ |        //UF_CALL(UF_UI_close_listing_window());
# D0 ]  F  C+ P, m3 c9 R& C5 t' g* m% W6 S+ y
        //释放动态内存0 a' ~4 s: g- f: _5 u9 x
        UF_MODL_delete_list(&edge_list);7 D2 y6 W; ^* N
        UF_free(point_coords);
1 C# s+ x2 o' }% Z  G        UF_free(line_coords);9 |6 B3 E) D1 \: n$ [5 L
' {3 s; Q* p8 _$ q+ ?2 W! k
        UF_PART_save();
( [0 w* E% T, s7 B        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
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部