|
|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;1 ~1 l5 p5 X' T. T0 z
tag_t cylTag = NULL_TAG;5 f1 B' Z: {) A- @, r
tag_t bodyTag = NULL_TAG;1 ]0 n1 {$ d3 m2 Z# @; I* ?$ \
double cylOrigin[3] = {20, 30, 40};" H; M' D5 | y6 g# g
char cylDiam[256] = "50";
- D! n: R# N$ ]7 [2 n8 \ double cylDirection[3] = {0, 0 ,1};# e8 s; K) \% @) h2 |
double height = 60;
' A# S* \6 ]/ R' \ 6 V, }; K* G$ Z' ]" m( @/ h
0 Y7 ? y- K& s4 T6 R' {0 X
char cylHeight[256];
: m7 s6 ` L. f5 S sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);% Y M3 n) Z7 S0 ^1 x* ~8 q
//创建part k/ x1 [! r* f/ l: N. T! s
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));# M1 q" ]8 X2 _- |
//创建圆柱% N$ t. I# ], J7 ~$ J+ y
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
+ X: a$ n' ?5 u2 P& i3 [* m4 h$ s //获取圆柱特征所在的体8 T5 M) S {# l. e
UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));1 W5 |" {) U2 O; c! u
//获取体上的边
; f6 t4 }4 b Y+ P3 S$ p uf_list_p_t edge_list ;
, K; e. Y5 J7 i B1 F UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
% l$ i" k5 L3 p //得到边的数量
: ~+ ]* Z6 s+ P) H1 R int edgeCount = 0;
' _3 o" v& E# k$ d% z% a UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
# ]$ ~: A) C. F //打印边的数量
0 t" j9 k% m3 h char cCount[256];7 P0 J3 z) Z# u
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);: N- w0 P; q5 L" p: T
uc1601(cCount, 1);( }3 L4 S4 I: D( x, P \0 }4 ^
1 B- h+ ~0 T0 O, }: }& F
int error;
$ U9 ^' |" M+ T' b: s double (*point_coords)[3];
4 ^6 Z$ m ]: y- C4 c0 ^ point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );( f4 U- U, L& p& S5 C4 B1 X
//获取圆柱的上两条边的圆心: B3 D4 u+ S) K Q
int i = 0;
# v7 u/ S0 r8 b: z' D tag_t curveOriginTag = NULL_TAG;* X+ }( N, d; `
for (i; i < edgeCount; i++)
9 R6 M2 Z% S& b. j {
) X# n7 q0 q4 X1 \3 D9 Q+ R UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));
. c, e3 l+ l& S( S! G UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));1 q9 T8 K7 L: y2 t6 p
}6 [4 K" g' S6 _- g& e
//将圆心存放到直线起始点的链表中# s/ S) H0 V4 p
UF_CURVE_line_p_t line_coords;+ u: {6 `1 S% d$ D i% Z
line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
# n1 D, ?1 e2 X% Y/ W) u5 I5 f line_coords->start_point[0] = point_coords[0][0];, Q- Y( O( q8 X/ w# A& `+ h `
line_coords->start_point[1] = point_coords[0][1];
4 ~5 ]/ {" a, X. U# z line_coords->start_point[2] = point_coords[0][2];
6 B. H# ~+ d. o3 W line_coords->end_point[0] = point_coords[1][0];3 N$ [" s- `8 W0 m l9 {! p/ u
line_coords->end_point[1] = point_coords[1][1];! w6 k6 u7 Q) A" _
line_coords->end_point[2] = point_coords[1][2];: U1 m- n I/ L3 x9 n4 y8 E# D
/ v9 y2 p4 g( ?$ Y6 S0 q' g& W
tag_t lineTag = NULL_TAG;$ a. a+ d- ^& A, Z0 i
- n, V9 W1 k' Z* D# I: B
//创建直线/ s v h! T0 h) g4 {6 R7 \
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
" h: {7 O _5 S! Y1 h* Z, f. E- t6 T. Q
//打印直线的端点( s( {# d' h4 f
char msg[256];
& h- f2 r+ \( L5 Y! f1 P' z sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",2 L9 h% `+ N* H0 I3 @4 I @
line_coords->start_point[0],& O! x! d0 m) E- ^
line_coords->start_point[1],) m6 f( n$ x& G. w
line_coords->start_point[2],/ a* X( t) i6 V# ?* z) g& t( i
line_coords->end_point[0],9 f. `; t! G# }9 C4 V
line_coords->end_point[1],
, j( p: U! ?2 ^5 { line_coords->end_point[2]);; |/ m0 x1 v/ [
UF_CALL(UF_UI_open_listing_window());
' ]1 x# B3 m' n% Z$ t7 L UF_CALL(UF_UI_write_listing_window(msg));
+ }2 C# q+ T+ j5 L3 p/ F {6 K //UF_CALL(UF_UI_close_listing_window());
3 T) j$ |& n+ q2 _2 T5 X+ w. D4 L6 v# v9 I) E4 R
//释放动态内存- q0 V. A. @) u _$ H* U
UF_MODL_delete_list(&edge_list);
1 K+ ?" S0 V8 o+ c" F UF_free(point_coords);
) O. }; K- x; q" W Z) T UF_free(line_coords);
6 D' H6 P- }# P% R5 \2 H3 D2 V. {* U' B/ c0 l
UF_PART_save();. O# E) y9 I8 t* ^% m' F
UF_PART_close_all(); |
评分
-
查看全部评分
|