|
|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;
6 j X4 Z$ G; d7 D tag_t cylTag = NULL_TAG;
6 {$ u8 V5 y+ V0 Q0 Z) o+ P tag_t bodyTag = NULL_TAG;
3 J- o/ ?6 ^2 S3 g% u: ` double cylOrigin[3] = {20, 30, 40};
( X# X$ z" m. G z8 B5 s( j2 k char cylDiam[256] = "50";
U/ d0 \/ G$ ~ double cylDirection[3] = {0, 0 ,1};+ P: o8 {8 W# }; [$ }) W7 c e$ v' O3 B
double height = 60;
' b( f: Z- m ~/ ? E9 X - F ]4 d. Z/ n7 Z, m/ v/ t
7 _4 {6 v% U; ?( j
char cylHeight[256];
2 h- E: w4 v1 e sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
4 U+ E6 S% s& S. U0 G# Q A8 h- U //创建part
, O* L+ @4 g8 R: t UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));5 T+ ^0 W" \4 U
//创建圆柱+ A' Z* C }* u' m; \
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
- l1 Q2 e& N e7 b1 C //获取圆柱特征所在的体
% n& v7 P: I& [& U3 h, U UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));) c9 e3 I) K8 F+ ]2 W
//获取体上的边8 o4 Y' e' c. V. z1 o$ k
uf_list_p_t edge_list ;
4 M$ g. _) z- i" H UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));% j. k% X) a$ y* Y
//得到边的数量
, r$ O6 O+ X. v' @& C; q$ \* y int edgeCount = 0;3 {* U2 G# b5 {0 f7 t, h3 y
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
: ~- |( V' F/ \8 d2 D0 i //打印边的数量
3 M# ~9 r) m3 a char cCount[256];/ L/ X# J. A1 @# C; [8 ^- z' G
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);
P/ h* X G M uc1601(cCount, 1);2 e4 l7 l7 T& Y7 h X7 _/ \
$ @9 M- M; Q3 R0 l5 W
int error;
! c6 U# w' c9 a! c) s2 J double (*point_coords)[3];
9 P4 [) O3 `0 n | point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );+ A9 U) \! L& O
//获取圆柱的上两条边的圆心
9 O' _6 f3 g3 {2 _+ C8 ^ int i = 0;" } A! g( k: r2 |1 T& E, o# X
tag_t curveOriginTag = NULL_TAG;
1 q- L Q/ J4 I+ h for (i; i < edgeCount; i++)6 k4 N; R+ U% R1 h/ v- h
{: c" L- \% _5 S& I' E+ c9 P, q
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));! v) @! ~0 L( W2 U7 [
UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));$ M# a4 X0 W2 `9 Y! u$ C0 V# x* t* P6 P) F
}
/ U2 |# x! k& d& V' X //将圆心存放到直线起始点的链表中- R- @: Y. }5 B8 {6 l [
UF_CURVE_line_p_t line_coords;
7 w! P9 T+ c6 @+ n4 g( ] line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
, }( _# y0 n z* {' j q6 ]+ s line_coords->start_point[0] = point_coords[0][0];
1 v* h- ^: r/ K0 N- Y, J( H line_coords->start_point[1] = point_coords[0][1];
; {# E2 m% |; ~6 b# `3 C line_coords->start_point[2] = point_coords[0][2];5 ]* `; ?1 _( Y! j& n
line_coords->end_point[0] = point_coords[1][0];
" h- [7 r) c a5 [8 k line_coords->end_point[1] = point_coords[1][1];4 r, I8 j; x& x8 m! j" m" a
line_coords->end_point[2] = point_coords[1][2];! t3 R% k; M$ X9 K( [0 y
. U& ]1 k0 l& E9 c8 @/ [ tag_t lineTag = NULL_TAG;
& G6 H9 s5 e9 i! w4 Y6 }0 A7 f7 f ; g& y& k0 A. F* U
//创建直线
: g, m# M: y2 S1 ` c! T, V UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));% i9 r6 Q, y1 V5 v C6 z* j
; d; T6 q5 C3 {; U; X3 J
//打印直线的端点
' c9 Z+ { L! q- z2 U) g9 W9 x char msg[256];: E7 Y- x. Z) y1 a {3 G0 A
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
5 L; M# Z. w! }& g0 S T* m0 } line_coords->start_point[0],4 @! J& E+ m& Q m
line_coords->start_point[1],
; X8 S, z- i5 f$ b, S7 [ line_coords->start_point[2],
% V* g( y! u# ^2 L9 }6 r# G line_coords->end_point[0],/ R& q; H! M3 ^2 C! ~7 Y- z
line_coords->end_point[1],
: L( d" X( U9 e line_coords->end_point[2]);
% @6 i6 c5 n: w' I9 _; x! C2 u UF_CALL(UF_UI_open_listing_window());
' [8 X/ f% J5 E UF_CALL(UF_UI_write_listing_window(msg)); m5 H* b. Y! ?1 g; P0 n$ a
//UF_CALL(UF_UI_close_listing_window());
* R2 K# M# \* V) {- j6 ` [' g/ l
//释放动态内存# I8 ?6 z+ _1 w: c1 f0 d( H6 V
UF_MODL_delete_list(&edge_list);
0 X r3 s8 M' `* ]2 ^% H! g UF_free(point_coords);
3 K5 U1 e, V/ g0 }8 e# I" [ UF_free(line_coords);1 V; z% _0 G2 H. t- k& s3 C# ~
4 r, E; l8 ^: R- X- A
UF_PART_save();2 W" k' W. R# s8 Z1 H
UF_PART_close_all(); |
评分
-
查看全部评分
|