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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能# D' h0 G2 o9 t6 Z1 k, g, n

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
0 m! ?) v. Q9 ~, R
2 v# A$ D  }5 X# M+ ]- [
1.新建一个部件文件,比如:c:\plmhome.prt
+ W8 c: }, Y5 s! r2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线8 n% ]) Q. ?( e/ n$ _) a
3.询中心线的起点和终点,并输出到信息窗口
1 I- ~1 w$ }$ ?) }$ q7 }' [4.存部件+ {( l" J' H# C4 P& e) q3 {5 e
5.关闭部件" `/ ^" z0 t9 j' F* v
7 v5 J, D' j* Z
提示:使用到的函数: . A( o8 g3 ]7 w/ h" f- C" X/ m
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
. b5 L: _0 @. _: H

; B: [1 C% @$ E, t
! G) ^1 ?- e# G1 O6 r2 S
: L% h, f8 ]$ k( Y* R. |# j! Y9 F
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

leaf 发表于 2014-11-26 07:50:53

leaf 沙发

2014-11-26 07:50:53

tag_t newPartTag = NULL_TAG;, Q  J3 }' m' i; k0 T0 ~& K$ Z
        tag_t cylTag = NULL_TAG;
) x0 W" n# H6 g+ I8 y3 p; y7 b        tag_t bodyTag = NULL_TAG;
; [: Q; X4 o  f7 `$ h  y: h0 }        double cylOrigin[3] = {20, 30, 40};
+ q/ B  k, H; b8 `        char cylDiam[256] = "50";
; W) l3 @. f4 R/ {        double cylDirection[3] = {0, 0 ,1};
+ |: l" Q9 b7 S7 X& l4 N        double height = 60;; x: d. G. U0 `! c  F
       
  Z* H+ Z" W( C9 {  {+ ~  j$ V
$ s8 F2 w# [9 a  k0 c        char cylHeight[256];
3 V4 _% g3 J0 }% ^  Z" E, n' V        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
( d; w- a' W) @3 Q5 H        //创建part6 ~, k. u& _- D" _+ H
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
9 \2 d$ h2 D" U9 C9 l7 }4 W+ N/ B        //创建圆柱
& h( J3 v6 B3 E; Z- R% A        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
) Z; v6 K+ k: T. [7 Q5 a: B        //获取圆柱特征所在的体' J/ y: o" S5 X
        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
2 }2 H4 [$ c4 l        //获取体上的边: U6 f0 |) d5 B5 j. ]9 J3 u
        uf_list_p_t edge_list ;! [9 s2 R( y' F" t* A1 ~4 }) Y
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
" a( K* M4 H7 J  V" V$ h        //得到边的数量$ T9 q0 ?0 Z2 u2 ~
        int edgeCount = 0;
$ R0 ~8 D5 l( |        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
; y$ J: J7 Z* [9 U. P        //打印边的数量
) M4 `0 c  D8 x% i        char cCount[256];9 s3 w0 {* Y! {5 X% ~# \2 z$ w
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);& A- W% U- l0 T) X2 }- S9 I1 p3 s
        uc1601(cCount, 1);) W% b- y: T% v2 Z' C. d: ?) x* k3 o$ |
       
8 c; a* h8 e0 g( i7 A        int error;, ^$ E7 G  x, v5 S
        double (*point_coords)[3];
: r* E: |  l! W+ p8 z' ?# X        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );/ F) d2 \1 F7 ^' h
        //获取圆柱的上两条边的圆心
! h* k& d. _. |! F2 v        int i = 0;- ?; h1 Q9 p: `: i: h, g
        tag_t curveOriginTag = NULL_TAG;
2 Z  v) b- e4 Y3 v! `( Z; E- Q: J! ^        for (i; i < edgeCount; i++)' ^0 Y% r7 @! O8 n& {5 Y9 \$ B
        {* c8 {, A" s+ V. V: s1 U
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));% p) X  G9 E0 A: {6 N9 p) H
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));1 m! u/ x7 {" ^# \
        }5 X  S/ H2 Q4 b4 E
        //将圆心存放到直线起始点的链表中; ]$ r; B* T+ p! [0 l" S7 @* W2 ]1 a
        UF_CURVE_line_p_t line_coords;
, I8 l4 n; g1 i/ b& `. {        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
$ f& }2 Z1 w! ^" T+ d        line_coords->start_point[0] = point_coords[0][0];9 m$ `3 a9 _- }' C& D" T
        line_coords->start_point[1] = point_coords[0][1];1 w; s/ Z. T3 z$ V- c* v% v) @
        line_coords->start_point[2] = point_coords[0][2];
9 B8 [: C0 G5 D  E- L        line_coords->end_point[0] = point_coords[1][0];0 [" }6 g, m: t1 o5 T
        line_coords->end_point[1] = point_coords[1][1];
, _6 [1 d. q% e( R; f6 d        line_coords->end_point[2] = point_coords[1][2];4 J, J+ D' Y6 Y7 T, j

+ s" n$ L, n. R# O. P+ `5 n9 |        tag_t lineTag = NULL_TAG;0 y4 [3 H) D) I2 T" p2 l& R& x
        2 L  O8 N  _5 _- s5 E1 t6 z
        //创建直线
9 ], V9 a- Q5 i& P        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
! m5 G6 `3 R7 a: ]7 d9 Y
- u+ L, S- L$ p3 n& Q1 S6 p        //打印直线的端点
) c" |5 o' R6 Z3 y& N0 o8 V0 K& h        char msg[256];
! @, z% b, |* ^  T6 y/ J, S& V& t/ l        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
! H! ?; A/ ]  L- W( B                        line_coords->start_point[0],
( g4 f  L8 R. j$ o  h* I                        line_coords->start_point[1],+ Z5 R/ ]( ~; l6 C$ B( s) V
                        line_coords->start_point[2],+ J5 Q; Y, \6 Q5 m* `) _5 P
                        line_coords->end_point[0],% L! g. H; l  W: `' D. M* Z, V
                        line_coords->end_point[1],- ^& k8 d$ m; @
                        line_coords->end_point[2]);- I' ^& c3 j. Z. v6 _1 [. y9 ~) P
        UF_CALL(UF_UI_open_listing_window());! h6 J% l0 r" k8 t  W4 S
        UF_CALL(UF_UI_write_listing_window(msg));2 H' W! t- _/ O# g1 D: s
        //UF_CALL(UF_UI_close_listing_window());
/ X  u8 O; p# T" W& g2 d
+ B0 U/ Y4 Y8 m. @        //释放动态内存$ a  X+ O8 N0 y9 P! ]2 c
        UF_MODL_delete_list(&edge_list);
. k) L+ Z# e  L0 p' L        UF_free(point_coords);  d' Y1 }! _) Z7 }2 P
        UF_free(line_coords);! {7 H7 `6 C, ?) I7 S. f9 B: q3 l5 a9 Z

0 Y; e9 M: Q* x4 Z        UF_PART_save();
8 J7 t1 s! ~# E  _: @        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二次开发专题模块培训报名开始啦

    我知道了