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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
  a6 Q1 y  D6 Q

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
7 @! Y! @* T0 Z) e. G

, F  x: |. r2 J2 V1 G% N3 F7 Z1.新建一个部件文件,比如:c:\plmhome.prt
: F4 q2 [9 r: H% _) }: @+ R2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线
9 h! |+ h$ u# c" t! n( t3.询中心线的起点和终点,并输出到信息窗口
+ U6 }9 x( ~% b% [% L( j* q* k" A) h1 H4.存部件/ Q  [# p% c% u  s8 [8 r+ A& a
5.关闭部件4 T3 I5 C  h! {. L
+ k/ N, p/ g( Y, j: f" ]
提示:使用到的函数:
* b5 B5 b/ X' F7 u8 |
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
! C% p7 g' T5 l1 p

- T0 X8 w7 r/ d+ _& I
: k/ k, Y) o, |6 ?: Z
- ^- i9 S. Q8 ?" w) a8 Y5 T
上海点团信息科技有限公司,承接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;
: G( j) C* w4 a; Q$ ]4 d        tag_t cylTag = NULL_TAG;
% m! Q# U9 ~4 d2 i: P  t        tag_t bodyTag = NULL_TAG;, ~) p# ~( @$ ~' t7 j( Q$ u
        double cylOrigin[3] = {20, 30, 40};& V" ]+ J& G' F$ _0 A
        char cylDiam[256] = "50";
* ~, s, N# h. l/ |$ W* F2 x! _        double cylDirection[3] = {0, 0 ,1};& s$ p6 I3 k, m* Z9 J* f/ \4 n, o6 M
        double height = 60;
0 j# @5 x+ Y7 @/ r* H: o+ [# q        / k0 }9 {5 @" p- D+ }8 U  k

% I$ O4 F  a/ Q3 M! a        char cylHeight[256];% ], P* o) k$ Y
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
7 R: e; G0 k3 Z* A' d        //创建part
7 h% b; _% }9 \! t( r6 F        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
/ L) Z0 J. }8 F1 Y        //创建圆柱$ @# z6 b* [# s& H5 Q+ G2 q
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));, W0 B+ w0 u# O% k$ v3 n
        //获取圆柱特征所在的体1 @7 z% ?" C  q% V# {
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
/ V7 s2 Y6 @3 k3 l+ Q0 Q% a        //获取体上的边9 L: E" B- U* E" U/ {4 l
        uf_list_p_t edge_list ;
+ D! W7 Y. Y+ q        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
3 @6 e9 g+ e4 Z! s/ H* }  X) {5 z        //得到边的数量3 H" _- `$ @; c0 N3 W) I
        int edgeCount = 0;
& W7 D  H1 l  l+ D+ D( V* c9 T        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
6 d3 D4 v5 q1 Y' [* B' F        //打印边的数量
+ j1 V7 `" m; R1 S+ q        char cCount[256];0 I. |* P8 Q( t5 [4 [# c6 ?0 `! d4 e
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);7 N0 X: M# p& l% B. o
        uc1601(cCount, 1);" V- ~$ e: l" _. J' f
        + W7 m2 G! k- l( J
        int error;5 k4 u+ U% G  _: s& ?
        double (*point_coords)[3];
0 c0 [7 Z, j- |6 l' U) V        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );- w7 P  L% |9 b, S
        //获取圆柱的上两条边的圆心8 Q' H( B  e+ ]+ H- J, f
        int i = 0;
, ?/ p8 `' x( b4 g" o- l/ n        tag_t curveOriginTag = NULL_TAG;
$ M# r4 T) M* i9 v+ S* s        for (i; i < edgeCount; i++)0 s) A' p2 _. ]& s+ s" T& P
        {
0 f) y% _8 j1 W                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));6 T, L0 ^5 F0 r/ N% d# a
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
. q2 Q: h- M2 z0 y' n        }* d3 z+ I3 Q3 j) [. D
        //将圆心存放到直线起始点的链表中# H2 f4 y6 ?4 ^: y
        UF_CURVE_line_p_t line_coords;1 u! K" S1 C1 G
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
. p2 [5 y* e+ }) \5 Z        line_coords->start_point[0] = point_coords[0][0];
2 W2 e. G5 u, Q" j" m        line_coords->start_point[1] = point_coords[0][1];; V/ y, ^7 t* Y1 S2 Y1 n+ g
        line_coords->start_point[2] = point_coords[0][2];
( r4 a9 K* p* l. h4 u        line_coords->end_point[0] = point_coords[1][0];9 \! L" {' T& }' E3 D
        line_coords->end_point[1] = point_coords[1][1];3 ]" b1 |! l. X* C, E+ R$ u4 x& }* m
        line_coords->end_point[2] = point_coords[1][2];
- |- d9 [1 z) J3 K! ]+ F  x1 @" |, n5 @
        tag_t lineTag = NULL_TAG;
3 F1 Q& q; A* J8 f& q       
& ^& u. s8 l* j        //创建直线
5 z$ a, A* K, @9 D        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
# t0 Y* p) T5 ?: V- @* Z4 G& j& _7 A6 r+ q" N
        //打印直线的端点# i% w8 z0 b3 {; r
        char msg[256];
5 }* t  x4 x; ?4 E7 K        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
3 ]) c- p. Z& v; \7 s                        line_coords->start_point[0],& y1 v2 w4 J4 V' `( h6 B5 ?
                        line_coords->start_point[1],
8 l7 ?4 p1 p' r9 ^                        line_coords->start_point[2],
. H% Y6 l+ V! t- |" Y# S                        line_coords->end_point[0],
! a" s6 S' W. j" V9 W4 Y3 H, F                        line_coords->end_point[1],
2 ]3 U( i: }) l: \                        line_coords->end_point[2]);
% F8 f+ W; U% l+ a) ?5 U  L4 c5 r        UF_CALL(UF_UI_open_listing_window());' y$ o5 o- i' |& `( Q# W. Y! F. ]
        UF_CALL(UF_UI_write_listing_window(msg));! U! G0 l4 i* q; z, D. G" y7 I
        //UF_CALL(UF_UI_close_listing_window());
5 z# x: `" Y0 E1 X9 F
- d3 @  J/ i1 b6 m/ K8 s; g" e: y        //释放动态内存
! `+ I9 O; B- c5 E3 y( l1 {4 f        UF_MODL_delete_list(&edge_list);
% J2 h# Z# l1 S/ m; ]        UF_free(point_coords);, O% y$ \: j/ d6 p/ u
        UF_free(line_coords);
1 X, g9 \: O0 s( }5 J) m) _- a0 n2 h5 E& T! n2 L4 K
        UF_PART_save();3 D/ }0 i- T0 l6 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.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了