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 3359 1

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能* P$ Z8 \, L! k1 N& H) a

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
7 l* D2 |5 @, M* d; J, ?5 h* l5 o
! _( r7 Y3 W, n; X7 W
1.新建一个部件文件,比如:c:\plmhome.prt
/ s0 ~" C/ c$ w( i3 ]5 A2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线" w1 _7 i1 A) k* }: U3 s
3.询中心线的起点和终点,并输出到信息窗口/ Z" L% w' v( p1 F$ z
4.存部件3 s9 G, s/ v& S8 l
5.关闭部件& v& w, p- j0 B" L

; K7 ]" [4 ~) K  |. r* [) _8 z提示:使用到的函数: # f8 [3 c* L  @; b2 l; {2 l4 C
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
- x( H& k6 o4 W/ `1 ^
/ L: U. B! F) v' w* K! I% t- w

$ ]4 I. p  H" Y: }5 ?
" M5 F# `' m4 H, V# G6 }  H
上海点团信息科技有限公司,承接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;1 Z7 }3 F1 d, W8 t5 M4 X8 ]
        tag_t cylTag = NULL_TAG;
; [( t; K+ M: W3 |$ ?        tag_t bodyTag = NULL_TAG;! y7 L- s" Z7 O8 Y, y& U2 J
        double cylOrigin[3] = {20, 30, 40};
/ q% Z( _, F; K( {        char cylDiam[256] = "50";
, x* \/ R8 p' h& G1 l$ A        double cylDirection[3] = {0, 0 ,1};, {  g' v4 b6 u% z, e% B1 W
        double height = 60;
& e8 O2 ^$ G3 @* o1 U% t/ C       
) x" s8 f& o0 ~( M' Q2 W1 |+ w  K/ N; q$ U" }
        char cylHeight[256];/ ^8 i9 L( V; C+ L
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
: d3 `" E+ v* O# v5 ^. \        //创建part
& `8 ~: P, V7 `' m# }3 S+ c        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));5 Y, E3 w: ]5 N+ A
        //创建圆柱* E, j* |: b( v1 q, D& u' ?
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));4 }7 [& }! c# n3 J% W8 ~# p
        //获取圆柱特征所在的体
$ {* E. z( a, M3 _, j        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
2 p: j$ E" L% y3 j. l        //获取体上的边
$ Q8 k. J; g& C8 f9 S0 D4 j" f        uf_list_p_t edge_list ;
* c" ]$ P/ O  E" A4 \2 q. H" k, e7 G        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));7 b* W6 J% F4 E
        //得到边的数量
( J6 Q" b: c. h5 Y        int edgeCount = 0;0 k4 s6 ^* h, e$ m3 q, f
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));( w+ @: l9 u( i$ n
        //打印边的数量
: _$ w/ H0 R  C9 H2 u        char cCount[256];
8 L3 A* B  u+ v( q: o+ k        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
$ C( P  e3 |1 ~5 w1 v9 g4 c" t6 y1 T# Q        uc1601(cCount, 1);/ W# n1 a8 L, d, L* [; V
        $ o7 I3 B: R" d, d; `0 e3 W( a
        int error;: ]* x5 V" [" n8 v
        double (*point_coords)[3];
& a' F; r/ g6 Z1 [# {4 }& O! Z        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
' Q  j& V' L. z; z: M" f        //获取圆柱的上两条边的圆心
& P% H7 s6 l2 z' z  t& J! p        int i = 0;
1 b9 T% `1 L3 }* {0 F0 g        tag_t curveOriginTag = NULL_TAG;/ ]0 r2 I! w9 Z- S( w0 _6 d' d, I
        for (i; i < edgeCount; i++)& s) q3 E- R4 b9 S$ R
        {
5 V. k& e& }# L3 e7 o                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
6 U0 P7 T& ]( P) \+ A9 F4 Y                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
, i! {. X' S: k; i, [/ t0 N' N* [        }
1 {+ S+ l- t# ]! v8 v        //将圆心存放到直线起始点的链表中
9 p6 k* Z# s8 \        UF_CURVE_line_p_t line_coords;
) R! L# t$ N9 D2 J( y9 ]: q        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
. A3 k+ N0 Q7 J        line_coords->start_point[0] = point_coords[0][0];  a: v6 X/ D" P7 [  @, d" D
        line_coords->start_point[1] = point_coords[0][1];0 T* a9 K9 {# t+ S
        line_coords->start_point[2] = point_coords[0][2];
" W% J1 \5 H4 t, s        line_coords->end_point[0] = point_coords[1][0];1 k9 ^! F4 }2 J( q) U) R
        line_coords->end_point[1] = point_coords[1][1];% F" G% n6 t9 I* A4 a% B# B# r
        line_coords->end_point[2] = point_coords[1][2];
$ E+ @' k7 |/ K
2 }/ N* t( t/ L        tag_t lineTag = NULL_TAG;+ R( c6 U% v) F) n( _2 g
        9 @4 w/ i3 I3 @# _* D6 A- E% i, i* B
        //创建直线: t' E( d# K" `
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));; g( q9 \6 M2 Q# x7 H) ?

8 }  L- X5 R2 b' \! |2 t" ?        //打印直线的端点
- c( [, C& r0 Q" h3 F        char msg[256];+ z6 L" ?7 q+ b: v  K9 f1 ~# `
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",1 O! F) E: i% T
                        line_coords->start_point[0],
# Z7 B4 }8 X' `0 [                        line_coords->start_point[1],
+ S; k! l" G" f( A- C( N# i                        line_coords->start_point[2],
9 r/ j6 o  G0 |( s( k                        line_coords->end_point[0],
( ~' |- r) b2 i                        line_coords->end_point[1],
& v, \7 \1 u! E( c% [/ @                        line_coords->end_point[2]);$ N, @: H3 y9 A0 |1 B% D
        UF_CALL(UF_UI_open_listing_window());. u& H( ?0 j5 U+ S8 ^1 M& L$ g
        UF_CALL(UF_UI_write_listing_window(msg));
0 C5 q6 a/ W  M) [  R        //UF_CALL(UF_UI_close_listing_window());
. j: R2 o( m: l( p- W
$ F0 {. a  r* g& c: w- h( _* M        //释放动态内存
% [6 N: q& _0 S3 X* I0 H        UF_MODL_delete_list(&edge_list);2 a2 f$ `9 [. Z
        UF_free(point_coords);
9 I# e3 o2 _+ @7 n+ ~/ B        UF_free(line_coords);' q* U4 v/ ]% @! _' D' F

- y  I+ n' N3 R        UF_PART_save();( `' s- l  F1 ]8 L4 C
        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二次开发专题模块培训报名开始啦

    我知道了