PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
9 K. ]! t* b' Y

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
8 |; H  m" Z" ^# d! E( S

& |/ A3 g& H! T3 Z* r7 j  I1.新建一个部件文件,比如:c:\plmhome.prt
5 G. C4 l( x2 u; q2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线* |6 Q" m. ~) T1 G& P
3.询中心线的起点和终点,并输出到信息窗口
0 n6 b0 E$ }( c3 f# p, w4.存部件
% W' Q3 X' Q; C* v0 i5.关闭部件
* e2 {' t: _0 z) O# G; V2 e0 T5 D3 Y$ F: b) r! ]( R- {' [
提示:使用到的函数: 3 m- h# ^$ v+ n3 }/ i) z
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

( w& G5 Y& Y& L$ [0 o3 c: V* s# ~( \" [2 V; m' ]* p, ~

1 Z. N9 M; D% w0 r: @* N; \- e
! W  |% m5 l$ R6 [
上海点团信息科技有限公司,承接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;. p) Y' T, d* `5 E- w" n
        tag_t cylTag = NULL_TAG;
. p8 D+ w- S: s% f8 Q) t& N% r9 O        tag_t bodyTag = NULL_TAG;
9 I4 ]$ y; a* W9 Y# `        double cylOrigin[3] = {20, 30, 40};( B/ b' P# g$ m: ?6 ]
        char cylDiam[256] = "50";8 A5 a+ L0 s  |0 h$ ^: K
        double cylDirection[3] = {0, 0 ,1};6 N* a. P1 ~$ {5 V
        double height = 60;7 `0 M0 e! a! T# z/ A& v) A
        8 V8 S% s' Z) o' `2 C6 y
3 E$ h% G/ S! K8 a) ?+ l, t3 ^
        char cylHeight[256];
- I0 {7 H, o9 s8 s$ x$ a3 q3 u        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);5 E1 N' h( m+ u+ u8 n/ j) Y
        //创建part5 i% x4 }2 @3 D  t9 j! k
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
1 b6 Y7 e: _# z6 j8 l1 x! `        //创建圆柱
. M9 J6 _) v. l  u6 ?4 h        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
2 f5 ~. Z# h! H& X        //获取圆柱特征所在的体6 k( }2 Q! f  u  s4 \$ E& F
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));1 [% |% d* L! V. ]6 p% \9 V
        //获取体上的边+ Z+ U( ]6 p9 Q& S, [
        uf_list_p_t edge_list ;: N- |) V% P" S* o
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
* h& X: F# Z/ ?' R& d) |        //得到边的数量
6 }3 J; u7 b, X! q, b( R4 w. p        int edgeCount = 0;' a+ h5 v7 N: H7 a8 p8 j. Z4 O
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
* m' Y) g% a+ K; i        //打印边的数量1 Y% A1 z0 A9 m( [/ d
        char cCount[256];" L4 i  O# s2 w: K2 c. e" m
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);( |! X& [# u5 m* _; Z5 b& M
        uc1601(cCount, 1);
! a  ~! M- J3 m3 |0 c! \% t       
1 e/ d( }  ~0 X' ]* |        int error;
/ j8 _1 @! U8 P7 J        double (*point_coords)[3];
  p- l  W  V- X8 N4 M9 p        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
, k" f+ p0 @& V  _5 E( A        //获取圆柱的上两条边的圆心
( L* T( \; J2 u        int i = 0;5 `6 f: w: |& C
        tag_t curveOriginTag = NULL_TAG;: E; ~0 {% L1 L, d' O$ C4 n: F4 `
        for (i; i < edgeCount; i++)% {* w4 n! j; B* N7 Y
        {
9 P7 s( [* e5 s) v- o  T                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));" j. a6 A+ ?" E8 u7 d# O! V0 K$ j
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
7 U+ q) C2 b6 g6 D/ t        }
$ q  C& I# B7 Q( I/ w        //将圆心存放到直线起始点的链表中$ r7 O' ?; g& T, I" C
        UF_CURVE_line_p_t line_coords;
; B( t  B4 w3 a8 [# R- H$ [% k$ ^6 D        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
+ n- e6 _9 P( F: V+ s        line_coords->start_point[0] = point_coords[0][0];
: M& u( `6 T1 O# Q        line_coords->start_point[1] = point_coords[0][1];
# _5 G8 {8 |( Z% x        line_coords->start_point[2] = point_coords[0][2];
9 \! K% q, n6 l& z5 |& K, x        line_coords->end_point[0] = point_coords[1][0];
1 U4 R3 g8 l( h5 A2 ~        line_coords->end_point[1] = point_coords[1][1];8 W# a! i. p" X; a" k
        line_coords->end_point[2] = point_coords[1][2];, E. p, w) |3 _/ W) U3 E5 k! u, z8 H

& X" z  k3 B/ v% W( T" u3 S        tag_t lineTag = NULL_TAG;: v8 S' ]/ J* Z" x0 o
       
/ X% f1 v- I9 \3 D, ?* m        //创建直线8 [, T9 z' R2 ^" R8 X7 O4 v
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));4 E! {) ~# T: c8 R" W# g

, |, v5 Y/ M. k. l0 W        //打印直线的端点
' h5 C  W4 s- _- n6 _( o        char msg[256];$ F/ O2 _: h* D4 Y4 O
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",  z6 x% m7 ~* Z) z1 a+ S2 n
                        line_coords->start_point[0],
6 h' V. R/ {- V. k' h                        line_coords->start_point[1],( G# |/ t( \9 q  C0 G) S) q
                        line_coords->start_point[2],
9 q3 t0 y4 O' k0 _0 E: u                        line_coords->end_point[0],
& [/ Q: `5 q& Z4 y1 _3 W                        line_coords->end_point[1],
, E! g4 ?; F! L) m! l/ I                        line_coords->end_point[2]);
( O4 X! Y& C4 }# {8 y% r9 C        UF_CALL(UF_UI_open_listing_window());
' h' n- G9 @. \1 n: E  P7 p' e3 U        UF_CALL(UF_UI_write_listing_window(msg));
3 n+ c+ v! n8 j        //UF_CALL(UF_UI_close_listing_window());$ e1 W6 i: g2 E# v! a
8 A4 G7 b, n$ d7 Y; j1 h
        //释放动态内存$ H7 B( H9 F+ d( R. J4 p: D
        UF_MODL_delete_list(&edge_list);% |- l5 _0 G5 y; ^
        UF_free(point_coords);( Z- L0 M& @8 u; E4 N
        UF_free(line_coords);# q1 c1 C0 J. S7 ^: D' n) G

: H2 Y+ O# q/ O2 b$ u3 G) v        UF_PART_save();: Y- D/ I1 O& 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二次开发专题模块培训报名开始啦

    我知道了