|
|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;7 V v8 j9 @2 O4 N! ~; Y
tag_t cylTag = NULL_TAG;
$ Z. N* F! ^4 s( u; w: V tag_t bodyTag = NULL_TAG;
6 ~7 Q7 o- }: p8 U double cylOrigin[3] = {20, 30, 40};
2 c6 ]" |! S t d char cylDiam[256] = "50";2 o. L" {0 j+ T
double cylDirection[3] = {0, 0 ,1};% @& C4 ^# S' G- I2 @7 h
double height = 60;
, l; r2 o* Y6 x3 h/ G+ M+ X0 g8 ]2 O4 L - P8 d/ C/ N6 g2 P$ u
: H8 f; x8 D4 r ^
char cylHeight[256];- F! d9 q; b$ W' v
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);5 |1 ^. G' }& ~9 O( \' S
//创建part p5 ^& X8 W' S4 ~. U; S. W
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));% z6 ~0 n7 i6 v" G$ r" l# z8 _1 P Q
//创建圆柱
0 k8 b L! f( ^2 E* q UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
& v; Z5 P/ A- @: ?; F/ n8 u1 t/ h2 e //获取圆柱特征所在的体1 C6 f: Y. F- y% \ j- P! S
UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
5 a* b" z, v1 _1 j: O" D //获取体上的边8 v* j2 g. _2 D1 [
uf_list_p_t edge_list ;
% ]* j4 m% L9 T+ n- `, d UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
5 z' D Y6 ], g N4 R& k- R //得到边的数量+ [8 P1 I( v! s7 ^. X
int edgeCount = 0;
% ?$ E6 w6 @5 h l6 p# J UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));* P* P* Z" u, _, K# h
//打印边的数量0 j! h( Z0 N. D- T; F z: v, f5 p
char cCount[256];% I" n8 \ ]4 G9 x5 a. v
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);8 m: U: n& B3 P4 H5 i! b
uc1601(cCount, 1);- E9 n' ^) b+ b0 U; l! S! \: C( T
$ }! u1 d3 o5 O
int error;8 C) U y" g) u$ Y
double (*point_coords)[3];
% b* x7 i% `) D" c3 v4 _ point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
: z4 x4 j9 R- \: \* I //获取圆柱的上两条边的圆心
2 d1 @ q5 b. J! |& r. g3 L6 \ int i = 0;
6 }! X( D8 \8 G# ?, L5 i. G) } tag_t curveOriginTag = NULL_TAG;6 o+ l& d4 x/ ^+ C$ d" g/ v. v0 }
for (i; i < edgeCount; i++)
7 V, V% N" b+ E b$ k# y {* k/ T! c- d$ H
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
3 k/ G* g2 v' s5 A" i3 w) W& [- f UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));( @8 H8 [1 n9 {& C2 c, `6 x+ D
}
7 j* S1 m+ e+ a0 [7 E" K //将圆心存放到直线起始点的链表中0 h5 a! b) x3 C2 G/ w, O. T% K# U0 k/ |# `
UF_CURVE_line_p_t line_coords;
/ \' G; T% V( Q) d line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
; y0 I/ o2 u+ D \. E line_coords->start_point[0] = point_coords[0][0];
/ y5 p Q' b5 O: F line_coords->start_point[1] = point_coords[0][1];
e+ T% _4 H9 l line_coords->start_point[2] = point_coords[0][2];
! @ G/ p& M+ M4 |& g( [ line_coords->end_point[0] = point_coords[1][0];
* L4 p: h+ R& h" i b3 d line_coords->end_point[1] = point_coords[1][1];
9 Q; V: Q7 v* w/ L& }# v2 B: v line_coords->end_point[2] = point_coords[1][2];6 O0 x9 X2 J7 Y1 j
7 s I4 l6 q# u) z+ }
tag_t lineTag = NULL_TAG;
6 Q3 N g3 N4 ]/ U% u4 V - O! G" g, S9 x* H2 B" N; y% K0 G
//创建直线1 x* M$ R7 S) r; C& y
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));# `2 U% H, B% r' }( n
# q" h) s0 k2 P9 i& H# q( {5 ~+ } //打印直线的端点
2 |+ c- v- j6 w1 j7 B9 _3 x char msg[256];$ z( k8 {8 \+ W* k# A" ]
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",! w6 N1 C7 R4 M$ Q% {
line_coords->start_point[0],! R$ y! F0 m5 k# X0 T) X. l
line_coords->start_point[1],- e6 @5 F" i4 R5 [2 ?! G. y
line_coords->start_point[2],) m4 z+ u/ I7 x! L: p& j
line_coords->end_point[0],
* F3 @, ?' `& m* C( I) l+ ]" Q line_coords->end_point[1],& k( [8 \* X4 l+ U
line_coords->end_point[2]);5 n9 w: ~% r; c2 \4 O6 S
UF_CALL(UF_UI_open_listing_window());0 b7 a f) ] o" I
UF_CALL(UF_UI_write_listing_window(msg));$ ^* ^: Z* R1 i0 v" I8 T
//UF_CALL(UF_UI_close_listing_window()); G3 ]+ d9 o0 p
, ~( G6 b& e: ?) ^! Z //释放动态内存2 h7 L3 S2 a$ h- E0 @" A) h" _9 z
UF_MODL_delete_list(&edge_list);8 C6 J; \ q7 n5 j3 h A
UF_free(point_coords);
& [. Y7 [8 P$ P! N- Q ? UF_free(line_coords);
8 L ]9 d1 n0 W; k7 B- d7 L
x0 \% I: q( E& p9 r* X UF_PART_save();
! |* l s6 D! v7 u4 b6 A UF_PART_close_all(); |
评分
-
查看全部评分
|