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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能* F9 O5 @$ i9 w+ S4 |4 G. N" {

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
  x" V/ }# i1 D. c9 S) Q: h# L$ G

- |/ R6 w# B# ^+ d$ H5 j& G- F1.新建一个部件文件,比如:c:\plmhome.prt" I4 \4 u, Q! P/ b* \' ^
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线5 f1 {1 @9 K& `1 a9 A/ N5 _
3.询中心线的起点和终点,并输出到信息窗口+ Y  h6 q0 C# b' q  G  T5 S& t
4.存部件( [# j( e3 E, K& _0 l8 R
5.关闭部件3 @- G7 Q) ?( `* w! {! D& i
3 n' b: l) `: C
提示:使用到的函数:
* W5 k" M5 @) i1 Q9 a: R( t
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

1 ]: _- l! i, p" }- R) F* E
  Q7 `' R. F7 n2 a, J6 u0 O/ F
8 ~* S7 b% r9 G0 ~( i+ C6 @; m
9 z4 B$ l+ r' V! d
上海点团信息科技有限公司,承接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;, E7 z6 @% _7 Y1 \7 ?
        tag_t cylTag = NULL_TAG;  G7 e+ Y+ n4 A2 z2 @) @) G* Q
        tag_t bodyTag = NULL_TAG;+ a+ b% Y% r1 W& t! `
        double cylOrigin[3] = {20, 30, 40};
3 M2 J% E6 O8 ]! N2 ~+ U        char cylDiam[256] = "50";9 F3 S  z4 c$ v  \* o1 j
        double cylDirection[3] = {0, 0 ,1};5 `* {3 Z' g; S# g) J9 N$ _
        double height = 60;, y$ S) k/ |8 _+ S$ S
       
4 R3 M8 ?7 `) F; Y4 y3 V' _/ C& d5 U7 [) N% E0 d3 n" Q
        char cylHeight[256];
( }7 M7 [9 F7 N: q        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
+ [6 e. J) T( E% i1 b" A        //创建part) X( @1 ~( E2 Y  d  a" }1 B8 j  h: F
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));+ D6 I3 F/ V2 n& L. z0 k1 {
        //创建圆柱9 _. G* _& Z7 {+ N% m* U
        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));4 I* _' X0 }' U% m" `
        //获取圆柱特征所在的体
) Y3 M$ [3 p+ _& K0 T        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));1 t% ~4 [) V; H: k) ^
        //获取体上的边
" y) p( O5 j( d; r7 U        uf_list_p_t edge_list ;; h' a$ o7 k% s* s# X
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
  a* Y; i3 U' w% b8 K        //得到边的数量; n9 V) L+ \8 c- K0 T, G7 G
        int edgeCount = 0;
, ^% T; z& S+ X9 `" `3 ?        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));& R# t# o1 y3 }. q! F
        //打印边的数量( }3 n$ w2 P* O+ U- S
        char cCount[256];
# T% d% J+ U" A- H7 Y, p        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);! k* ]/ C$ N' ]' _3 b
        uc1601(cCount, 1);
4 _- F7 X4 h, |. {9 B       
& p2 E5 Y8 q: K! l7 S- I        int error;. n3 T3 z  i$ U& D. u
        double (*point_coords)[3];
& `# m) w9 z0 D; z7 s        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );9 @& U* M6 P; w* m6 C& C, Q' x
        //获取圆柱的上两条边的圆心
+ T' \# I+ z, s        int i = 0;
8 I5 k+ }+ q. e. n- H- s9 N& ~        tag_t curveOriginTag = NULL_TAG;' f7 N8 w, R- {9 `6 |* S
        for (i; i < edgeCount; i++)* j  {6 P4 m# ^# t5 t! f
        {5 c# j: v1 e/ O. x4 w7 }
                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));$ }8 O( M: e( \/ v5 }% U
                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));& w3 ?( y/ T8 x9 a1 Y0 f- b* X
        }+ j8 i0 O- D3 R$ i. i7 S
        //将圆心存放到直线起始点的链表中0 h( ?: E0 t, c, h
        UF_CURVE_line_p_t line_coords;
" \7 v. v7 p" ^& d        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
4 I8 B5 p7 u% K. w4 I* l9 P        line_coords->start_point[0] = point_coords[0][0];& {' N! o3 L# m; M9 q2 z* a
        line_coords->start_point[1] = point_coords[0][1];/ c" \  R) l( k! v0 g% @
        line_coords->start_point[2] = point_coords[0][2];
# C5 L. |. Y* T9 h4 L$ `        line_coords->end_point[0] = point_coords[1][0];
1 y% }+ X  ?  h        line_coords->end_point[1] = point_coords[1][1];2 X/ n. t" i; s* p8 B
        line_coords->end_point[2] = point_coords[1][2];1 p2 ~( P* Z( r9 i% L

2 o5 O+ ?  K$ e/ @        tag_t lineTag = NULL_TAG;
" v% Y  d- P8 ?! r- d- Q        : z4 L6 ?: Z' q1 @
        //创建直线' C  J7 k3 N' a7 x
        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
* S8 X# R: U- _% I- o$ M5 W/ f- z0 m! |4 X$ Z. U* P; P4 G3 o9 O
        //打印直线的端点
/ u! o8 I& {0 h3 G4 {        char msg[256];" I2 n5 A3 }9 [9 ]9 R0 A; X6 U
        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
. [* D) c. w* d3 O' @                        line_coords->start_point[0],
. @3 U  D0 i+ \# Z) R' i                        line_coords->start_point[1],
; a4 @7 r' Y' R$ R                        line_coords->start_point[2],2 N1 V3 E' I3 F
                        line_coords->end_point[0],
1 z8 V/ c# |+ a                        line_coords->end_point[1],
6 ]0 Q$ w8 T# h! E: i: t  V5 Z: W                        line_coords->end_point[2]);& f! f4 E, k' R& b1 U2 @# k
        UF_CALL(UF_UI_open_listing_window());8 [+ n4 G% q7 u: a% T) u
        UF_CALL(UF_UI_write_listing_window(msg));7 S2 X3 \) b8 ^5 D9 {! @7 [
        //UF_CALL(UF_UI_close_listing_window());
! ^, P" C$ Y- ]% {& E. B9 U9 H. V# _/ j! Q; D' A
        //释放动态内存9 @4 W) W3 {2 Q2 U4 @4 _4 ~
        UF_MODL_delete_list(&edge_list);
9 m/ O. k5 {5 w- E/ ^/ W        UF_free(point_coords);( j, O: n* o2 D
        UF_free(line_coords);( D, H( F6 y; [3 R- D
1 m: U% J5 m8 e  F. R
        UF_PART_save();3 F; \6 z: x/ J! b7 k, ^! K1 r
        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二次开发专题模块培训报名开始啦

    我知道了