|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;, E7 z6 @% _7 Y1 \7 ?
tag_t cylTag = NULL_TAG; G7 e+ Y+ n4 A2 z2 @) @) G* Q
tag_t bodyTag = NULL_TAG;+ a+ b% Y% r1 W& t! `
double cylOrigin[3] = {20, 30, 40};
3 M2 J% E6 O8 ]! N2 ~+ U char cylDiam[256] = "50";9 F3 S z4 c$ v \* o1 j
double cylDirection[3] = {0, 0 ,1};5 `* {3 Z' g; S# g) J9 N$ _
double height = 60;, y$ S) k/ |8 _+ S$ S
4 R3 M8 ?7 `) F; Y4 y3 V' _/ C& d5 U7 [) N% E0 d3 n" Q
char cylHeight[256];
( }7 M7 [9 F7 N: q sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);
+ [6 e. J) T( E% i1 b" A //创建part) X( @1 ~( E2 Y d a" }1 B8 j h: F
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));+ D6 I3 F/ V2 n& L. z0 k1 {
//创建圆柱9 _. G* _& Z7 {+ N% m* U
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));4 I* _' X0 }' U% m" `
//获取圆柱特征所在的体
) Y3 M$ [3 p+ _& K0 T UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));1 t% ~4 [) V; H: k) ^
//获取体上的边
" y) p( O5 j( d; r7 U uf_list_p_t edge_list ;; h' a$ o7 k% s* s# X
UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
a* Y; i3 U' w% b8 K //得到边的数量; n9 V) L+ \8 c- K0 T, G7 G
int edgeCount = 0;
, ^% T; z& S+ X9 `" `3 ? UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));& R# t# o1 y3 }. q! F
//打印边的数量( }3 n$ w2 P* O+ U- S
char cCount[256];
# T% d% J+ U" A- H7 Y, p sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);! k* ]/ C$ N' ]' _3 b
uc1601(cCount, 1);
4 _- F7 X4 h, |. {9 B
& p2 E5 Y8 q: K! l7 S- I int error;. n3 T3 z i$ U& D. u
double (*point_coords)[3];
& `# m) w9 z0 D; z7 s point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );9 @& U* M6 P; w* m6 C& C, Q' x
//获取圆柱的上两条边的圆心
+ T' \# I+ z, s int i = 0;
8 I5 k+ }+ q. e. n- H- s9 N& ~ tag_t curveOriginTag = NULL_TAG;' f7 N8 w, R- {9 `6 |* S
for (i; i < edgeCount; i++)* j {6 P4 m# ^# t5 t! f
{5 c# j: v1 e/ O. x4 w7 }
UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));$ }8 O( M: e( \/ v5 }% U
UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));& w3 ?( y/ T8 x9 a1 Y0 f- b* X
}+ j8 i0 O- D3 R$ i. i7 S
//将圆心存放到直线起始点的链表中0 h( ?: E0 t, c, h
UF_CURVE_line_p_t line_coords;
" \7 v. v7 p" ^& d line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
4 I8 B5 p7 u% K. w4 I* l9 P line_coords->start_point[0] = point_coords[0][0];& {' N! o3 L# m; M9 q2 z* a
line_coords->start_point[1] = point_coords[0][1];/ c" \ R) l( k! v0 g% @
line_coords->start_point[2] = point_coords[0][2];
# C5 L. |. Y* T9 h4 L$ ` line_coords->end_point[0] = point_coords[1][0];
1 y% }+ X ? h line_coords->end_point[1] = point_coords[1][1];2 X/ n. t" i; s* p8 B
line_coords->end_point[2] = point_coords[1][2];1 p2 ~( P* Z( r9 i% L
2 o5 O+ ? K$ e/ @ tag_t lineTag = NULL_TAG;
" v% Y d- P8 ?! r- d- Q : z4 L6 ?: Z' q1 @
//创建直线' C J7 k3 N' a7 x
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));
* S8 X# R: U- _% I- o$ M5 W/ f- z0 m! |4 X$ Z. U* P; P4 G3 o9 O
//打印直线的端点
/ u! o8 I& {0 h3 G4 { char msg[256];" I2 n5 A3 }9 [9 ]9 R0 A; X6 U
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.",
. [* D) c. w* d3 O' @ line_coords->start_point[0],
. @3 U D0 i+ \# Z) R' i line_coords->start_point[1],
; a4 @7 r' Y' R$ R line_coords->start_point[2],2 N1 V3 E' I3 F
line_coords->end_point[0],
1 z8 V/ c# |+ a line_coords->end_point[1],
6 ]0 Q$ w8 T# h! E: i: t V5 Z: W line_coords->end_point[2]);& f! f4 E, k' R& b1 U2 @# k
UF_CALL(UF_UI_open_listing_window());8 [+ n4 G% q7 u: a% T) u
UF_CALL(UF_UI_write_listing_window(msg));7 S2 X3 \) b8 ^5 D9 {! @7 [
//UF_CALL(UF_UI_close_listing_window());
! ^, P" C$ Y- ]% {& E. B9 U9 H. V# _/ j! Q; D' A
//释放动态内存9 @4 W) W3 {2 Q2 U4 @4 _4 ~
UF_MODL_delete_list(&edge_list);
9 m/ O. k5 {5 w- E/ ^/ W UF_free(point_coords);( j, O: n* o2 D
UF_free(line_coords);( D, H( F6 y; [3 R- D
1 m: U% J5 m8 e F. R
UF_PART_save();3 F; \6 z: x/ J! b7 k, ^! K1 r
UF_PART_close_all(); |
评分
-
查看全部评分
|