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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
' X- t; w  d  v6 l6 ~8 i

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
* R: T2 s# |) _" g% F

$ P2 x& e, ?. @/ |+ W7 R1.新建一个部件文件,比如:c:\plmhome.prt" v4 `) b$ [. R, B
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
- W- U& M( R7 L9 C7 z6 K3.询中心线的起点和终点,并输出到信息窗口# M/ ]. b1 |/ I
4.存部件$ n9 F, j- j6 _  y
5.关闭部件5 n7 V9 e$ C8 Z  w

2 H2 p& g+ C$ F% J% i提示:使用到的函数:
" M4 S6 m) _" Z, t; ~) Q. K6 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
0 X. N) V2 B# @' o; s# r2 _; E9 o

  Z; o; j+ L1 I8 E* v' w. h& u0 Z8 r) D5 h9 c/ ]& x9 y) q
: P4 V9 O; e* V$ V
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

leaf 发表于 2014-11-26 07:50:53

leaf 沙发

2014-11-26 07:50:53

tag_t newPartTag = NULL_TAG;
  h% H' t! w  o4 J        tag_t cylTag = NULL_TAG;
8 L2 E/ h6 g0 ~( d        tag_t bodyTag = NULL_TAG;
& Q! b6 @6 f. V        double cylOrigin[3] = {20, 30, 40};
, N  j* X( T& w, s7 ]9 ?. v        char cylDiam[256] = "50";" H: \8 a1 Z" [6 b5 e
        double cylDirection[3] = {0, 0 ,1};
0 j+ ^0 A! u" s) O" b        double height = 60;6 q' H% ?% L. X4 R4 Y; f; j; |
       
/ f8 O4 d1 t! c( q# i" c: o9 L4 \( \
' M6 f, U1 m) a8 }: k5 [" q        char cylHeight[256];; f) ^& P0 H5 l& z/ ]/ c$ A# o, H
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
+ {5 x7 `4 D0 S5 F8 w, N+ C& w! V! e        //创建part
3 h5 L) D! N. D; i( P        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
% a; G" @8 Q4 @+ D& s* s. y' h        //创建圆柱( Y/ q  ?1 }- r: S4 M
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));2 E1 z5 R% g2 H4 ^. Y: V" t
        //获取圆柱特征所在的体. M- C, @4 G7 @  `6 y5 h' K
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));) D' s7 H2 H2 Y, w3 d
        //获取体上的边
4 h3 ^. b1 |+ D; ]1 a        uf_list_p_t edge_list ;
& e2 l9 s% h, {  g1 i        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
: t, q) v+ ?4 m2 t        //得到边的数量
& B4 {. c% h( Y        int edgeCount = 0;3 x4 _- Z0 `: O- B4 @
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));/ J4 n4 ~1 H  @$ o' O0 p! b
        //打印边的数量
' h. e" S0 V# l9 m. @8 T% \7 c: S        char cCount[256];1 o* S# W' j# x# X6 g
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
$ K+ _7 `8 i: i        uc1601(cCount, 1);3 M- C, n& L7 K# `
       
- U. b/ b$ M, v' q! N( s        int error;/ {# C0 q% U+ b( ^
        double (*point_coords)[3];
( v7 K+ x& p0 q. g0 H/ s. M        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
7 A" f) U1 r2 o% f        //获取圆柱的上两条边的圆心
/ f5 y& i2 u6 w0 k) f  F; o( n4 K        int i = 0;+ i7 t# z( J: ~
        tag_t curveOriginTag = NULL_TAG;
* z  T, y" y5 y# y5 G5 W/ [& m" w        for (i; i < edgeCount; i++)& n; |" j8 s& e$ ~& i' U/ E
        {1 f' q' M6 Z! |3 B* r. b
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
$ H$ n; }; c; G- g6 q7 P5 A! [3 L                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));  f& J" @' [; Y1 w% P! h2 M
        }9 p$ A' T, \- q& C. N
        //将圆心存放到直线起始点的链表中
% H5 W0 l) `/ W) z        UF_CURVE_line_p_t line_coords;5 J( @* ?+ N& r3 `$ M- u
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );: [, |1 s: T$ D& u% t
        line_coords->start_point[0] = point_coords[0][0];) m8 H0 M8 N7 g6 k. L- z& V# m
        line_coords->start_point[1] = point_coords[0][1];% D: A& j$ @. x/ y
        line_coords->start_point[2] = point_coords[0][2];
! [; P% ~2 ^% B7 K( {, a0 D8 T        line_coords->end_point[0] = point_coords[1][0];
. M& Y2 c- d: {: g# d: J        line_coords->end_point[1] = point_coords[1][1];3 K0 ~5 V4 u- X5 p2 f
        line_coords->end_point[2] = point_coords[1][2];
/ h8 O" y# K* Z" u" w; Y. J$ `: _2 @; N4 b# Q( ]
        tag_t lineTag = NULL_TAG;
5 {1 L9 l2 I( q4 A       
( I8 O6 s6 J  L- e4 }3 k        //创建直线
" C- k8 w/ U) _! P( W        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));& v; d2 T6 W1 F0 i, M' T4 `; h0 d

& o3 L0 r3 _/ A# Z& S6 j        //打印直线的端点
, Z) g/ }& n2 v        char msg[256];
# _4 s3 g$ u& I0 Y& P/ X! [        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",8 s, K. r2 D9 n7 T$ m: ~! r9 n
                        line_coords->start_point[0],, i. R! u' V1 Y8 G+ Q' `! L1 R
                        line_coords->start_point[1],4 N! I9 j! A8 F' C. `" M' h, o
                        line_coords->start_point[2],  e. u2 O& s9 ]5 O
                        line_coords->end_point[0],
6 l! w" M' `) c                        line_coords->end_point[1],
& ?- y6 R" i' ]& ~( Y- k* N                        line_coords->end_point[2]);
1 B$ ~( V+ e! _9 ~! i# f, }% u7 O# Q- t        UF_CALL(UF_UI_open_listing_window());- P) R9 L9 B3 f. {/ H9 ]+ o0 z
        UF_CALL(UF_UI_write_listing_window(msg));
" ~& n, [: B( j8 z4 C3 [6 Q        //UF_CALL(UF_UI_close_listing_window());
3 i( @4 U, |, H' |" E1 t6 ]7 T
5 J. i8 N  @3 K$ x        //释放动态内存
; q7 L; t% M, @; T        UF_MODL_delete_list(&edge_list);- }4 k: ]8 u9 x6 c
        UF_free(point_coords);
* f! B5 E( }* ^9 _        UF_free(line_coords);" ~5 Q; t2 T* v+ a9 l, A

) D" X" i: Y( \# V2 T2 i        UF_PART_save();
2 v7 F+ s8 O/ \3 R0 w        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二次开发专题模块培训报名开始啦

    我知道了