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

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

  [复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
使ufun完成以下功能2 f/ U5 X! [5 Z6 U- s2 l; i

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

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

# W2 j3 G) ^5 v* r7 k' m, E4 h
$ Y- j8 m! s. l: b$ R# q' r& W: Z
1.新建一个部件文件,比如:c:\plmhome.prt) c; ]( E5 }: T2 t1 k- _3 G
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
$ a5 o- {: G  J' s  Q  m+ ]8 U/ b3.询中心线的起点和终点,并输出到信息窗口
' ~: l8 I- F4 C4 o( s- N4.存部件7 b$ r: z5 d& ]" V
5.关闭部件
$ [+ n0 j  ]( |/ u
& O, u, E7 Z$ b& l2 b6 N( f/ c提示:使用到的函数: . Y0 [; j* ?$ [3 |
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
  u- @: r3 m" a- q
( @9 }) W2 l) u! a# Y+ L6 Y
. m# e  Q# _2 W. a1 @
& s7 U6 D6 N: t4 A" ]9 f+ ]5 E
上海点团信息科技有限公司,承接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;* |+ p' V5 @  T( i9 `7 w$ t* W
        tag_t cylTag = NULL_TAG;
7 P6 k$ f) O3 f! T1 e        tag_t bodyTag = NULL_TAG;
' {. C# k% x5 M* N; V        double cylOrigin[3] = {20, 30, 40};+ I7 w; X5 O! x
        char cylDiam[256] = "50";
  a2 K, ]- G1 j; a: @! E        double cylDirection[3] = {0, 0 ,1};2 i( }4 Z8 ]  _% p  s% C+ b: n
        double height = 60;
  J. B( ]% H% B# I. t; _        6 i4 h* Z2 D; A+ Y8 o

- q' X$ u: N$ Z6 r( C3 s% I3 J        char cylHeight[256];
( m4 k1 d, O% F8 |' O        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);  N1 ?& u( Y/ U' a
        //创建part
9 q& E7 r* o7 m/ t- ~        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
, V7 N& q& }% H        //创建圆柱9 R  f1 s9 x' G1 k
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
& ~) N3 W6 \  ?/ I9 x# R" \& `        //获取圆柱特征所在的体: p" Q; _- s* N3 ~6 E( f
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));0 s% e. Q3 e2 t4 H* c
        //获取体上的边/ q5 p  d' f& |$ O% v1 o9 i
        uf_list_p_t edge_list ;
0 z3 ~1 [5 F6 E# R9 d# N2 |        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));' z7 S5 N+ N+ r* W& ~: Y3 J7 r
        //得到边的数量% y4 D1 i! W; N
        int edgeCount = 0;
8 Q) b2 M/ X6 f  f        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
  I* F3 r$ c0 V        //打印边的数量
( d$ x! v) d, S2 ?4 M0 U- H        char cCount[256];
- u$ b# _+ I2 h$ u, u) u3 n        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
$ a, n/ a: L5 O  s* e8 V" u* `, P        uc1601(cCount, 1);
7 E$ _3 f* @! E/ T! O5 g, R       
. F6 \  d8 Q( D  ]        int error;" v4 J5 `6 ]. s6 f3 B
        double (*point_coords)[3];* p- i# w! Q' [; c! U( A
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );: ]& i# V/ m  J+ N' ^
        //获取圆柱的上两条边的圆心
5 a" i9 A4 P# F% p        int i = 0;- y$ M" _5 V# P; {; Z
        tag_t curveOriginTag = NULL_TAG;
! ?3 s# m8 g  K        for (i; i < edgeCount; i++)! N( y- j+ Z3 `* Y2 h% O
        {
( ~( [4 [8 E& A% v$ w                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));6 z/ N# t1 q/ w" ?
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
! E; s8 B& I+ ^2 A) N4 U, g        }0 v/ j+ _( Z8 s4 h! f! P7 t% _
        //将圆心存放到直线起始点的链表中
8 L( A, g& g( {  V( ]        UF_CURVE_line_p_t line_coords;3 @) i& @1 H- B  s# a5 S3 Y
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );# [$ q: F# Y) L5 e% W1 g( t# E. x
        line_coords->start_point[0] = point_coords[0][0];
3 W& T) E5 c$ ?" K; ^        line_coords->start_point[1] = point_coords[0][1];
) r1 U  v7 K/ A        line_coords->start_point[2] = point_coords[0][2];* J. M# _  B7 N8 \% H
        line_coords->end_point[0] = point_coords[1][0];
! W/ i1 G$ F- D& q3 A4 `) G        line_coords->end_point[1] = point_coords[1][1];3 a: A  x8 ~5 G* X  v
        line_coords->end_point[2] = point_coords[1][2];3 Q6 r4 H3 J9 l+ M3 T
2 ~. U5 `  |- N+ g
        tag_t lineTag = NULL_TAG;
. V* [! g' N$ [6 ^0 b( [9 U$ k6 ^        % ^; ^) q9 x& @; F" b
        //创建直线5 `& H* r. w( |9 W9 c* G
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
- @2 n) {+ y2 [8 k! j2 F' p- P( A5 l
        //打印直线的端点
, f  ~' S2 u. w% ^6 o* \        char msg[256];
. @4 K* r# I# s7 y/ L. @        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",& Y% |9 a1 n' F" |
                        line_coords->start_point[0],% L0 j( u. f$ v, F1 `( {
                        line_coords->start_point[1],
, t( i* y, d) Y% o2 L5 N2 d" F# X                        line_coords->start_point[2],6 x. q: j6 X5 r4 c) d! \
                        line_coords->end_point[0],
3 M" U( O' _3 i* l' D6 M                        line_coords->end_point[1],+ H2 M2 ~" Q  o# u: V$ n  j/ O
                        line_coords->end_point[2]);0 A2 B. F  v* ?+ e; ^- d: W# G
        UF_CALL(UF_UI_open_listing_window());
7 \! _' M2 N# h  w        UF_CALL(UF_UI_write_listing_window(msg));
' y: o0 y: |8 ^& n        //UF_CALL(UF_UI_close_listing_window());
) f, J9 D* ]1 H$ n6 l" D: g  ]$ r
- G5 h0 B3 U; ~* E2 v, W% m+ |        //释放动态内存
8 n' z! Q* \: ~+ \+ Z        UF_MODL_delete_list(&edge_list);
, m4 O0 S% p) S3 C/ k        UF_free(point_coords);; S# T! k5 \5 g
        UF_free(line_coords);
: y' I! J$ z* H& I$ H
3 S3 U6 k+ l) [        UF_PART_save();
0 g% {) |3 \0 p4 \. W8 I        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二次开发专题模块培训报名开始啦

    我知道了