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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能3 Y6 ]' l& i+ t8 x9 n

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

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

! A. n6 y3 B7 V
3 @6 |( v9 Y) {& ~: g
1.新建一个部件文件,比如:c:\plmhome.prt7 [+ K7 v' n1 a
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线+ c, \6 A, U8 o( {5 {$ z  j
3.询中心线的起点和终点,并输出到信息窗口+ {5 e8 P- v5 K* g# D) U* G- g
4.存部件  g' A/ ^2 C3 s9 d8 b& J3 t
5.关闭部件/ r# t0 Y, E% f- @6 c0 X9 u# g- J
. H* }7 T5 L# e" K  ?
提示:使用到的函数: + g$ G! Y8 A) 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, b2 E4 z4 p+ ^- M
/ m5 s: s, D/ u# Z1 I& B; y
9 {6 F: v( Q0 }/ c

. B& p( t7 Q( q7 w
上海点团信息科技有限公司,承接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;
7 Z" u7 o5 w: j$ j* A        tag_t cylTag = NULL_TAG;- U) g) _0 Q$ ?. v& {% K7 r
        tag_t bodyTag = NULL_TAG;
8 S7 z3 @$ `- B8 P5 e6 d3 E0 [        double cylOrigin[3] = {20, 30, 40};0 d! [- C/ B& V& S  {% d5 p
        char cylDiam[256] = "50";
) G/ H9 L$ ~/ }3 f& j/ Y        double cylDirection[3] = {0, 0 ,1};) S- p5 E- c) y1 V. s; I" W4 p0 N- Z
        double height = 60;
6 j+ o9 P3 Y) f6 l       
: H! A9 h1 t2 K4 {" ^; w0 q# F. k
5 l' g7 T8 `2 k        char cylHeight[256];6 y1 p" v8 [$ K$ M* U/ g, H7 H
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
4 T& u2 F+ N3 v) s* _        //创建part
7 l& h  e. \: a, Z7 B! s0 A        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
; v# }+ Z9 O) a        //创建圆柱
4 s* R, z0 n! s        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));. n- w8 l1 d4 `- j5 x: z
        //获取圆柱特征所在的体
# F, G3 s1 K! a6 W7 y5 Y1 {        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));9 n) g5 Q/ T+ S
        //获取体上的边( ~9 c/ Z% X; F" E
        uf_list_p_t edge_list ;4 y7 [) F; q0 g/ t3 i
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));5 ]) }, t, |% \% p5 O* j: f& B
        //得到边的数量
' m' h* }" N4 k# x# |& J5 T        int edgeCount = 0;3 Q+ C  y2 t% g& z* i- H1 B
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
  \4 D3 Y  M  \9 b. Q3 k        //打印边的数量
& U. b  B9 W3 W% e        char cCount[256];
/ j+ C# z! F1 d. z! i3 r& F2 ^        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);8 b' K; l6 Y3 ~( R+ O) X
        uc1601(cCount, 1);
) T% E$ x& N) g/ A        , T( Z0 O2 F% `! }5 ~9 P
        int error;5 I1 y$ x' k! T7 t
        double (*point_coords)[3];3 C$ m. U0 O) T* R
        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
+ N& r( x$ ]* `% v        //获取圆柱的上两条边的圆心
) f( Z2 j* m2 _( j8 p        int i = 0;
# n- @! ?0 i5 W/ Y/ v        tag_t curveOriginTag = NULL_TAG;
( z$ v  H/ O$ f, c& S        for (i; i < edgeCount; i++)
& h8 O" x- W. H) q. W; f1 `        {
/ n8 Y' b9 M" N# W0 H. q, F0 P0 R                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));' H/ B7 F+ j9 i( \/ k0 t: Q
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));7 y  Z: W1 P1 w3 |7 t' z- e' F
        }
- e3 S! p" P4 V* o        //将圆心存放到直线起始点的链表中
+ C+ ~7 |% H: m        UF_CURVE_line_p_t line_coords;
' N0 _% [) `! A5 p        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );3 ]8 q+ e" ?9 {& G; `& W, U4 \$ `
        line_coords->start_point[0] = point_coords[0][0];
( i/ S, e. C( w' R  Q/ H        line_coords->start_point[1] = point_coords[0][1];
3 w8 c6 s& P- x5 ~$ s        line_coords->start_point[2] = point_coords[0][2];& m% Q9 n) d8 u; w: |7 q
        line_coords->end_point[0] = point_coords[1][0];5 M1 v. i5 m' p; \/ |. l3 s
        line_coords->end_point[1] = point_coords[1][1];
2 ^( w0 S4 F; m; e( v$ R        line_coords->end_point[2] = point_coords[1][2];) d; j. s/ y: ?/ T. X4 h" X
7 Y* h: X2 I8 H% V+ J, g1 p
        tag_t lineTag = NULL_TAG;4 x/ p  \  X; \% n7 _3 |9 V: j9 B5 ?
        / }  j6 {3 K1 v% M% b
        //创建直线
9 M& t8 I, e) E5 S( x& ]        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));4 m. Y7 X& m, n! d, z0 j
+ U# s! S8 A2 B2 R3 m8 A& Q! A( h
        //打印直线的端点
4 x6 d& L3 i' Y' D6 Q( e; h        char msg[256];" \, a- A  r+ [
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
" R9 p; z% Q2 h                        line_coords->start_point[0],
9 Y# ]; K8 p0 z2 C                        line_coords->start_point[1],1 x* G( H6 X( m+ b8 t- f
                        line_coords->start_point[2],
1 r7 ?8 |) x0 Z$ V. m1 Y) K                        line_coords->end_point[0],6 t. \# `3 G4 Y0 p- R5 z8 R6 o$ ~  T
                        line_coords->end_point[1],
% X6 ?. }7 h) k                        line_coords->end_point[2]);
" h: t9 _+ y8 B3 A        UF_CALL(UF_UI_open_listing_window());
3 w7 J* L3 |; u" s9 @3 j+ E: C        UF_CALL(UF_UI_write_listing_window(msg));
* |9 l/ L% s* x; G0 x: Q* W& w; Y        //UF_CALL(UF_UI_close_listing_window());' Q* }2 L( ?; s' w; e& l

! z4 x( s, h5 l7 q7 @0 V' |# z) e        //释放动态内存7 \" M0 O! C7 {) T4 o: ~8 w
        UF_MODL_delete_list(&edge_list);+ {" F( e; y, w. z( T2 a
        UF_free(point_coords);  n2 o9 q) F1 ]- }" k; F
        UF_free(line_coords);
- T1 U8 Z6 f% W- j; I) m  A* n& _: h- R2 e6 M. p
        UF_PART_save();' v6 y( X8 G+ X7 b
        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二次开发专题模块培训报名开始啦

    我知道了