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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能+ S& I, V- ?5 l1 c& m! ^8 M

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

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

+ `6 N* X$ |. d; C+ c

0 f) }, r1 x4 I' P" B2 C6 }1.新建一个部件文件,比如:c:\plmhome.prt- ?2 m' l6 g8 X2 E1 Q+ w! ]
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线7 t9 n& ?3 o1 m& p! k
3.询中心线的起点和终点,并输出到信息窗口
2 m4 ]# J" Q5 t4.存部件
8 ]4 R5 W* |6 w: Y5.关闭部件
# S$ f" N1 i/ @6 s$ q5 o  m& ?- u1 K, O7 C  b( ~/ A1 p
提示:使用到的函数: : s# m  `3 G* y
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 q* s6 j- O) ^$ ^& Q

* m9 g" B0 [7 S8 {" v  y' M
# M6 ~5 o' i" l1 g- F* k" j- d3 f8 I% ^  U
上海点团信息科技有限公司,承接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;
" z8 ]& z# y1 b4 n/ ]# i        tag_t cylTag = NULL_TAG;2 i! {8 h& J. q, [' h
        tag_t bodyTag = NULL_TAG;5 M2 |. k5 z7 Y0 j2 r
        double cylOrigin[3] = {20, 30, 40};
% T8 Y+ c! o& [- L) t  `/ P% H9 j        char cylDiam[256] = "50";9 U1 V3 r2 {: E6 v% g& S2 l6 C- W! |
        double cylDirection[3] = {0, 0 ,1};
$ S& I/ L, ?6 ]1 \5 L        double height = 60;
# W3 h* {# n. l' _        / \8 l/ ?' R9 O' `2 e

7 J* r& G' Q% E5 v5 ]' d/ \% B5 V        char cylHeight[256];
7 V0 w5 M( u6 h6 g' X1 \# H3 Y+ Y        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);- M; N, C7 e- i" G
        //创建part6 W: G1 M$ V& D
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
# f+ t- p( @8 \& [0 L        //创建圆柱1 F+ d' t; b( `/ W- _. y
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
/ x% u* h3 Z& y7 i; h* o        //获取圆柱特征所在的体
9 ^+ F* k# o& P3 X3 O( j        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
: F9 X5 f5 @7 Z! Z        //获取体上的边4 m0 h8 y: d# a
        uf_list_p_t edge_list ;" g& K1 h, y% q8 T
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));% g* Q+ t  v% f6 ^, r) B, h
        //得到边的数量
' l& H' @4 G: R' @, `; z/ }( q        int edgeCount = 0;9 D: D% {6 D$ H0 s) q3 E* `
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
4 _/ O, y3 t8 x& W5 B# ^        //打印边的数量  ?# g$ z9 I% Q+ k! U8 A' Y
        char cCount[256];& x9 |7 P+ _5 B8 p
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
: p3 V/ L$ p( V. B6 B) r+ V        uc1601(cCount, 1);$ a4 I! y3 k9 @- C* I
        ; h4 J% A" B7 s' t! a3 `
        int error;
6 }4 i' x0 l8 E* A: E7 ^        double (*point_coords)[3];, j% e; {7 S9 d' y7 e1 _0 m
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
8 |5 J9 A* ]7 ]) r) S7 V5 Q4 V        //获取圆柱的上两条边的圆心
! Q: g6 L' O8 h& F        int i = 0;
$ S6 C1 i( H" u# C        tag_t curveOriginTag = NULL_TAG;+ E  n( r/ b* u7 E; H
        for (i; i < edgeCount; i++)
' y) x' n4 g$ K* A* K! A        {/ T' \$ W5 H* h) ?6 K
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
% r  _1 S! O  E+ x6 r! a                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
/ j# [$ {& t" H        }' h& k1 V9 @* G. M% L
        //将圆心存放到直线起始点的链表中2 l+ Y. m7 E! a3 S8 g3 m5 n
        UF_CURVE_line_p_t line_coords;
  q; ^0 b! |2 P0 ~! J        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
& ^) S  X5 `, M% `8 T- ]        line_coords->start_point[0] = point_coords[0][0];
0 F( f3 [0 w- n& f        line_coords->start_point[1] = point_coords[0][1];$ M6 d2 u2 N/ O  Q/ C' j1 E2 j  ]  h9 H
        line_coords->start_point[2] = point_coords[0][2];  V0 E& h% W% P& H
        line_coords->end_point[0] = point_coords[1][0];
6 ~2 d: P+ h5 u1 Y: Y/ z, [        line_coords->end_point[1] = point_coords[1][1];
1 f# p; S! `9 H& ?5 Y& v5 Q        line_coords->end_point[2] = point_coords[1][2];
5 w9 k# x" }* N" f) V) G" C5 I4 T' w4 v7 h. V) [9 N
        tag_t lineTag = NULL_TAG;" G" \/ d6 j# H6 B+ k
        6 k5 a. p& u1 M# P' y" Q" p0 P5 \
        //创建直线4 y3 v! j! Y4 R. X7 S' E/ Y" U' A3 ~
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));# N# b4 Z1 z3 h2 t
. B. v1 g' V. P3 U6 l( X$ U
        //打印直线的端点
2 u) {8 b4 A5 b# Z        char msg[256];% i2 F( `- a! t5 c* o0 U
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",7 z+ q7 K1 G, ?, A
                        line_coords->start_point[0],
% @$ D. C! H4 w# x0 |                        line_coords->start_point[1],
  X" {: _: D6 a5 B                        line_coords->start_point[2],
8 J1 V) B) p* ?1 E1 u3 d9 o                        line_coords->end_point[0],
% g# l5 z4 X- v% D                        line_coords->end_point[1],$ F+ t4 C* V8 e; w  W9 n: ~
                        line_coords->end_point[2]);
; i+ @( G; B  z! a$ E2 R+ P6 l7 U        UF_CALL(UF_UI_open_listing_window());
/ u, R8 z, o; u! {% C' M        UF_CALL(UF_UI_write_listing_window(msg));" o6 r" H- S; T- D( f
        //UF_CALL(UF_UI_close_listing_window());
6 y( q# j( n' R4 v
4 r  V4 R5 w) J        //释放动态内存  w& f$ w0 G" ?! O
        UF_MODL_delete_list(&edge_list);6 ^. [' Y3 Y) H) m' U0 I
        UF_free(point_coords);
9 a. m5 q) F) j+ R        UF_free(line_coords);) q2 ~. u; j0 t' f

- r5 N  y1 o$ b* z  |6 y        UF_PART_save();
) H7 |: e3 T* r3 y+ 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二次开发专题模块培训报名开始啦

    我知道了