|
|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;
" z8 ]& z# y1 b4 n/ ]# i tag_t cylTag = NULL_TAG;2 i! {8 h& J. q, [' h
tag_t bodyTag = NULL_TAG;5 M2 |. k5 z7 Y0 j2 r
double cylOrigin[3] = {20, 30, 40};
% T8 Y+ c! o& [- L) t `/ P% H9 j char cylDiam[256] = "50";9 U1 V3 r2 {: E6 v% g& S2 l6 C- W! |
double cylDirection[3] = {0, 0 ,1};
$ S& I/ L, ?6 ]1 \5 L double height = 60;
# W3 h* {# n. l' _ / \8 l/ ?' R9 O' `2 e
7 J* r& G' Q% E5 v5 ]' d/ \% B5 V char cylHeight[256];
7 V0 w5 M( u6 h6 g' X1 \# H3 Y+ Y sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);- M; N, C7 e- i" G
//创建part6 W: G1 M$ V& D
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
# f+ t- p( @8 \& [0 L //创建圆柱1 F+ d' t; b( `/ W- _. y
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
/ x% u* h3 Z& y7 i; h* o //获取圆柱特征所在的体
9 ^+ F* k# o& P3 X3 O( j UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
: F9 X5 f5 @7 Z! Z //获取体上的边4 m0 h8 y: d# a
uf_list_p_t edge_list ;" g& K1 h, y% q8 T
UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));% g* Q+ t v% f6 ^, r) B, h
//得到边的数量
' l& H' @4 G: R' @, `; z/ }( q int edgeCount = 0;9 D: D% {6 D$ H0 s) q3 E* `
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
4 _/ O, y3 t8 x& W5 B# ^ //打印边的数量 ?# g$ z9 I% Q+ k! U8 A' Y
char cCount[256];& x9 |7 P+ _5 B8 p
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);
: p3 V/ L$ p( V. B6 B) r+ V uc1601(cCount, 1);$ a4 I! y3 k9 @- C* I
; h4 J% A" B7 s' t! a3 `
int error;
6 }4 i' x0 l8 E* A: E7 ^ double (*point_coords)[3];, j% e; {7 S9 d' y7 e1 _0 m
point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
8 |5 J9 A* ]7 ]) r) S7 V5 Q4 V //获取圆柱的上两条边的圆心
! Q: g6 L' O8 h& F int i = 0;
$ S6 C1 i( H" u# C tag_t curveOriginTag = NULL_TAG;+ E n( r/ b* u7 E; H
for (i; i < edgeCount; i++)
' y) x' n4 g$ K* A* K! A {/ T' \$ W5 H* h) ?6 K
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
% r _1 S! O E+ x6 r! a UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
/ j# [$ {& t" H }' h& k1 V9 @* G. M% L
//将圆心存放到直线起始点的链表中2 l+ Y. m7 E! a3 S8 g3 m5 n
UF_CURVE_line_p_t line_coords;
q; ^0 b! |2 P0 ~! J line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
& ^) S X5 `, M% `8 T- ] line_coords->start_point[0] = point_coords[0][0];
0 F( f3 [0 w- n& f line_coords->start_point[1] = point_coords[0][1];$ M6 d2 u2 N/ O Q/ C' j1 E2 j ] h9 H
line_coords->start_point[2] = point_coords[0][2]; V0 E& h% W% P& H
line_coords->end_point[0] = point_coords[1][0];
6 ~2 d: P+ h5 u1 Y: Y/ z, [ line_coords->end_point[1] = point_coords[1][1];
1 f# p; S! `9 H& ?5 Y& v5 Q line_coords->end_point[2] = point_coords[1][2];
5 w9 k# x" }* N" f) V) G" C5 I4 T' w4 v7 h. V) [9 N
tag_t lineTag = NULL_TAG;" G" \/ d6 j# H6 B+ k
6 k5 a. p& u1 M# P' y" Q" p0 P5 \
//创建直线4 y3 v! j! Y4 R. X7 S' E/ Y" U' A3 ~
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));# N# b4 Z1 z3 h2 t
. B. v1 g' V. P3 U6 l( X$ U
//打印直线的端点
2 u) {8 b4 A5 b# Z char msg[256];% i2 F( `- a! t5 c* o0 U
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",7 z+ q7 K1 G, ?, A
line_coords->start_point[0],
% @$ D. C! H4 w# x0 | line_coords->start_point[1],
X" {: _: D6 a5 B line_coords->start_point[2],
8 J1 V) B) p* ?1 E1 u3 d9 o line_coords->end_point[0],
% g# l5 z4 X- v% D line_coords->end_point[1],$ F+ t4 C* V8 e; w W9 n: ~
line_coords->end_point[2]);
; i+ @( G; B z! a$ E2 R+ P6 l7 U UF_CALL(UF_UI_open_listing_window());
/ u, R8 z, o; u! {% C' M UF_CALL(UF_UI_write_listing_window(msg));" o6 r" H- S; T- D( f
//UF_CALL(UF_UI_close_listing_window());
6 y( q# j( n' R4 v
4 r V4 R5 w) J //释放动态内存 w& f$ w0 G" ?! O
UF_MODL_delete_list(&edge_list);6 ^. [' Y3 Y) H) m' U0 I
UF_free(point_coords);
9 a. m5 q) F) j+ R UF_free(line_coords);) q2 ~. u; j0 t' f
- r5 N y1 o$ b* z |6 y UF_PART_save();
) H7 |: e3 T* r3 y+ W UF_PART_close_all(); |
评分
-
查看全部评分
|