|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
/*********************************************************/
& Z$ o7 o9 O! ~1 ]) E8 R#include <stdio.h>$ @# N1 {, t" p& x
#include <stdlib.h>
8 q. G! f( [- A2 m! I% }#include <uf.h>+ z) m2 D+ v/ h
#include <uf_attr.h>7 j4 D- W1 u, V
#include <uf_cfi.h>
! g- o. j: T+ }: K' O3 {9 v3 o) I#include <uf_curve.h>
$ M0 G2 o1 f& V#include <uf_ui.h>8 u3 B' b, d0 u
#include <uf_modl.h>' U7 @1 O+ G; o1 u; d
#include <uf_disp.h>
) L+ H( `1 _5 K) ?+ B3 e#include <uf_obj.h>4 f+ h" ^1 u; i) B
#include <uf_csys.h>
" P+ Y! u; Y& v# a9 c% |* U2 h- a- m) v" O
' Y. W: L; A, |! y, z5 L! t/************* unload alloc mem *************************/
2 b7 p3 C3 Z: | C4 V" j/* UF_UNLOAD_SEL_DIALOG _UG_TERMINATE _IMMEDIATELY */: U9 ^1 _5 W3 ^$ ?4 s0 Y" M
2 M# J8 u9 ^, S' T( B; X. J
static int init_proc(UF_UI_selection_p_t select,void* user_data)# d7 r- G. b) H: N1 S3 y6 E
{
; B1 ^6 O9 }8 o' V/ j8 y" H int num_triples = 1; //只选择一种类型
b1 U5 T: \( U! n( x UF_UI_mask_t mask_triples[] = {UF_solid_type,0,0,};
G, v: L/ j% L! f7 ?8 ~9 n h if((UF_UI_set_sel_mask(select,
9 J. q' w9 U/ [, @. ~9 j, c UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,, t! S& J/ e% ?1 U( B2 P
num_triples, mask_triples)) == 0)2 w: p$ X/ D+ ]: K. J* f8 {0 B
{
6 y# Z- s% @7 J- o6 _1 s: B d& e return (UF_UI_SEL_SUCCESS);
- p5 r4 Z' N8 w3 V+ E9 M }6 G8 J! n% W( d3 M
else. P Q) g% i9 s
{
4 y" U, R9 C' ]. ~8 V) d, ~/ T return (UF_UI_SEL_FAILURE);
3 w/ D: R# M( _ w8 { }" Q* E) D. [2 e
}% {: I9 x, v. w! S
( C6 A& c+ m$ N2 k1 V2 D3 p; K
9 ^. M7 i" R* j C) Z2 Dextern void ufusr( char *param, int *reTCod, int param_len )
4 b* R5 N u; h{
/ d1 k! v' I/ L; N/ ^7 y( V- V UF_initialize(); x1 F- K3 S( e( b6 Q
: M% T' D; v) h( b" o
( O6 @- |& y7 E( Z# [ char cue[] = "简简单单:请选择单个体";
" n7 h0 b5 {* Y5 K$ ` char title[] = "简简单单:请选择单个体";
( [- l+ S7 O( s6 U int response=0;7 k6 v* k0 x0 B6 c( Y9 T
tag_t object;
( M; V# T8 P! x( V0 p* K int count=0;
8 {, ~, l$ H& e0 E double cursor[3];. g/ i8 s x1 r1 k; o
tag_t view;
; {1 _* L( c3 |5 N/ A int i=0;2 n- v- R5 D9 X* \
double pt[3]={0,0,0};
* ?5 D4 d m; t double z1[3]={0,0,1};
2 U4 A1 \& a% \ UF_OBJ_translucency_t cyt=0;6 h4 c0 P( a- |: z* Q* l4 Q
L10:. P( `' C# I6 b, i. l4 T6 C
UF_UI_select_with_single_dialog(cue,title,0,init_proc, NULL,&response,&object,cursor,&view);) @: o2 [1 V- Q: w& j- {) N5 v
if(response==UF_UI_BACK) goto L10; //如果点后退就跳转到L107 E5 G H$ j2 I% n0 Z5 m5 W" d
if(response==UF_UI_CANCEL) return; //如果点取消就退出6 o# R8 a, q( z% z9 N" Z
# d3 w5 M( m: {5 w( x
UF_DISP_set_highlight(object,0); //取消高亮显示! x s+ R5 b4 \$ R) K
tag_t csys_tag; : t& ?: k6 f9 D! v
double min_corner [ 3 ] ; ( v1 ]2 M& F# X% x c7 U
double directions [ 3 ] [ 3 ] ;
( N9 b$ v( T+ K# Z! k7 c) {0 o S double distances [ 3 ] ;+ Z$ P5 u$ p1 n3 f: m! ^- W
UF_CSYS_ask_wcs(&csys_tag);
9 \1 n/ y( ?$ L5 s& F UF_MODL_ask_bounding_box_exact(object,csys_tag,min_corner,directions,distances);5 I/ n! V1 F. P! O- _' e5 E; i
+ E1 y7 ~6 N L: v char mesg_x[256];& V& Y& |& q* Q7 k: {
sprintf(mesg_x,"%f",distances[0]);
8 N: b# S: ^) ?0 e 1 h1 {( o0 @! W2 z
char mesg_y[256];
. R' q, x/ k3 G3 u% [) m' c. l sprintf(mesg_y,"%f",distances[1]);8 ]. Y) M5 U/ {) B& Q
. l7 h7 u' ^- h; W/ H$ M# e
char mesg_z[256];1 Y' D3 R! M3 x, q( N O9 Y. H3 P
sprintf(mesg_z,"%f",distances[2]);
+ G1 ^/ M0 ^* w0 H2 I2 z
7 j7 G2 X" P4 @ r, C( [+ P char *edge[3] = {mesg_x,mesg_y,mesg_z};
0 [9 e9 |% | R$ D5 I" n* `1 a tag_t blk_tag;1 w+ w3 h Q$ l2 d
UF_MODL_create_block1(UF_NULLSIGN,min_corner,edge,&blk_tag);/ U0 `8 A7 u' J! L7 j
. Q9 Z2 t' @% m7 i, b8 G5 \ UF_MODL_ask_feat_body(blk_tag,&blk_tag);
$ ~3 v9 X/ S6 p$ ]1 s( u+ s) i6 s UF_OBJ_set_translucency(blk_tag,100); //设置透明
) P% W$ N0 j0 [, E" A UF_OBJ_set_line_width(blk_tag,UF_OBJ_WIDTH_5 ); //设置线宽 N' h A# Z, e- L
UF_OBJ_set_font(blk_tag,UF_OBJ_FONT_CENTERLINE); //设置线型; i: c- G9 t3 r5 Q
, Y% ]0 {7 s* u* g8 u% {/* uf_list_p_t ll;
: `* Y/ X, m; u3 y5 r. q4 M3 f UF_MODL_create_list(&ll);: n$ N' T9 b" g5 v7 @6 _9 n
UF_MODL_ask_body_edges(blk_tag,&ll);1 P/ d& c; y: A+ ?$ ~
int ww;9 j# k1 z% G2 X% |/ k8 A- } m' T
UF_MODL_ask_list_count(ll,&ww);
# Y+ _' W5 u3 t, P8 } for (int i=0;i<ww;i++)
/ [4 d3 Q- m' K; g6 c! ~ {3 U6 L3 i+ Q) O" h" q$ y
tag_t yy,curve1;
& Y$ O, R+ B) k7 F+ y( B+ b UF_MODL_ask_list_item(ll,i,&yy);
5 u* Y+ r5 M$ W" D2 |3 i UF_MODL_create_curve_from_edge(yy,&curve1); //抽取曲线# ^1 J4 ?: A1 R
}*// U; O3 t8 h3 [; P* y+ a
char box[256];
) a5 @ q V# [1 X6 c! _; ? sprintf(box,"简简单单:对象尺寸(X-Y-Z):*%.2f X %.2f X %.2f",distances[0],distances[1],distances[2]);+ |4 l) _( g* H) M6 p3 S
uc1601(box,1);
1 |$ l# F- a3 F6 G- _! L k* S# x1 M' x6 u5 B, Z
goto L10; //透明之后继续回到选择的状态( ]% m# o" n& o7 h. Z5 c9 `# f/ @
0 ^( |, W- |% K# m1 k
3 `* ~- ~ s+ K( H t: m& K9 {
+ F3 c% x( ?# O
: f! o& @7 L7 t. L% I
/ p' h1 f5 R$ | UF_terminate();
- O6 n: U0 O5 K$ O5 A1 H return;% v* Y7 {4 Y* H4 g/ x. R# }
}
Q; c0 T [: i; m" [) |
( N3 q3 k) u5 S# f+ n
0 T8 F1 I6 p; l) \ Yextern int ufusr_ask_unload()
4 ^2 n+ ^2 {- Y8 {9 `, R6 r' V{
8 ~* }$ q+ i; o return UF_UNLOAD_IMMEDIATELY;" ?3 ?- V% a/ J( Q: O7 y
}+ {& q0 }- ^" h( T I% k4 q; g; ~) l
. G! J7 J) C6 G. i& g! P' v
|
-
-
评分
-
查看全部评分
|