|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;
7 Z" u7 o5 w: j$ j* A tag_t cylTag = NULL_TAG;- U) g) _0 Q$ ?. v& {% K7 r
tag_t bodyTag = NULL_TAG;
8 S7 z3 @$ `- B8 P5 e6 d3 E0 [ double cylOrigin[3] = {20, 30, 40};0 d! [- C/ B& V& S {% d5 p
char cylDiam[256] = "50";
) G/ H9 L$ ~/ }3 f& j/ Y double cylDirection[3] = {0, 0 ,1};) S- p5 E- c) y1 V. s; I" W4 p0 N- Z
double height = 60;
6 j+ o9 P3 Y) f6 l
: H! A9 h1 t2 K4 {" ^; w0 q# F. k
5 l' g7 T8 `2 k char cylHeight[256];6 y1 p" v8 [$ K$ M* U/ g, H7 H
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
4 T& u2 F+ N3 v) s* _ //创建part
7 l& h e. \: a, Z7 B! s0 A UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
; v# }+ Z9 O) a //创建圆柱
4 s* R, z0 n! s UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));. n- w8 l1 d4 `- j5 x: z
//获取圆柱特征所在的体
# F, G3 s1 K! a6 W7 y5 Y1 { UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));9 n) g5 Q/ T+ S
//获取体上的边( ~9 c/ Z% X; F" E
uf_list_p_t edge_list ;4 y7 [) F; q0 g/ t3 i
UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));5 ]) }, t, |% \% p5 O* j: f& B
//得到边的数量
' m' h* }" N4 k# x# |& J5 T int edgeCount = 0;3 Q+ C y2 t% g& z* i- H1 B
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
\4 D3 Y M \9 b. Q3 k //打印边的数量
& U. b B9 W3 W% e char cCount[256];
/ j+ C# z! F1 d. z! i3 r& F2 ^ sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);8 b' K; l6 Y3 ~( R+ O) X
uc1601(cCount, 1);
) T% E$ x& N) g/ A , T( Z0 O2 F% `! }5 ~9 P
int error;5 I1 y$ x' k! T7 t
double (*point_coords)[3];3 C$ m. U0 O) T* R
point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
+ N& r( x$ ]* `% v //获取圆柱的上两条边的圆心
) f( Z2 j* m2 _( j8 p int i = 0;
# n- @! ?0 i5 W/ Y/ v tag_t curveOriginTag = NULL_TAG;
( z$ v H/ O$ f, c& S for (i; i < edgeCount; i++)
& h8 O" x- W. H) q. W; f1 ` {
/ n8 Y' b9 M" N# W0 H. q, F0 P0 R UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));' H/ B7 F+ j9 i( \/ k0 t: Q
UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));7 y Z: W1 P1 w3 |7 t' z- e' F
}
- e3 S! p" P4 V* o //将圆心存放到直线起始点的链表中
+ C+ ~7 |% H: m UF_CURVE_line_p_t line_coords;
' N0 _% [) `! A5 p line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );3 ]8 q+ e" ?9 {& G; `& W, U4 \$ `
line_coords->start_point[0] = point_coords[0][0];
( i/ S, e. C( w' R Q/ H line_coords->start_point[1] = point_coords[0][1];
3 w8 c6 s& P- x5 ~$ s line_coords->start_point[2] = point_coords[0][2];& m% Q9 n) d8 u; w: |7 q
line_coords->end_point[0] = point_coords[1][0];5 M1 v. i5 m' p; \/ |. l3 s
line_coords->end_point[1] = point_coords[1][1];
2 ^( w0 S4 F; m; e( v$ R line_coords->end_point[2] = point_coords[1][2];) d; j. s/ y: ?/ T. X4 h" X
7 Y* h: X2 I8 H% V+ J, g1 p
tag_t lineTag = NULL_TAG;4 x/ p \ X; \% n7 _3 |9 V: j9 B5 ?
/ } j6 {3 K1 v% M% b
//创建直线
9 M& t8 I, e) E5 S( x& ] UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));4 m. Y7 X& m, n! d, z0 j
+ U# s! S8 A2 B2 R3 m8 A& Q! A( h
//打印直线的端点
4 x6 d& L3 i' Y' D6 Q( e; h char msg[256];" \, a- A r+ [
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
" R9 p; z% Q2 h line_coords->start_point[0],
9 Y# ]; K8 p0 z2 C line_coords->start_point[1],1 x* G( H6 X( m+ b8 t- f
line_coords->start_point[2],
1 r7 ?8 |) x0 Z$ V. m1 Y) K line_coords->end_point[0],6 t. \# `3 G4 Y0 p- R5 z8 R6 o$ ~ T
line_coords->end_point[1],
% X6 ?. }7 h) k line_coords->end_point[2]);
" h: t9 _+ y8 B3 A UF_CALL(UF_UI_open_listing_window());
3 w7 J* L3 |; u" s9 @3 j+ E: C UF_CALL(UF_UI_write_listing_window(msg));
* |9 l/ L% s* x; G0 x: Q* W& w; Y //UF_CALL(UF_UI_close_listing_window());' Q* }2 L( ?; s' w; e& l
! z4 x( s, h5 l7 q7 @0 V' |# z) e //释放动态内存7 \" M0 O! C7 {) T4 o: ~8 w
UF_MODL_delete_list(&edge_list);+ {" F( e; y, w. z( T2 a
UF_free(point_coords); n2 o9 q) F1 ]- }" k; F
UF_free(line_coords);
- T1 U8 Z6 f% W- j; I) m A* n& _: h- R2 e6 M. p
UF_PART_save();' v6 y( X8 G+ X7 b
UF_PART_close_all(); |
评分
-
查看全部评分
|