|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;
h% H' t! w o4 J tag_t cylTag = NULL_TAG;
8 L2 E/ h6 g0 ~( d tag_t bodyTag = NULL_TAG;
& Q! b6 @6 f. V double cylOrigin[3] = {20, 30, 40};
, N j* X( T& w, s7 ]9 ?. v char cylDiam[256] = "50";" H: \8 a1 Z" [6 b5 e
double cylDirection[3] = {0, 0 ,1};
0 j+ ^0 A! u" s) O" b double height = 60;6 q' H% ?% L. X4 R4 Y; f; j; |
/ f8 O4 d1 t! c( q# i" c: o9 L4 \( \
' M6 f, U1 m) a8 }: k5 [" q char cylHeight[256];; f) ^& P0 H5 l& z/ ]/ c$ A# o, H
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
+ {5 x7 `4 D0 S5 F8 w, N+ C& w! V! e //创建part
3 h5 L) D! N. D; i( P UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
% a; G" @8 Q4 @+ D& s* s. y' h //创建圆柱( Y/ q ?1 }- r: S4 M
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));2 E1 z5 R% g2 H4 ^. Y: V" t
//获取圆柱特征所在的体. M- C, @4 G7 @ `6 y5 h' K
UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));) D' s7 H2 H2 Y, w3 d
//获取体上的边
4 h3 ^. b1 |+ D; ]1 a uf_list_p_t edge_list ;
& e2 l9 s% h, { g1 i UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
: t, q) v+ ?4 m2 t //得到边的数量
& B4 {. c% h( Y int edgeCount = 0;3 x4 _- Z0 `: O- B4 @
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));/ J4 n4 ~1 H @$ o' O0 p! b
//打印边的数量
' h. e" S0 V# l9 m. @8 T% \7 c: S char cCount[256];1 o* S# W' j# x# X6 g
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);
$ K+ _7 `8 i: i uc1601(cCount, 1);3 M- C, n& L7 K# `
- U. b/ b$ M, v' q! N( s int error;/ {# C0 q% U+ b( ^
double (*point_coords)[3];
( v7 K+ x& p0 q. g0 H/ s. M point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
7 A" f) U1 r2 o% f //获取圆柱的上两条边的圆心
/ f5 y& i2 u6 w0 k) f F; o( n4 K int i = 0;+ i7 t# z( J: ~
tag_t curveOriginTag = NULL_TAG;
* z T, y" y5 y# y5 G5 W/ [& m" w for (i; i < edgeCount; i++)& n; |" j8 s& e$ ~& i' U/ E
{1 f' q' M6 Z! |3 B* r. b
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
$ H$ n; }; c; G- g6 q7 P5 A! [3 L UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i])); f& J" @' [; Y1 w% P! h2 M
}9 p$ A' T, \- q& C. N
//将圆心存放到直线起始点的链表中
% H5 W0 l) `/ W) z UF_CURVE_line_p_t line_coords;5 J( @* ?+ N& r3 `$ M- u
line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );: [, |1 s: T$ D& u% t
line_coords->start_point[0] = point_coords[0][0];) m8 H0 M8 N7 g6 k. L- z& V# m
line_coords->start_point[1] = point_coords[0][1];% D: A& j$ @. x/ y
line_coords->start_point[2] = point_coords[0][2];
! [; P% ~2 ^% B7 K( {, a0 D8 T line_coords->end_point[0] = point_coords[1][0];
. M& Y2 c- d: {: g# d: J line_coords->end_point[1] = point_coords[1][1];3 K0 ~5 V4 u- X5 p2 f
line_coords->end_point[2] = point_coords[1][2];
/ h8 O" y# K* Z" u" w; Y. J$ `: _2 @; N4 b# Q( ]
tag_t lineTag = NULL_TAG;
5 {1 L9 l2 I( q4 A
( I8 O6 s6 J L- e4 }3 k //创建直线
" C- k8 w/ U) _! P( W UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));& v; d2 T6 W1 F0 i, M' T4 `; h0 d
& o3 L0 r3 _/ A# Z& S6 j //打印直线的端点
, Z) g/ }& n2 v char msg[256];
# _4 s3 g$ u& I0 Y& P/ X! [ sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",8 s, K. r2 D9 n7 T$ m: ~! r9 n
line_coords->start_point[0],, i. R! u' V1 Y8 G+ Q' `! L1 R
line_coords->start_point[1],4 N! I9 j! A8 F' C. `" M' h, o
line_coords->start_point[2], e. u2 O& s9 ]5 O
line_coords->end_point[0],
6 l! w" M' `) c line_coords->end_point[1],
& ?- y6 R" i' ]& ~( Y- k* N line_coords->end_point[2]);
1 B$ ~( V+ e! _9 ~! i# f, }% u7 O# Q- t UF_CALL(UF_UI_open_listing_window());- P) R9 L9 B3 f. {/ H9 ]+ o0 z
UF_CALL(UF_UI_write_listing_window(msg));
" ~& n, [: B( j8 z4 C3 [6 Q //UF_CALL(UF_UI_close_listing_window());
3 i( @4 U, |, H' |" E1 t6 ]7 T
5 J. i8 N @3 K$ x //释放动态内存
; q7 L; t% M, @; T UF_MODL_delete_list(&edge_list);- }4 k: ]8 u9 x6 c
UF_free(point_coords);
* f! B5 E( }* ^9 _ UF_free(line_coords);" ~5 Q; t2 T* v+ a9 l, A
) D" X" i: Y( \# V2 T2 i UF_PART_save();
2 v7 F+ s8 O/ \3 R0 w UF_PART_close_all(); |
评分
-
查看全部评分
|