|
|
发表于 2014-11-26 07:50:53
|
显示全部楼层
tag_t newPartTag = NULL_TAG;0 b) S. |% Z1 O! H) g' V
tag_t cylTag = NULL_TAG;
- R) V5 n$ Q: E% [3 g tag_t bodyTag = NULL_TAG;, z7 u- f" R1 N0 x
double cylOrigin[3] = {20, 30, 40};. U% ^& A' s8 `
char cylDiam[256] = "50";
9 H* Q$ N1 J E" y/ \* x [$ Z double cylDirection[3] = {0, 0 ,1};
* D' f& o j( Q. p* n double height = 60;2 s4 \! m/ A8 u+ M$ f) N; @
% r2 }7 a: X9 N. q+ G; B) G
, P+ S8 V/ o L& s char cylHeight[256];4 P$ I0 O2 f+ o% O9 I5 d0 j7 O
sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
8 T6 b6 U0 O+ H9 x0 K //创建part
3 A u% G8 M4 {( J# U UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));' `, D9 E! J& s( |
//创建圆柱
5 E/ f7 c1 O! [& S: R. X4 Z" J UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
1 H7 \/ i6 g: i v* [3 C X: v* w2 b //获取圆柱特征所在的体
4 l# _/ j" B6 S- | j) U UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));
. n! [) t5 T5 J1 H" } //获取体上的边
! M3 y1 j: D$ U! t uf_list_p_t edge_list ;
- D5 ?, f+ v3 H6 Y UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));* \) F' v' @( z' |
//得到边的数量
( c6 d6 v% H5 h. u) e int edgeCount = 0;4 W: m: m7 P! \( `
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
/ {4 W( ]( ^; [. {9 k( l( K //打印边的数量1 W& [! y! u- m
char cCount[256];
1 m) x/ n; w' u a3 p sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);
; ]# X: v! n8 E uc1601(cCount, 1);
5 {, j2 @/ c3 ]8 @ , r G; a7 i# z; U4 i0 g
int error;8 ]: l* |4 u& A2 _ p- D
double (*point_coords)[3];
+ K6 |6 o( f! } point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
& _! R0 y4 b. C3 L5 n //获取圆柱的上两条边的圆心
. A' |* L6 l. q9 u* m int i = 0;, U* [7 ^1 s; q7 u) n6 a L t
tag_t curveOriginTag = NULL_TAG;
# q, }; n7 P3 R# {) l for (i; i < edgeCount; i++)
+ W2 f% z! C8 J/ I' C; c4 P {
+ b; ~% M) h) N% i" J7 G5 k UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
0 b# \% `4 ^+ V. d+ N, q1 ~ UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));& F4 }* q" ]# v
}# z/ D9 } y. X3 D( W. I
//将圆心存放到直线起始点的链表中
- a5 z* f; B2 D2 B UF_CURVE_line_p_t line_coords;
2 @8 K j6 P2 p; Q7 u% o7 P9 T line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );8 j( W& w' B/ A$ B% ]1 X
line_coords->start_point[0] = point_coords[0][0];
4 a$ j& K$ @( Y( k) r( A line_coords->start_point[1] = point_coords[0][1];0 C( X1 ?0 \7 v; c
line_coords->start_point[2] = point_coords[0][2];- z$ s6 N4 k% N8 a
line_coords->end_point[0] = point_coords[1][0];1 |- x5 k) `' \3 H: M9 |4 p9 Y4 D( F
line_coords->end_point[1] = point_coords[1][1];
1 d5 ~' T& O1 J7 a line_coords->end_point[2] = point_coords[1][2];
0 ?/ z3 E6 v2 }) Y$ F& W6 ]
8 e* M% r) @" ~ tag_t lineTag = NULL_TAG;! ~/ b- L* g9 j8 g; v6 M
* p7 Y0 ]7 ^1 t( Y //创建直线
0 r6 {/ L4 A3 T1 _, e UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));" g$ X' G" F2 p8 N4 w' E
3 w6 N/ E) g* |) M1 F4 u+ S
//打印直线的端点: p3 n) F8 G1 j6 k `
char msg[256];
' k" `" L3 q, p( a sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
0 b7 a/ X6 }5 W, H line_coords->start_point[0],
" o o9 H9 b6 Y line_coords->start_point[1],
2 B2 z, x' ^! c: \8 l3 X) E4 g1 w: x line_coords->start_point[2],
# _, N( }% E- ?! M! z line_coords->end_point[0],
+ f9 w& J2 y* [% S; W# O5 k line_coords->end_point[1],
5 ?! a( s2 |4 \9 p line_coords->end_point[2]);$ a7 y0 U: c: r' ?9 V
UF_CALL(UF_UI_open_listing_window());
3 }) V# s: r1 k3 }2 u. [/ K( Y. f1 @* t UF_CALL(UF_UI_write_listing_window(msg));
- q3 d" b. x3 F8 a% x* e //UF_CALL(UF_UI_close_listing_window());
! C" U/ d0 E0 P4 Z
0 B e2 n, t) M9 G+ c% G9 f //释放动态内存/ Q7 S3 p5 i$ K+ H7 B* k
UF_MODL_delete_list(&edge_list);1 r) r8 s. t, u) u* ^% h
UF_free(point_coords);
7 X5 _, C- k4 a1 J% e$ j; Q UF_free(line_coords);2 O# f7 R. a# H8 D% K
9 h+ I0 Z" |: l' d6 P; A4 V UF_PART_save();) h0 `1 d0 @2 @' P/ H
UF_PART_close_all(); |
评分
-
查看全部评分
|