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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
2 \1 }% `/ B- u0 U

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
0 N8 z2 I( \/ ]% h' w4 ?
0 j' Q# T5 V3 A! p% A$ d- z
1.新建一个部件文件,比如:c:\plmhome.prt
$ l2 G" T# H* w4 V4 i- t! [0 n2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
* h! [7 F4 e  \6 A% Y7 u. h5 H4 D/ S3.询中心线的起点和终点,并输出到信息窗口: \" |/ D, G1 O' ?) _
4.存部件3 q  _9 a0 T$ ?
5.关闭部件* U7 p7 R. o; ^! J! ]8 ~

6 T( K$ u' l9 ]4 {# V; @5 i提示:使用到的函数: $ Q, V7 }. [% L" I
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
. G9 u- ?' D+ K% L3 V* q" I8 v2 d3 F
  ]8 |. m  O' X% @
9 C/ \( d- `  _5 |5 m% ]
, _2 k& ]  a  }6 w9 F/ |8 d
上海点团信息科技有限公司,承接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;
' K7 s4 ?# w( G8 s, q8 ^        tag_t cylTag = NULL_TAG;# k/ Q9 {& y8 [3 |, B5 g
        tag_t bodyTag = NULL_TAG;
; L5 }! v3 i& a. y5 M        double cylOrigin[3] = {20, 30, 40};
" X5 t0 x  T# |0 c        char cylDiam[256] = "50";
: L! h+ L  e$ [' a9 N        double cylDirection[3] = {0, 0 ,1};  A3 M8 h0 \: ?, g2 n! n
        double height = 60;4 h1 f+ f9 h' S; G3 s
        # C- h! T* n9 {7 R& z" x: g

# j5 K# f  D+ X7 I0 _- x+ C        char cylHeight[256];) F$ L7 p; f! k% Y* T
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
5 w& b; p7 V7 Z# \8 |        //创建part7 A4 G4 F/ o6 j5 H$ E/ f8 L$ ^) E
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));  f6 g3 F; ]/ _
        //创建圆柱0 `0 n9 D0 B0 \' M! h2 S1 H( ]
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));, Y; r2 s: y/ r( x0 s) Y, ]  i
        //获取圆柱特征所在的体
% W7 f" |+ q# X/ B+ _        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
3 y; `6 ]1 Z% o# \& F% ^3 X  t        //获取体上的边4 b7 M! u- L9 V: ~4 W
        uf_list_p_t edge_list ;# ?7 R5 @- m4 T/ `8 k( f% V  `9 M
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));: d  L6 `" T9 b  K9 d, g/ E+ |
        //得到边的数量
5 ]9 p" N  G3 e  p        int edgeCount = 0;+ s8 W: B, F* T
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
. P  Q" y% {; \        //打印边的数量
0 I2 _, f6 K9 k        char cCount[256];
! t' s' _8 j& x5 F2 r+ N1 Y        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);& G6 t1 ^8 B1 h* L( t! o" D7 R" P
        uc1601(cCount, 1);
" o, ]; L6 e% j. M# M2 o) y       
1 m: H+ y8 C$ W' N9 `  i        int error;
* d. F- S0 M: c  b6 N5 V9 M        double (*point_coords)[3];
# u5 _5 i9 X" L. k' b9 f: A        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
" ?  J4 q( K1 k+ F        //获取圆柱的上两条边的圆心
  W/ P8 u) e2 b+ O5 g3 u% b        int i = 0;
) w4 Q/ Z8 ]  t8 B        tag_t curveOriginTag = NULL_TAG;4 f1 Y1 p5 ^% Y7 g
        for (i; i < edgeCount; i++)
1 O" F5 v6 z9 B# N' o) X/ U' @- B        {% a" i) ^1 G8 s; q% C' Z# e4 i
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));7 t2 ]( J* @: C
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));& F5 A0 ^3 e: d7 g" R5 Z" Y3 I
        }* ]9 T* z8 ^5 U/ v2 d) d
        //将圆心存放到直线起始点的链表中* d* S$ V- i* q0 R- N
        UF_CURVE_line_p_t line_coords;! [9 J: U5 R8 x: X9 k9 S
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );' M" X. u/ b; o# _6 z  u
        line_coords->start_point[0] = point_coords[0][0];4 f' }7 N9 o( x3 N
        line_coords->start_point[1] = point_coords[0][1];
" \( \1 e( F) c1 V3 S$ f( ?        line_coords->start_point[2] = point_coords[0][2];
2 K" T( O9 b! H" j  R) @0 L        line_coords->end_point[0] = point_coords[1][0];
6 x. Z1 \- x& I( f        line_coords->end_point[1] = point_coords[1][1];
5 u, L0 _( _8 i4 @/ a0 K' Q5 \6 T        line_coords->end_point[2] = point_coords[1][2];% k4 o( k1 ~' b; R. h
1 i8 V) Q7 J6 g/ m1 t2 R0 m
        tag_t lineTag = NULL_TAG;
& A3 }$ i' J, b2 H+ k        $ s' i+ r! B  |" r: n
        //创建直线& S* x4 J& H! g
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));3 V1 e8 B* k4 f- o1 j" n7 }
  X) o5 {: x/ i8 W  I8 W
        //打印直线的端点5 ^- N* d  \4 \, y
        char msg[256];
2 R7 M5 w7 ~/ V5 U        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",, _6 j! j# M+ E: c& {6 f8 i! O
                        line_coords->start_point[0],# u1 I6 \9 p1 Y+ y" e3 E
                        line_coords->start_point[1],5 G+ G4 s2 J' S- z0 Y' S
                        line_coords->start_point[2],  j0 i+ [3 f+ @, D/ L& K: J
                        line_coords->end_point[0],
( }6 X" B2 a. ?+ C' L9 Y" g                        line_coords->end_point[1],
- c+ j9 m7 d9 {+ K/ B- l                        line_coords->end_point[2]);
2 _* {/ ~! B, R7 k        UF_CALL(UF_UI_open_listing_window());
9 [& ~, c* M- ]+ |        UF_CALL(UF_UI_write_listing_window(msg));
% V+ ^( d5 f! \' _0 V0 v6 _& H        //UF_CALL(UF_UI_close_listing_window());
% I& L0 r) J# s+ X) f  ~8 P3 S$ k& g
        //释放动态内存
5 q0 s0 |4 x1 [) c  H        UF_MODL_delete_list(&edge_list);; v+ o  Z' ]: C& L
        UF_free(point_coords);
% k- s  @8 a3 d# h% T  f9 g2 |        UF_free(line_coords);* C; t( {+ l0 F! x' v

4 W9 }- i; u: l7 [. v        UF_PART_save();
$ `2 N: `& z5 g1 ]( F        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二次开发专题模块培训报名开始啦

    我知道了