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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能& t: B/ H/ ?, }" f

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
$ v7 C/ }7 Y- F- R/ V

2 O7 H1 C9 G9 ]" |9 f1.新建一个部件文件,比如:c:\plmhome.prt
) r: E. p6 D. u5 P# N2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线3 g$ v$ ~! N" n; Y% X3 c  I
3.询中心线的起点和终点,并输出到信息窗口% ]; y+ T* ~/ G# j7 J+ v9 f4 O5 j
4.存部件; m# }# K% Z5 g. [
5.关闭部件
9 [) j5 t! ?5 Y% F* P5 v' ?  H
. w7 o' |) ^) {# ]" B3 O: W提示:使用到的函数:
9 d6 ]! E  d( [4 i& v
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
: R- A7 q  e. S9 i, ?' `/ }  I

8 G) |& n4 \$ n$ Z- r1 E6 k; e; p- R6 q$ q5 J: F

; {& i3 F- G) n$ @: W* @% E5 L
上海点团信息科技有限公司,承接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;! P( G2 i6 M/ \, t; T) i! N. W) t
        tag_t cylTag = NULL_TAG;, J" C* P* Z! w2 Q; s' ~6 O  d
        tag_t bodyTag = NULL_TAG;, H+ d* I, j& P
        double cylOrigin[3] = {20, 30, 40};" c, R6 P7 U6 q! M3 Y" j
        char cylDiam[256] = "50";
2 R( A9 y  r- C( K! q        double cylDirection[3] = {0, 0 ,1};
4 ?7 Y$ }8 M. m. ?        double height = 60;
1 |, [$ W* }, D  _+ y4 I8 B       
0 ]0 I* }+ l0 P- L" v
) y, D& n  J& ?; h- g, ]- Y  Q  e        char cylHeight[256];& q- S* x( e3 }0 n1 x
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
7 Y% D  A6 j' z        //创建part
# a1 x' ]  P+ Z, c3 B! C        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
" N7 m# c( C  B4 h4 m, W        //创建圆柱
9 E2 f0 D& w. w% y        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
1 A& D* _' L) r        //获取圆柱特征所在的体
3 i- c" G2 \5 M$ X        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
! r, `& h0 o+ z' B7 h. A        //获取体上的边
& k5 f& n8 p7 e* l        uf_list_p_t edge_list ;2 Y& h0 \& {2 ]& }" D( ~( Q4 z3 f
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));9 ^' X8 h) c5 c( ]1 R$ ]
        //得到边的数量
, l% O" l( u7 r3 p  c6 U8 Z- ?  \! u        int edgeCount = 0;
% ?" X- j; ~. ^3 G/ r" G" i        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));# ^8 F# n! K* g: P  T' Y' _
        //打印边的数量" ?  ?% P/ @6 w* m, M* L& V
        char cCount[256];, J; p. p) L: V4 g6 B" A& q, F
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
& v# |  ^. c5 _$ _        uc1601(cCount, 1);
& \: L4 |) o, P3 a        ; f% A( m0 ?; ]4 V0 e+ n' ?
        int error;5 n- Z) n8 J0 H8 H2 j
        double (*point_coords)[3];
; ?% U: J8 `; ?% T$ E        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
' g7 y, a; r. a7 N" s- k" J        //获取圆柱的上两条边的圆心$ Q! S& T  A) \6 c
        int i = 0;) ?0 [" E2 r8 v7 E! w1 H& j
        tag_t curveOriginTag = NULL_TAG;; B3 v5 r( |" U3 d( B
        for (i; i < edgeCount; i++)' I, w% B/ N+ ^. E# k3 s  C
        {$ t8 ]0 S: _5 y4 D2 ]! ]
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));& g! O$ E1 g9 ^6 Y/ P% e, @) L+ c
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
- b) C+ j" C; n& y1 s        }+ J. S1 L7 E3 [+ \' y* s% H
        //将圆心存放到直线起始点的链表中: O+ F' ]1 H: D2 l- M" W
        UF_CURVE_line_p_t line_coords;
, J) U0 o2 c& t- `" k        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
0 m4 O' ~* ~% V- Q$ B4 M        line_coords->start_point[0] = point_coords[0][0];9 V4 _% N' e5 C# A( {
        line_coords->start_point[1] = point_coords[0][1];  F8 @0 |4 c( E3 i4 ^- f  {
        line_coords->start_point[2] = point_coords[0][2];* T# U5 T# G& U/ W9 f: i* u
        line_coords->end_point[0] = point_coords[1][0];  Q# b! ~. m2 J7 Y
        line_coords->end_point[1] = point_coords[1][1];
& r. j3 m5 m' t" r        line_coords->end_point[2] = point_coords[1][2];- W& ^) u6 e2 b- W! \5 Q

5 K4 t3 X0 V( J        tag_t lineTag = NULL_TAG;9 p+ c7 f5 p& q% T
        3 w2 h; E# h8 u
        //创建直线
) h/ j1 _9 s( [) [: o        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
( ~. F  q0 ?6 Y3 v
+ D. S7 n$ ^$ x8 t, q) E        //打印直线的端点+ U' }, X) A7 p& H, m: [) j
        char msg[256];
- R; n) Y1 M+ |4 f  H5 U6 r) z1 c" p        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
* x+ X: w; c9 M" d- j) m8 s                        line_coords->start_point[0],
5 ^6 f9 q1 G( b# z  y' S' F                        line_coords->start_point[1],
4 ~' T$ R* ?$ j9 j                        line_coords->start_point[2],
7 S4 b0 S0 ^2 r% S, z& k                        line_coords->end_point[0],
5 {6 H( H' R: a2 Z                        line_coords->end_point[1],
- D. ~2 \3 ~9 F- ~4 ]  b! u                        line_coords->end_point[2]);2 ?, [% M; P* Q0 O
        UF_CALL(UF_UI_open_listing_window());
& A( }+ Q6 R; K: ?- ], `        UF_CALL(UF_UI_write_listing_window(msg));
' @( N1 V+ P1 h1 i        //UF_CALL(UF_UI_close_listing_window());6 E* j2 y4 E5 v. u9 C- Y

; V8 a8 B) G0 S8 @! ~7 X        //释放动态内存8 }9 o# u! d% O0 O4 U5 _% @) x
        UF_MODL_delete_list(&edge_list);
8 d, N5 F9 o$ z" u        UF_free(point_coords);
) n! ^$ g' ^7 t- a. f2 z' g        UF_free(line_coords);6 L: C) r1 j  l8 e
2 n2 }8 R* a( u1 n' S7 |
        UF_PART_save();
: q7 @* o, f, K$ }        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二次开发专题模块培训报名开始啦

    我知道了