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

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

  [复制链接]

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

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

admin 楼主

2014-11-24 07:57:59

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

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

x
使ufun完成以下功能
0 s" E4 o0 p/ }7 I" G2 z

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

使用ufun完成以下功能 新建一个部件文件,比如:c:\plmhome.prt 在部件中创建一个圆柱体,通过圆柱体创建圆 ...
9 R# ^7 L+ M! P5 c, d

+ {: ?2 |: @/ y. s5 K1.新建一个部件文件,比如:c:\plmhome.prt/ w: O2 f" e  V* v3 S) W
2.在部件中创建一个圆柱体,通过圆柱体创建圆柱体的中心线9 k: w+ C" u7 S& {+ d! t
3.询中心线的起点和终点,并输出到信息窗口
% n( M* }; R5 x0 M4.存部件
2 Z! J+ T, R1 L* e: U5.关闭部件3 _5 w* I9 ^$ k: b6 m

- k4 z! A& |. r- g; o; o提示:使用到的函数: 3 Z* F0 G, n+ |6 t) c8 B
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

. J1 [: k1 s9 H+ j1 z# c: o% e3 x% |* t6 ?

1 t! t+ S) T4 B/ W  E: J6 p3 N
- o/ }! d) i/ ~; t% a
上海点团信息科技有限公司,承接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;
& C9 r" y: t2 t' V- F        tag_t cylTag = NULL_TAG;  I$ v" D* }/ R3 _' ^' V
        tag_t bodyTag = NULL_TAG;
* Z1 z8 V1 S' a8 f        double cylOrigin[3] = {20, 30, 40};
0 r2 g4 w; S: R/ |1 w        char cylDiam[256] = "50";
  @% h8 y2 `1 O: ^' k7 ^        double cylDirection[3] = {0, 0 ,1};% m7 Y4 b* r5 p2 B: }4 v: X
        double height = 60;
, d# q9 y8 s, ]! P- O  W       
# o8 V* v: A  \9 c3 o8 ]0 {$ u2 A& u/ {6 D
        char cylHeight[256];! R) W' G' k; g2 R% y1 [4 x% R8 W2 V
        sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
0 a2 b: [7 b& }$ u( r2 x0 b3 ]1 @" e        //创建part8 P) ~2 C: w  \# y* j
        UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));1 T' n6 y+ W8 `- i$ u' L. I
        //创建圆柱
0 E- y4 h: n, j4 v3 ]& a$ |. }2 W        UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));% I+ V" f# ]( ~* s. d
        //获取圆柱特征所在的体
% n. K8 J( m9 H% \/ u        UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));8 `* C! l7 S) v) I7 ^' c
        //获取体上的边
' C7 |( O% v, j5 ^8 X3 P; g        uf_list_p_t edge_list ;9 a+ k0 D3 N. L, h; J, E
        UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
* ~0 x/ a4 [9 [; \9 V' }& A        //得到边的数量" o/ N* n; ]+ {* Q1 p* w2 ^
        int edgeCount = 0;! T+ I* z) |( @5 F
        UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));9 [: i/ z0 e, l! B# e* `# J9 W( |
        //打印边的数量
' w9 L  j" c8 x% f8 B3 |4 M        char cCount[256];$ Y1 f+ }$ T4 g& K; B1 |1 a3 {
        sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d",  edgeCount);
" L5 c5 i6 T  [. m  ]) `: W* C$ o( f        uc1601(cCount, 1);$ y' T/ ~8 U1 g, ~9 G9 \' r
       
$ `2 A8 ~9 `5 C3 |. F2 T% ~        int error;9 W4 {) w* @9 H7 `$ U' q
        double (*point_coords)[3];
. Q- Q6 ^( [: A; f, ~8 n/ f9 u: P  T  o        point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );0 p$ q) @( Y* j3 l$ b2 B
        //获取圆柱的上两条边的圆心: U: F9 ]! A6 \7 G
        int i = 0;
1 q/ N% w- ^3 R6 H2 D        tag_t curveOriginTag = NULL_TAG;
/ P$ d7 w9 f/ t- q' f" ~        for (i; i < edgeCount; i++)
2 b  _) b9 p+ b. t4 H; T        {
7 k3 k' o5 _& q  S; U                UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
5 @2 _7 Z7 U# t" B. O2 T                UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));& b3 g7 b6 }$ C. a% A" ^
        }  z8 e6 @1 q2 k+ K7 t( K
        //将圆心存放到直线起始点的链表中. j5 n' M9 k) m/ L/ P7 g. q' W3 Y
        UF_CURVE_line_p_t line_coords;
, D) s) K/ P  A9 b        line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );; Z+ {0 ]8 h9 M6 g# [! |1 K0 D
        line_coords->start_point[0] = point_coords[0][0];( s1 x" U1 o- l/ J  C: b3 v4 f- `2 Y& Y
        line_coords->start_point[1] = point_coords[0][1];
+ T, e* `+ U: d- O. }/ T        line_coords->start_point[2] = point_coords[0][2];
) u" W1 F7 d. P+ Z# I: j8 i        line_coords->end_point[0] = point_coords[1][0];
5 ~6 Z: d6 t- R  s, }        line_coords->end_point[1] = point_coords[1][1];6 I% B8 A( Z) S' ]/ O5 c, k
        line_coords->end_point[2] = point_coords[1][2];1 o& i, f  d4 T9 Y+ l8 N' r: B; s

8 t, j; t8 k) r5 ^+ x- K        tag_t lineTag = NULL_TAG;
' d7 t3 W3 R1 @% B3 t& d       
" ]. y# h: F4 V. B3 X        //创建直线
  k1 e& p# k+ b, o# u" W! D& ]        UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));4 W2 R& q) {5 i; j
: r1 V! p# ^2 k+ P2 W2 e
        //打印直线的端点
8 x* T- z1 G$ i/ J/ Y3 V4 @        char msg[256];
. V- S/ n3 [; `; t' Y% r- [1 ~        sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",, C( Y( v# |6 z. n
                        line_coords->start_point[0],
$ R7 L+ \+ a1 C: m  p) ~                        line_coords->start_point[1]," w8 l6 P1 N) g' ]+ C. I2 h! Q
                        line_coords->start_point[2],7 q3 U! `: K: X+ s! a# l* V. z
                        line_coords->end_point[0],
5 ~9 p6 I9 v8 x5 ?7 B. |                        line_coords->end_point[1],# [- N# x) v% ^
                        line_coords->end_point[2]);5 @) _& d  e0 |7 O! }4 r: L
        UF_CALL(UF_UI_open_listing_window());* B( U( [/ |/ N+ s; @
        UF_CALL(UF_UI_write_listing_window(msg));* {( @& @6 C. N1 p$ F1 Z
        //UF_CALL(UF_UI_close_listing_window());& @) F* `4 y* Q. s# p

9 P% f0 ^- V/ @        //释放动态内存
% ?+ [1 R' ]5 A% L9 n2 i6 }: V        UF_MODL_delete_list(&edge_list);! W9 w' A+ Q9 S+ V/ F  x- T5 \, @
        UF_free(point_coords);
# e4 P9 l. J- [5 l9 Z, I        UF_free(line_coords);1 _) h% E) k2 X

9 o- L$ \" `, ]/ U% z; F        UF_PART_save();4 ?+ z4 a/ Z. ?% }- E6 v0 a
        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二次开发专题模块培训报名开始啦

    我知道了