PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
0 |( b" ]. K$ J( U9 ^

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
7 k5 e# d$ G1 Z5 v7 z0 V

5 ]' b5 m0 R) l! i7 C4 R, I8 ~1.新建一个部件文件,比如:c:\plmhome.prt( v6 X  v6 {, A8 l3 w
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线" u) \8 [- x$ h( G7 I
3.询中心线的起点和终点,并输出到信息窗口0 R  m" g( R1 q! N3 u7 ~5 \. a
4.存部件
# Z0 L* {+ x0 F/ @" _0 M5.关闭部件* F! ?% v4 R( I1 H" O% [6 Z' F
5 d0 P. o$ _1 T: A! ~5 O, |- h
提示:使用到的函数:
! d6 p* J+ ?; p& d# P
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

/ T* ^( U4 C. B3 d1 r
6 a: C( M+ o- f1 @2 Q; }
% g) i1 u, K  Q5 Y# t! [/ Z% k6 V; w/ |, \8 Q; b
上海点团信息科技有限公司,承接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;
2 I$ b: I2 U1 j- z0 S        tag_t cylTag = NULL_TAG;
4 M! {) e  t# U7 ~: S        tag_t bodyTag = NULL_TAG;* s) R1 j7 v, p( Q2 B. F! U
        double cylOrigin[3] = {20, 30, 40};/ r' o9 \) x- K# W9 u
        char cylDiam[256] = "50";( S7 S0 _- J; a' e
        double cylDirection[3] = {0, 0 ,1};; X4 E" x" k/ F1 h0 S
        double height = 60;7 ~; \* q8 Y# S9 E3 Z( A
       
0 Q" H% b; G& A; X  e2 @) Y) k- i& @
( K, B0 D7 U& G; T' i8 j        char cylHeight[256];
& W% b2 m0 X) }0 n1 ]        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);1 k& R  ^$ f5 k
        //创建part
: e! m; J4 G' |# j6 ]        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
" c3 D/ s2 W$ K        //创建圆柱
$ e: P7 n: t# f* M: E        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));) e  g3 W. [* x0 n  _! x% l
        //获取圆柱特征所在的体
; D) n; U! A6 L7 |* R1 K        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
8 V8 Y4 t+ i6 `+ e! @& x/ q6 \        //获取体上的边
1 ^9 g" c' k6 h/ P7 D' Q+ J" ?- o5 n        uf_list_p_t edge_list ;! H- I4 |; Q, y; `% n7 U- U* y' d
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));6 K- {2 C" {  F, X: I
        //得到边的数量
$ |  `2 e1 m' r1 d( b        int edgeCount = 0;, i5 K$ L+ J% n7 e
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));: g5 j6 y8 w1 E' O2 Y5 j
        //打印边的数量% s' o! ^5 J; n2 m5 y
        char cCount[256];
6 t' C* K+ m0 |6 _1 A        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);! g8 \* }4 x6 [# t$ {" W: r; n
        uc1601(cCount, 1);
2 s3 A% ?* h8 V- m) k; [: `3 Q# \- o+ {: w       
2 D. Z# z$ w# [6 c9 |+ G. D1 n        int error;
+ m& N- E& T& ?8 ], p: D( }        double (*point_coords)[3];: c/ L& S5 O  d2 h8 c7 u+ M* a/ _/ m
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
9 S- ?( K4 O/ Q        //获取圆柱的上两条边的圆心3 a) [' f! V$ R/ `# L* D
        int i = 0;8 n/ _1 I0 S' Z
        tag_t curveOriginTag = NULL_TAG;; ?' `3 K3 g% x. M. P
        for (i; i < edgeCount; i++)
: V( M: t$ |, Q4 _7 Q  }; i8 A1 n        {1 }$ k3 Q3 m8 C
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
2 }7 s+ R3 P4 @' Y4 k                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));3 i3 y1 I& ?! [2 v% L* U+ l6 e9 N9 I, p
        }% W7 F/ b0 z: X* ]' i
        //将圆心存放到直线起始点的链表中
0 C1 z4 h5 b+ }8 ?" f        UF_CURVE_line_p_t line_coords;7 ~# o1 g5 H4 J1 _  A- _- w% F
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );. v* E6 x: B3 x% G- h
        line_coords->start_point[0] = point_coords[0][0];$ B# g) a5 q. N" a1 f+ ^3 j/ O
        line_coords->start_point[1] = point_coords[0][1];
% d! t4 b3 X$ o' H& H3 o        line_coords->start_point[2] = point_coords[0][2];
' O) L% h# d/ q) n2 {6 N+ \        line_coords->end_point[0] = point_coords[1][0];
3 t$ b' Y- F' L6 w, O        line_coords->end_point[1] = point_coords[1][1];
% m) b. v8 Q- N8 ]1 s. z        line_coords->end_point[2] = point_coords[1][2];
1 U8 [0 F2 J. j, t' ^, e; y
: m* x: z& b1 s2 S- f        tag_t lineTag = NULL_TAG;6 |9 I2 U7 {- q& n& d! ^+ ?
        + r6 m6 T# j  p6 u8 |" d* b7 k' r
        //创建直线
/ q$ v- \+ i6 \& P$ M        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
2 }0 b5 y' b. F+ K% Q- X, `3 B$ w5 f7 ~, z0 d* l
        //打印直线的端点. d0 H% K% {& V' @* ?( u
        char msg[256];
- u& [4 C" t6 I% [) k, h9 `        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",& D1 J0 w  {; U8 g
                        line_coords->start_point[0],
4 ^: N- J1 [* E% V' I1 a' {                        line_coords->start_point[1],, a: A6 I1 F) A- q( R9 a
                        line_coords->start_point[2],' o$ p: i0 D9 `0 G6 r
                        line_coords->end_point[0],0 a3 t# G: c7 q" C3 u( h# C5 @  @' J
                        line_coords->end_point[1],
6 c% Y5 R, f# @6 o                        line_coords->end_point[2]);
9 s! K+ A, V8 ^# N2 B        UF_CALL(UF_UI_open_listing_window());
; u/ V% i4 T4 a: s. ?( m        UF_CALL(UF_UI_write_listing_window(msg));: @7 r1 R+ l, M/ j2 C
        //UF_CALL(UF_UI_close_listing_window());/ c1 d7 S" i- s; U
/ J! I. R" q7 i( s, ?* M4 V$ H
        //释放动态内存4 _# m; X" j6 k7 s3 T6 A% W
        UF_MODL_delete_list(&edge_list);
) x8 c  o1 @! `+ q8 J        UF_free(point_coords);
: x8 ~0 W4 u2 R! u% h0 N5 j* `        UF_free(line_coords);
% H* [, Z) Y- J- i% P" y# N; _
/ N7 p, f! z. T+ o# a        UF_PART_save();
5 x3 F4 g+ B' h- S8 C* Z, M9 {. d, M        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二次开发专题模块培训报名开始啦

    我知道了