|
leaf
发表于 2014-11-26 07:50:53
tag_t newPartTag = NULL_TAG;. p) Y' T, d* `5 E- w" n
tag_t cylTag = NULL_TAG;
. p8 D+ w- S: s% f8 Q) t& N% r9 O tag_t bodyTag = NULL_TAG;
9 I4 ]$ y; a* W9 Y# ` double cylOrigin[3] = {20, 30, 40};( B/ b' P# g$ m: ?6 ]
char cylDiam[256] = "50";8 A5 a+ L0 s |0 h$ ^: K
double cylDirection[3] = {0, 0 ,1};6 N* a. P1 ~$ {5 V
double height = 60;7 `0 M0 e! a! T# z/ A& v) A
8 V8 S% s' Z) o' `2 C6 y
3 E$ h% G/ S! K8 a) ?+ l, t3 ^
char cylHeight[256];
- I0 {7 H, o9 s8 s$ x$ a3 q3 u sprintf_s(cylHeight, sizeof(cylHeight), "%f", height);5 E1 N' h( m+ u+ u8 n/ j) Y
//创建part5 i% x4 }2 @3 D t9 j! k
UF_CALL(UF_PART_new("D:\\leaf.part", 1, &newPartTag));
1 b6 Y7 e: _# z6 j8 l1 x! ` //创建圆柱
. M9 J6 _) v. l u6 ?4 h UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN, cylOrigin, cylHeight, cylDiam, cylDirection, &cylTag));
2 f5 ~. Z# h! H& X //获取圆柱特征所在的体6 k( }2 Q! f u s4 \$ E& F
UF_CALL(UF_MODL_ask_feat_body(cylTag,&bodyTag));1 [% |% d* L! V. ]6 p% \9 V
//获取体上的边+ Z+ U( ]6 p9 Q& S, [
uf_list_p_t edge_list ;: N- |) V% P" S* o
UF_CALL(UF_MODL_ask_body_edges(bodyTag, &edge_list));
* h& X: F# Z/ ?' R& d) | //得到边的数量
6 }3 J; u7 b, X! q, b( R4 w. p int edgeCount = 0;' a+ h5 v7 N: H7 a8 p8 j. Z4 O
UF_CALL(UF_MODL_ask_list_count(edge_list, &edgeCount));
* m' Y) g% a+ K; i //打印边的数量1 Y% A1 z0 A9 m( [/ d
char cCount[256];" L4 i O# s2 w: K2 c. e" m
sprintf_s(cCount, sizeof(cCount), "cylinder实体上的边的数量:%d", edgeCount);( |! X& [# u5 m* _; Z5 b& M
uc1601(cCount, 1);
! a ~! M- J3 m3 |0 c! \% t
1 e/ d( } ~0 X' ]* | int error;
/ j8 _1 @! U8 P7 J double (*point_coords)[3];
p- l W V- X8 N4 M9 p point_coords= (double (*)[3]) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
, k" f+ p0 @& V _5 E( A //获取圆柱的上两条边的圆心
( L* T( \; J2 u int i = 0;5 `6 f: w: |& C
tag_t curveOriginTag = NULL_TAG;: E; ~0 {% L1 L, d' O$ C4 n: F4 `
for (i; i < edgeCount; i++)% {* w4 n! j; B* N7 Y
{
9 P7 s( [* e5 s) v- o T UF_CALL(UF_MODL_ask_list_item(edge_list, i, &curveOriginTag));" j. a6 A+ ?" E8 u7 d# O! V0 K$ j
UF_CALL(UF_CURVE_ask_centroid(curveOriginTag, point_coords[i]));
7 U+ q) C2 b6 g6 D/ t }
$ q C& I# B7 Q( I/ w //将圆心存放到直线起始点的链表中$ r7 O' ?; g& T, I" C
UF_CURVE_line_p_t line_coords;
; B( t B4 w3 a8 [# R- H$ [% k$ ^6 D line_coords= (UF_CURVE_line_p_t ) UF_allocate_memory(edgeCount * sizeof(double [3]), &error );
+ n- e6 _9 P( F: V+ s line_coords->start_point[0] = point_coords[0][0];
: M& u( `6 T1 O# Q line_coords->start_point[1] = point_coords[0][1];
# _5 G8 {8 |( Z% x line_coords->start_point[2] = point_coords[0][2];
9 \! K% q, n6 l& z5 |& K, x line_coords->end_point[0] = point_coords[1][0];
1 U4 R3 g8 l( h5 A2 ~ line_coords->end_point[1] = point_coords[1][1];8 W# a! i. p" X; a" k
line_coords->end_point[2] = point_coords[1][2];, E. p, w) |3 _/ W) U3 E5 k! u, z8 H
& X" z k3 B/ v% W( T" u3 S tag_t lineTag = NULL_TAG;: v8 S' ]/ J* Z" x0 o
/ X% f1 v- I9 \3 D, ?* m //创建直线8 [, T9 z' R2 ^" R8 X7 O4 v
UF_CALL(UF_CURVE_create_line(line_coords, &lineTag));4 E! {) ~# T: c8 R" W# g
, |, v5 Y/ M. k. l0 W //打印直线的端点
' h5 C W4 s- _- n6 _( o char msg[256];$ F/ O2 _: h* D4 Y4 O
sprintf_s(msg, sizeof(msg), "创建的直线的起点是:%f、%f、%f,\n终点是:%f、%f、%f.", z6 x% m7 ~* Z) z1 a+ S2 n
line_coords->start_point[0],
6 h' V. R/ {- V. k' h line_coords->start_point[1],( G# |/ t( \9 q C0 G) S) q
line_coords->start_point[2],
9 q3 t0 y4 O' k0 _0 E: u line_coords->end_point[0],
& [/ Q: `5 q& Z4 y1 _3 W line_coords->end_point[1],
, E! g4 ?; F! L) m! l/ I line_coords->end_point[2]);
( O4 X! Y& C4 }# {8 y% r9 C UF_CALL(UF_UI_open_listing_window());
' h' n- G9 @. \1 n: E P7 p' e3 U UF_CALL(UF_UI_write_listing_window(msg));
3 n+ c+ v! n8 j //UF_CALL(UF_UI_close_listing_window());$ e1 W6 i: g2 E# v! a
8 A4 G7 b, n$ d7 Y; j1 h
//释放动态内存$ H7 B( H9 F+ d( R. J4 p: D
UF_MODL_delete_list(&edge_list);% |- l5 _0 G5 y; ^
UF_free(point_coords);( Z- L0 M& @8 u; E4 N
UF_free(line_coords);# q1 c1 C0 J. S7 ^: D' n) G
: H2 Y+ O# q/ O2 b$ u3 G) v UF_PART_save();: Y- D/ I1 O& I
UF_PART_close_all(); |
评分
-
查看全部评分
|