|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;! P( G2 i6 M/ \, t; T) i! N. W) t
tag_t cylTag = NULL_TAG;, J" C* P* Z! w2 Q; s' ~6 O d
tag_t bodyTag = NULL_TAG;, H+ d* I, j& P
double cylOrigin[3] = {20, 30, 40};" c, R6 P7 U6 q! M3 Y" j
char cylDiam[256] = "50";
2 R( A9 y r- C( K! q double cylDirection[3] = {0, 0 ,1};
4 ?7 Y$ }8 M. m. ? double height = 60;
1 |, [$ W* }, D _+ y4 I8 B
0 ]0 I* }+ l0 P- L" v
) y, D& n J& ?; h- g, ]- Y Q e char cylHeight[256];& q- S* x( e3 }0 n1 x
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
7 Y% D A6 j' z //创建part
# a1 x' ] P+ Z, c3 B! C UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
" N7 m# c( C B4 h4 m, W //创建圆柱
9 E2 f0 D& w. w% y UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
1 A& D* _' L) r //获取圆柱特征所在的体
3 i- c" G2 \5 M$ X UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
! r, `& h0 o+ z' B7 h. A //获取体上的边
& k5 f& n8 p7 e* l uf_list_p_t edge_list ;2 Y& h0 \& {2 ]& }" D( ~( Q4 z3 f
UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));9 ^' X8 h) c5 c( ]1 R$ ]
//得到边的数量
, l% O" l( u7 r3 p c6 U8 Z- ? \! u int edgeCount = 0;
% ?" X- j; ~. ^3 G/ r" G" i UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));# ^8 F# n! K* g: P T' Y' _
//打印边的数量" ? ?% P/ @6 w* m, M* L& V
char cCount[256];, J; p. p) L: V4 g6 B" A& q, F
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);
& v# | ^. c5 _$ _ uc1601(cCount, 1);
& \: L4 |) o, P3 a ; f% A( m0 ?; ]4 V0 e+ n' ?
int error;5 n- Z) n8 J0 H8 H2 j
double (*point_coords)[3];
; ?% U: J8 `; ?% T$ E point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
' g7 y, a; r. a7 N" s- k" J //获取圆柱的上两条边的圆心$ Q! S& T A) \6 c
int i = 0;) ?0 [" E2 r8 v7 E! w1 H& j
tag_t curveOriginTag = NULL_TAG;; B3 v5 r( |" U3 d( B
for (i; i < edgeCount; i++)' I, w% B/ N+ ^. E# k3 s C
{$ t8 ]0 S: _5 y4 D2 ]! ]
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));& g! O$ E1 g9 ^6 Y/ P% e, @) L+ c
UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
- b) C+ j" C; n& y1 s }+ J. S1 L7 E3 [+ \' y* s% H
//将圆心存放到直线起始点的链表中: O+ F' ]1 H: D2 l- M" W
UF_CURVE_line_p_t line_coords;
, J) U0 o2 c& t- `" k line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
0 m4 O' ~* ~% V- Q$ B4 M line_coords->start_point[0] = point_coords[0][0];9 V4 _% N' e5 C# A( {
line_coords->start_point[1] = point_coords[0][1]; F8 @0 |4 c( E3 i4 ^- f {
line_coords->start_point[2] = point_coords[0][2];* T# U5 T# G& U/ W9 f: i* u
line_coords->end_point[0] = point_coords[1][0]; Q# b! ~. m2 J7 Y
line_coords->end_point[1] = point_coords[1][1];
& r. j3 m5 m' t" r line_coords->end_point[2] = point_coords[1][2];- W& ^) u6 e2 b- W! \5 Q
5 K4 t3 X0 V( J tag_t lineTag = NULL_TAG;9 p+ c7 f5 p& q% T
3 w2 h; E# h8 u
//创建直线
) h/ j1 _9 s( [) [: o UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
( ~. F q0 ?6 Y3 v
+ D. S7 n$ ^$ x8 t, q) E //打印直线的端点+ U' }, X) A7 p& H, m: [) j
char msg[256];
- R; n) Y1 M+ |4 f H5 U6 r) z1 c" p sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
* x+ X: w; c9 M" d- j) m8 s line_coords->start_point[0],
5 ^6 f9 q1 G( b# z y' S' F line_coords->start_point[1],
4 ~' T$ R* ?$ j9 j line_coords->start_point[2],
7 S4 b0 S0 ^2 r% S, z& k line_coords->end_point[0],
5 {6 H( H' R: a2 Z line_coords->end_point[1],
- D. ~2 \3 ~9 F- ~4 ] b! u line_coords->end_point[2]);2 ?, [% M; P* Q0 O
UF_CALL(UF_UI_open_listing_window());
& A( }+ Q6 R; K: ?- ], ` UF_CALL(UF_UI_write_listing_window(msg));
' @( N1 V+ P1 h1 i //UF_CALL(UF_UI_close_listing_window());6 E* j2 y4 E5 v. u9 C- Y
; V8 a8 B) G0 S8 @! ~7 X //释放动态内存8 }9 o# u! d% O0 O4 U5 _% @) x
UF_MODL_delete_list(&edge_list);
8 d, N5 F9 o$ z" u UF_free(point_coords);
) n! ^$ g' ^7 t- a. f2 z' g UF_free(line_coords);6 L: C) r1 j l8 e
2 n2 }8 R* a( u1 n' S7 |
UF_PART_save();
: q7 @* o, f, K$ } UF_PART_close_all(); |
评分
-
查看全部评分
|