|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;7 u# G: i) q$ ?2 c9 M0 l
tag_t cylTag = NULL_TAG;
) q3 `, I# r" J$ o tag_t bodyTag = NULL_TAG;( A* _& H1 n: H. z8 f v0 {/ w& i# m: }
double cylOrigin[3] = {20, 30, 40};
, f) d9 U& n* F, U5 v char cylDiam[256] = "50";1 }" ^, p2 j( s9 l( [' S& C3 E! v
double cylDirection[3] = {0, 0 ,1};
( o6 v3 y d1 r+ s3 Z8 a& @ double height = 60;6 O6 o8 Q2 I# l7 f& s! }9 U: X
; m( U- d# F& g* k1 I
! ?' j- E2 Z* n. L/ U char cylHeight[256];3 ?0 P B; G' l" s' C
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);8 V/ n/ x( q9 Y( W. G! \* D! @4 s5 S
//创建part
& _8 A) G0 {* ~& n9 H UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));/ _; S: a% y! B; R
//创建圆柱
. w- F* k1 K! a+ v& j4 V( @ UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
& {' z+ s; f# d' ^9 i //获取圆柱特征所在的体
& K- A4 a( t# e+ a: M UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
# m. }# n t7 _! ~4 _ //获取体上的边- O& I/ u1 I" Y: j2 `- E
uf_list_p_t edge_list ;$ S- z9 a5 W/ Z5 P9 S" C% s
UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));7 L7 T# x% U& A* I2 ^2 e; f
//得到边的数量) v9 y% N& c1 n% C
int edgeCount = 0;
* ]0 r' T! c& A) j/ |3 }" l UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));3 `' W6 ?% j x* O! b
//打印边的数量7 j- ?, ? j9 L* t
char cCount[256];! h$ [+ y, @/ A" @7 L9 k1 }% n
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);
0 u* N' ^3 r' }7 m7 C4 p uc1601(cCount, 1);( C* c! a1 C" ]& s' s/ v% f9 o+ ]; o9 D
6 A+ n$ |1 ^, B int error;
1 F8 b% ~; G5 P8 H' X4 u+ ? double (*point_coords)[3];! L+ w$ t( B8 U: ]/ J
point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
4 i% A3 {/ o2 w q. o5 y o+ L //获取圆柱的上两条边的圆心' W+ H; I" V9 d. u
int i = 0;
' C6 |: s) ^( J6 K4 ?& l# S' ] tag_t curveOriginTag = NULL_TAG;
( U* m- _& _$ {1 m for (i; i < edgeCount; i++)- x4 ^6 _+ H" D# o
{3 i& ]/ p) {/ J1 M/ Z+ h
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
) x' y* e2 r/ Q Y UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
. D( ]$ A, h" I2 Y8 D }' P' W5 K9 o4 B6 c6 w: [! U
//将圆心存放到直线起始点的链表中7 N5 X8 O( u& M3 }% {2 @
UF_CURVE_line_p_t line_coords;+ B- W# ~! b: I1 v& o
line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );" j Z, N0 [# [, _5 X
line_coords->start_point[0] = point_coords[0][0];
& x% N! F, y/ S( p line_coords->start_point[1] = point_coords[0][1];) M) \- W& U1 p6 P# L c( L- R
line_coords->start_point[2] = point_coords[0][2];/ @. e" X' z4 S+ u
line_coords->end_point[0] = point_coords[1][0];; i6 Z& T4 _3 e9 u* c( K/ w. D
line_coords->end_point[1] = point_coords[1][1];
1 k2 I8 b& ~7 t5 W! @ line_coords->end_point[2] = point_coords[1][2];
- {6 B5 K% U% v% G1 Q; h7 I- Q
) `. H$ Z! K" u. w8 J tag_t lineTag = NULL_TAG;; F, F$ R) t5 Q" w! j
" l# g$ K7 I9 F# u3 z- b
//创建直线; V# D; F4 ^: P2 T9 C. B# a& F, b" Y
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
- a; H% \* g C4 z& D/ T
* W' q2 _' s; z9 h' V2 m //打印直线的端点+ s! f* K' A- I. ]
char msg[256];; _) [& g; ?: K$ P3 e. p# L
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
7 V! g4 C. T- v8 E line_coords->start_point[0],. E( O; }7 ^$ _' o2 O
line_coords->start_point[1],5 E8 b* y( x1 r
line_coords->start_point[2],
/ E9 f& T5 C; D n; I line_coords->end_point[0],
; H6 N; l( O9 A2 O4 Z9 j line_coords->end_point[1],
+ R: ^$ E# T J% T8 w& c5 o( R line_coords->end_point[2]);3 N, r' H; k8 O1 a- L, o
UF_CALL(UF_UI_open_listing_window());! D2 _9 u; R1 a. p. H9 q
UF_CALL(UF_UI_write_listing_window(msg));! G% [2 q0 B7 D
//UF_CALL(UF_UI_close_listing_window());* B3 v& `, p6 b+ A4 h' _
. h" M! v& U$ Q$ q _3 D& i
//释放动态内存2 r# W9 }( @: e1 D
UF_MODL_delete_list(&edge_list);
1 O2 H- j; ^: P6 S) h UF_free(point_coords);
' u( z2 n6 a* d9 K" g4 p. t% X( _ UF_free(line_coords); n* h) Q+ L; ]2 K
: z& S3 d# ^ X. X8 w. y
UF_PART_save();
4 r; v2 [* m0 g/ |, I" s$ ]8 W UF_PART_close_all(); |
评分
-
查看全部评分
|