|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;
) n% N+ B- S; m i& D# E/ o6 U tag_t cylTag = NULL_TAG;
7 r+ `+ q9 f, ^- k* N tag_t bodyTag = NULL_TAG;
. m& U$ u1 [2 i' q4 N' ~% f8 c9 G double cylOrigin[3] = {20, 30, 40};& X, g) |. }$ J4 X0 B
char cylDiam[256] = "50";3 q! `) t9 g8 ~& b- z `* s3 j1 \
double cylDirection[3] = {0, 0 ,1};
, n5 v+ {+ d; U+ V+ @9 n' Q double height = 60;. Z$ t- Q# Q& x! [$ \( I4 k
5 I" l7 I/ ]7 J3 ~# a& w& V' h/ ?* ` q
char cylHeight[256];. K g+ M/ O8 R. G" X
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);. [, C' x3 J/ t7 Y! p$ {- y
//创建part0 Q) T0 ^ r4 M9 D# a* Z: n
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));" N3 y" O( n6 n& x9 N
//创建圆柱& J+ @/ l$ q6 ?; r
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));) M& s+ W* Z$ P- T
//获取圆柱特征所在的体
( `9 U, L- Z+ t! b4 e& v UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));) O* L. F. u( z; X' P9 h0 d
//获取体上的边9 H& ^% x2 a6 W& s/ ]
uf_list_p_t edge_list ;
1 Q `' p' \+ \3 N5 J UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
\1 q5 W1 C! E* T( h! u0 p //得到边的数量
4 S. x) j# O' o int edgeCount = 0;' J5 B2 h8 |5 Y6 u2 w
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));3 w1 v8 j I3 w6 c
//打印边的数量# a6 p, r5 [( l. @! {: R
char cCount[256];5 t) ]8 a+ |0 W
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);3 \- N! Y" h. L8 _6 W
uc1601(cCount, 1);/ T0 y* L" t8 m" r+ A7 m
1 v" F$ m5 v L6 E* s* r6 d$ U
int error;
" R6 {" q I; {9 Y5 n4 p5 H double (*point_coords)[3];
6 ]' H6 z+ p! [: t point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
0 t, V, f- v5 O7 _7 M5 r: P //获取圆柱的上两条边的圆心
+ C' p" t0 I" B& { int i = 0;
- `" O9 n4 \/ o; v# ? tag_t curveOriginTag = NULL_TAG;
1 }; c* G8 n2 \4 B# X$ Z5 G for (i; i < edgeCount; i++)% Q. v& i+ O" O2 d( e# ]+ @; O
{
, p( ~* A4 Q8 }/ ^* D& p5 g UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
1 `' t5 d3 A) E/ g: ?5 J UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));) j! ^. r) U' Y9 O2 a5 u
}" J" S: P8 B* c' G* J+ Y9 \
//将圆心存放到直线起始点的链表中! R( C0 O: h% ~& K0 f
UF_CURVE_line_p_t line_coords;
: L* g, [' _! f4 O, g) P4 H8 g line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );+ x3 U) @8 m4 z; u$ V/ l
line_coords->start_point[0] = point_coords[0][0];' a# m/ P# x, ~. F! G! u
line_coords->start_point[1] = point_coords[0][1];
$ B/ ]% W! v7 f8 `) O" v0 C* i line_coords->start_point[2] = point_coords[0][2];
X, L/ [& o" ]" k a: V line_coords->end_point[0] = point_coords[1][0];
" L* `+ _" ]' R line_coords->end_point[1] = point_coords[1][1];1 `& a5 R# @0 ~2 c, P- L
line_coords->end_point[2] = point_coords[1][2];& p* v8 o7 L# o( Y& K. j1 ~$ E
$ X+ x# w7 k& i4 q$ J- _) | tag_t lineTag = NULL_TAG;: N$ j+ m: e% g- ?7 q
* T/ \ d! I# B5 y, @+ t //创建直线
6 a/ e( S C3 f* k2 u! o# \ UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
! t" C4 K5 l/ r
1 S4 _6 A4 X1 J7 F //打印直线的端点
?5 u- R6 O$ M( u, [ char msg[256];8 i: x9 A" J- R! L" T
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
2 L$ n4 S$ h/ b" \ line_coords->start_point[0],6 h4 l. q5 {2 l2 X
line_coords->start_point[1],
+ w% G( _- r6 l# o line_coords->start_point[2],( t* J+ P) k( I+ r: V3 D' U9 I
line_coords->end_point[0],! u; ~# h( h* N) I) @5 J
line_coords->end_point[1],- J7 |+ Y8 _; k3 @5 I
line_coords->end_point[2]);( k& A5 B6 C& m, u
UF_CALL(UF_UI_open_listing_window());
/ i& b# @" b6 c6 L3 X UF_CALL(UF_UI_write_listing_window(msg));
7 U3 l$ k) h+ y c //UF_CALL(UF_UI_close_listing_window());
% X4 V2 s2 [2 g" _; P5 w J$ j( {2 N0 [- _
//释放动态内存
% j+ h7 S" l" B UF_MODL_delete_list(&edge_list);/ ^7 i* Z/ }" j3 @/ H
UF_free(point_coords);, Q3 L- A" l& i0 p1 L* {( J4 j4 R& P- o
UF_free(line_coords);7 ~: M6 ]: Q! W1 _5 [
* R; e& V* i( Y7 X$ V1 o3 f UF_PART_save();
# y1 [8 G5 I Y, F% y! G UF_PART_close_all(); |
评分
-
查看全部评分
|