|
|
发表于 2014-11-26 07:50:53
|
显示全部楼层
tag_t newPartTag = NULL_TAG;
* H3 ?' B( |" z/ R tag_t cylTag = NULL_TAG;
- I7 f" L: t" p4 n. ] tag_t bodyTag = NULL_TAG;
' \! ? ~4 M; ]7 x: L: a double cylOrigin[3] = {20, 30, 40};0 X, L7 C, ?3 I9 x( a
char cylDiam[256] = "50";4 D5 \* y+ c$ N" W
double cylDirection[3] = {0, 0 ,1};" o7 _6 h& i+ z% W6 y' n# h" f
double height = 60;; O& g" ~! o5 _3 W1 ~& i
' E2 e' r8 u3 E8 U% L$ w$ O4 j1 a+ k- t
char cylHeight[256];) b9 S) P! t9 E
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
( @4 o) u/ A* g k9 y- \+ z //创建part6 @! ]2 l9 P8 P) n q
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));' D7 ]3 G' ?% c: Y4 r, d
//创建圆柱
& l% D* w8 s& K UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));5 h) a7 R' E' N3 I$ b& b+ d
//获取圆柱特征所在的体- g! r: V6 O1 C+ H0 p
UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));. u4 d2 H* i6 X# ~7 d5 [5 T# {
//获取体上的边( N" G w% c" P6 r
uf_list_p_t edge_list ;
6 |0 I: J) L# z6 G UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));9 G# L# Z5 q% A& n0 ]3 E& h. M
//得到边的数量
% {5 R/ F; N: _" J" |; \# j6 h int edgeCount = 0;
4 B* |9 n" O/ ?. B5 ]: W UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
! x+ @& H- J) p //打印边的数量
8 Z& c" {- ~; V: K4 X) E. T. K char cCount[256];1 v; B1 p3 l- p$ ?! Z8 C
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);% F& A( x9 D5 H" ?7 |
uc1601(cCount, 1);
, z6 x6 G! M' v0 G, W5 {* D n / k$ E7 y6 E ?6 @8 b
int error;9 s/ u* B, y. ~/ _" z1 z1 G [
double (*point_coords)[3]; o/ N7 i8 B6 r9 Y2 ~
point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
% c5 H. l3 e4 f" w% u, d, v //获取圆柱的上两条边的圆心% X+ h, ?! k4 e# }
int i = 0;- y( o1 C6 U9 z6 |% u/ a2 W4 I
tag_t curveOriginTag = NULL_TAG;; V. D8 r+ u3 [$ ~
for (i; i < edgeCount; i++)+ t% X7 m5 N7 E" \' y
{0 j; R( U# f; i- u
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));7 K C! i0 H/ C( [5 ]5 }) I5 V( i
UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));" ?& F+ H3 T, P7 D+ f4 r7 Q
}6 s4 Y: W* v# g8 ] Z, m; t, A9 P+ x
//将圆心存放到直线起始点的链表中* W: o; K8 `. x# Z4 c' v& B
UF_CURVE_line_p_t line_coords;9 i2 g* D! S1 d7 R7 F) g) w+ e
line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );0 L! j5 I1 j: ]" z& U
line_coords->start_point[0] = point_coords[0][0];3 \3 q" c" S, e4 y; s9 D9 T! H2 p
line_coords->start_point[1] = point_coords[0][1];# y& c6 q0 g" U0 N0 L
line_coords->start_point[2] = point_coords[0][2];; z) u1 F, w' [2 \
line_coords->end_point[0] = point_coords[1][0];2 G/ T2 ` C3 B* _
line_coords->end_point[1] = point_coords[1][1];
' A0 `) I5 p' I; h2 _ line_coords->end_point[2] = point_coords[1][2];
, j1 h4 ?! f2 h1 v2 r4 @6 F7 ?4 c4 X! ^: Z
tag_t lineTag = NULL_TAG;
, w3 L- {3 }5 v$ G( O
& j; x) m5 c/ d0 ^5 m# [* y //创建直线8 ]& z O: W! o5 a, v3 l" o# c
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));5 I& E# ~% d8 O) A# H* |5 ^
# c. `# q: o, O
//打印直线的端点
4 m t0 Y( q. V/ O# z! H% W char msg[256];5 q7 f1 l& r& [
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",' s1 ~( R ^( d( N+ T: r
line_coords->start_point[0],
s; U0 m6 D9 q9 ^0 v- r line_coords->start_point[1],
6 q6 T n. f& U' X$ J: {% o line_coords->start_point[2],+ F% o$ i# ^2 X
line_coords->end_point[0],
/ _9 {; Z2 w4 y3 s3 s line_coords->end_point[1],& f3 B& h9 p: `2 J
line_coords->end_point[2]);
5 V8 X7 h! k/ j UF_CALL(UF_UI_open_listing_window());
' |" g+ ~+ F( @! K UF_CALL(UF_UI_write_listing_window(msg));
4 z4 e8 w9 M9 t& b3 u9 }$ | //UF_CALL(UF_UI_close_listing_window());
# D0 ] F C+ P, m3 c9 R& C5 t' g* m% W6 S+ y
//释放动态内存0 a' ~4 s: g- f: _5 u9 x
UF_MODL_delete_list(&edge_list);7 D2 y6 W; ^* N
UF_free(point_coords);
1 C# s+ x2 o' }% Z G UF_free(line_coords);9 |6 B3 E) D1 \: n$ [5 L
' {3 s; Q* p8 _$ q+ ?2 W! k
UF_PART_save();
( [0 w* E% T, s7 B UF_PART_close_all(); |
评分
-
查看全部评分
|