PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能( W4 o, e) f  g; i) A* J

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
0 ?% v( \9 Y! X. n" i
' n6 M/ d* s3 v' f% H
1.新建一个部件文件,比如:c:\plmhome.prt
0 i$ _9 V4 k0 F! o2 r5 e* w% p2 M2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线: T8 ~  Z) m1 ?# ^0 n; I
3.询中心线的起点和终点,并输出到信息窗口8 L, g! P! \) `5 n; ?
4.存部件
9 I. L' p+ @; v5 s1 W* S6 X5.关闭部件
. M4 l( C5 y- l3 e8 @; K& |0 m% N0 o0 H& [* l4 O3 N, p
提示:使用到的函数:
" f% X3 F, o7 R3 i1 I7 T9 P
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
# [- P2 e$ }7 L# N% l6 r

" J* r6 e8 H" r$ h+ Y- d) o, O' f& [/ ^' ]
6 `  \7 |1 P( r% S6 |& a2 Y
上海点团信息科技有限公司,承接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;& W0 P7 ?! N: Y" ^% W8 P- T
        tag_t cylTag = NULL_TAG;" x. g2 r0 F2 E  ]0 u+ T
        tag_t bodyTag = NULL_TAG;
% c% G/ ^/ o8 I: ?- \8 u& @! D        double cylOrigin[3] = {20, 30, 40};
/ g# B7 L6 _* |3 @7 o6 y        char cylDiam[256] = "50";' f( n+ E% \) `* G( b4 K) m! ]
        double cylDirection[3] = {0, 0 ,1};
, \- Z- P3 u, I7 N0 q        double height = 60;
) ]5 k& Y2 ]$ b& c) F  ]        " X" ^& j- {; b/ q) o/ L
' p  L6 o5 H1 l5 t8 k5 h  K: ?
        char cylHeight[256];) c9 G' W- d4 F$ o! P/ M
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
" t, j  L1 _7 V! ?- B        //创建part
5 y( V+ R! l9 u8 M3 @2 p3 `        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
+ c; d9 d; k- G3 H  a8 Y0 }        //创建圆柱5 m! C8 j! x4 Q- Z' C( @& p% F6 o
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));6 h' p8 \! O6 X2 ?/ Q; [4 U+ a6 M& {
        //获取圆柱特征所在的体
4 x- S, h# [: w* A. @" ]6 m7 [+ d2 n        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));" v5 x9 g2 B' R* q
        //获取体上的边
, a2 h" F0 T+ b        uf_list_p_t edge_list ;
( u( I) b& l1 B; I' P1 T3 Q        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
6 N" Q0 a  j$ O' C- T7 b        //得到边的数量2 P" y2 i: h8 S+ p% q
        int edgeCount = 0;7 ~+ f7 p3 _9 z: x
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
1 G: {, b. h+ j. @        //打印边的数量
& B- v) T' C7 `7 c; R' z( h        char cCount[256];
: V4 C' M* f8 c: d- R        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
" w8 w! m5 r' t6 G' c6 }        uc1601(cCount, 1);: r6 W* q- p# M$ z2 I8 {
       
7 C1 U! o( J, r( `: I        int error;9 ^0 n. a: @  w. Y& o" t( _) B
        double (*point_coords)[3];
" }  |( m7 o, h  W/ m7 o, }        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );" m# L' h- h3 y( e' }9 T# M
        //获取圆柱的上两条边的圆心
$ P' q* A' s$ q1 t1 N* K* a8 z        int i = 0;- b  v( o6 [8 ]/ I* V) `
        tag_t curveOriginTag = NULL_TAG;
9 L7 I1 E% f6 H0 e3 I# {7 o' M: [        for (i; i < edgeCount; i++)
) v0 I7 |# o/ _) N- H        {
. U8 s) U3 r' P1 t  a' @! Q                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));, H7 t, W  _2 L1 J+ I4 B( M# {; }4 p
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
) r; b' N) _8 o% f0 n( `9 ~        }
' R7 r( c, e1 W+ d$ g1 \& F        //将圆心存放到直线起始点的链表中) |! X, x0 M5 k' u, r
        UF_CURVE_line_p_t line_coords;" Y! p" m' y7 i) \7 A% ]
        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );, M9 W, t  C( r0 n; P4 W# g
        line_coords->start_point[0] = point_coords[0][0];
. l& N8 R0 t& O+ d        line_coords->start_point[1] = point_coords[0][1];
- H" d, Q/ \9 L" q$ H; g, v        line_coords->start_point[2] = point_coords[0][2];$ a( n) ]# p. E% S$ t' e
        line_coords->end_point[0] = point_coords[1][0];
: F, D8 [* a' G; K        line_coords->end_point[1] = point_coords[1][1];
3 y! O; R: u7 m1 b; W! n        line_coords->end_point[2] = point_coords[1][2];
% K: u/ o8 r7 [) F) U$ t* A* v- V! A5 Z' j# S# E* A
        tag_t lineTag = NULL_TAG;8 @% n6 w3 Y" m6 a; J* \
        2 A% L* v9 _& W6 U
        //创建直线6 ^# ?7 p9 W3 M* m) _
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
& G$ B0 d8 A! ?2 y" q& U6 z9 y# J  I6 v; e
        //打印直线的端点
2 f- C3 Y7 F$ N5 {; b; ?1 U( @' F        char msg[256];
  g) v1 ^; @! H+ d7 Q        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
6 Z* \- P8 M1 w+ ?! b% i                        line_coords->start_point[0],2 P( y, K" p5 l' ~" F2 v4 j
                        line_coords->start_point[1],) V; ~( t- l" Z  S7 N  L
                        line_coords->start_point[2],
; n1 m4 U* N/ ]  _0 p, I6 d( R                        line_coords->end_point[0],
# Y" k# t0 {1 X+ R1 m  r3 `                        line_coords->end_point[1],+ X( Z3 a2 \  _+ t1 D# M
                        line_coords->end_point[2]);
, k1 u: Q; z( h7 P- o        UF_CALL(UF_UI_open_listing_window());8 S2 C% J4 }3 {! {
        UF_CALL(UF_UI_write_listing_window(msg));
; i, J- U. r7 X: z0 |1 j: o( n        //UF_CALL(UF_UI_close_listing_window());% W1 J" e6 e) m: v

8 {. K+ z0 n8 o        //释放动态内存
( W) ^; W' r& `0 |        UF_MODL_delete_list(&edge_list);
: A8 I& G# z  ?) y! t5 G9 k        UF_free(point_coords);$ Z% p/ a  b2 B  ~
        UF_free(line_coords);1 K  P2 `# M8 r6 O
: O9 [" }& l0 v
        UF_PART_save();5 v) A7 P: g2 O4 V  D9 l8 e' 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二次开发专题模块培训报名开始啦

    我知道了