|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;
' K7 s4 ?# w( G8 s, q8 ^ tag_t cylTag = NULL_TAG;# k/ Q9 {& y8 [3 |, B5 g
tag_t bodyTag = NULL_TAG;
; L5 }! v3 i& a. y5 M double cylOrigin[3] = {20, 30, 40};
" X5 t0 x T# |0 c char cylDiam[256] = "50";
: L! h+ L e$ [' a9 N double cylDirection[3] = {0, 0 ,1}; A3 M8 h0 \: ?, g2 n! n
double height = 60;4 h1 f+ f9 h' S; G3 s
# C- h! T* n9 {7 R& z" x: g
# j5 K# f D+ X7 I0 _- x+ C char cylHeight[256];) F$ L7 p; f! k% Y* T
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
5 w& b; p7 V7 Z# \8 | //创建part7 A4 G4 F/ o6 j5 H$ E/ f8 L$ ^) E
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag)); f6 g3 F; ]/ _
//创建圆柱0 `0 n9 D0 B0 \' M! h2 S1 H( ]
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));, Y; r2 s: y/ r( x0 s) Y, ] i
//获取圆柱特征所在的体
% W7 f" |+ q# X/ B+ _ UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
3 y; `6 ]1 Z% o# \& F% ^3 X t //获取体上的边4 b7 M! u- L9 V: ~4 W
uf_list_p_t edge_list ;# ?7 R5 @- m4 T/ `8 k( f% V `9 M
UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));: d L6 `" T9 b K9 d, g/ E+ |
//得到边的数量
5 ]9 p" N G3 e p int edgeCount = 0;+ s8 W: B, F* T
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
. P Q" y% {; \ //打印边的数量
0 I2 _, f6 K9 k char cCount[256];
! t' s' _8 j& x5 F2 r+ N1 Y sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);& G6 t1 ^8 B1 h* L( t! o" D7 R" P
uc1601(cCount, 1);
" o, ]; L6 e% j. M# M2 o) y
1 m: H+ y8 C$ W' N9 ` i int error;
* d. F- S0 M: c b6 N5 V9 M double (*point_coords)[3];
# u5 _5 i9 X" L. k' b9 f: A point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
" ? J4 q( K1 k+ F //获取圆柱的上两条边的圆心
W/ P8 u) e2 b+ O5 g3 u% b int i = 0;
) w4 Q/ Z8 ] t8 B tag_t curveOriginTag = NULL_TAG;4 f1 Y1 p5 ^% Y7 g
for (i; i < edgeCount; i++)
1 O" F5 v6 z9 B# N' o) X/ U' @- B {% a" i) ^1 G8 s; q% C' Z# e4 i
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));7 t2 ]( J* @: C
UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));& F5 A0 ^3 e: d7 g" R5 Z" Y3 I
}* ]9 T* z8 ^5 U/ v2 d) d
//将圆心存放到直线起始点的链表中* d* S$ V- i* q0 R- N
UF_CURVE_line_p_t line_coords;! [9 J: U5 R8 x: X9 k9 S
line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );' M" X. u/ b; o# _6 z u
line_coords->start_point[0] = point_coords[0][0];4 f' }7 N9 o( x3 N
line_coords->start_point[1] = point_coords[0][1];
" \( \1 e( F) c1 V3 S$ f( ? line_coords->start_point[2] = point_coords[0][2];
2 K" T( O9 b! H" j R) @0 L line_coords->end_point[0] = point_coords[1][0];
6 x. Z1 \- x& I( f line_coords->end_point[1] = point_coords[1][1];
5 u, L0 _( _8 i4 @/ a0 K' Q5 \6 T line_coords->end_point[2] = point_coords[1][2];% k4 o( k1 ~' b; R. h
1 i8 V) Q7 J6 g/ m1 t2 R0 m
tag_t lineTag = NULL_TAG;
& A3 }$ i' J, b2 H+ k $ s' i+ r! B |" r: n
//创建直线& S* x4 J& H! g
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));3 V1 e8 B* k4 f- o1 j" n7 }
X) o5 {: x/ i8 W I8 W
//打印直线的端点5 ^- N* d \4 \, y
char msg[256];
2 R7 M5 w7 ~/ V5 U sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",, _6 j! j# M+ E: c& {6 f8 i! O
line_coords->start_point[0],# u1 I6 \9 p1 Y+ y" e3 E
line_coords->start_point[1],5 G+ G4 s2 J' S- z0 Y' S
line_coords->start_point[2], j0 i+ [3 f+ @, D/ L& K: J
line_coords->end_point[0],
( }6 X" B2 a. ?+ C' L9 Y" g line_coords->end_point[1],
- c+ j9 m7 d9 {+ K/ B- l line_coords->end_point[2]);
2 _* {/ ~! B, R7 k UF_CALL(UF_UI_open_listing_window());
9 [& ~, c* M- ]+ | UF_CALL(UF_UI_write_listing_window(msg));
% V+ ^( d5 f! \' _0 V0 v6 _& H //UF_CALL(UF_UI_close_listing_window());
% I& L0 r) J# s+ X) f ~8 P3 S$ k& g
//释放动态内存
5 q0 s0 |4 x1 [) c H UF_MODL_delete_list(&edge_list);; v+ o Z' ]: C& L
UF_free(point_coords);
% k- s @8 a3 d# h% T f9 g2 | UF_free(line_coords);* C; t( {+ l0 F! x' v
4 W9 }- i; u: l7 [. v UF_PART_save();
$ `2 N: `& z5 g1 ]( F UF_PART_close_all(); |
评分
-
查看全部评分
|